[Dbix-class] "Deletion" of records by setting status to 'deleted'

Илья chesnokov.ilya at gmail.com
Wed Mar 11 18:26:31 GMT 2015


OK, solved my problem by creating a separate view in my database that only includes services with proper statuses. The "solution" I tried to use first didn't work properly as well, don't try to use it (without modification, at least)!

-----Исходное сообщение-----
От: "Ilya Chesnokov" <chesnokov.ilya at gmail.com>
Отправлено: ‎09.‎03.‎2015 21:04
Кому: "dbix-class at lists.scsys.co.uk" <dbix-class at lists.scsys.co.uk>
Тема: "Deletion" of records by setting status to 'deleted'

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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20150311/3d222b81/attachment.htm>


More information about the DBIx-Class mailing list