[Dbix-class] "Deletion" of records by setting status to 'deleted'
Ilya Chesnokov
chesnokov.ilya at gmail.com
Mon Mar 9 18:04:48 GMT 2015
Hi,
I have a "service" table in my database and want to mark services as
deleted by setting service.status = 'deleted' instead of actually
deleting them (for business reasons).
I do it in a working project where DBIC is used as a database
interaction layer, and it is preferable to make these changes as
transparent to the surrounding code as possible. Our codebase is
(mostly) covered with tests, so it's generally easy to understand
whether there is a regression or not.
First I tried to override search_rs() method in a custom resultset
with something like this:
https://gist.github.com/ichesnokov/1d4236f79c69fd14ebbe, but it didn't
work as expected on prefetches with condition in them.
Then I tried a method with resultset_attributes (see
https://metacpan.org/pod/DBIx::Class::ResultSource#resultset_attributes),
but it didn't work because it's impossible to get
"current_source_alias" from ResultSource.
Currently I'm using something based on the behavior of
resultset_attributes (see
https://gist.github.com/ichesnokov/e5fb7e70cb6d497ea5a0), and it
works, but requires fiddling with internal state of a resultset, which
seems a bit wrong.
Is there any better way for achieving the same?
Thanks.
--
Best regards,
Ilya Chesnokov
More information about the DBIx-Class
mailing list