For these purposes I found this sneaky little ResultSetManager extension.

You put ResultSetManager in your load_components and you put your custom plugin for resultset into a load_resultset_components call. An example from one of my classes.

__PACKAGE__->load_components(qw/IVRSchedule PK::Auto InflateColumn::DateTime ResultSetManager Core/);
__PACKAGE__->load_resultset_components(qw/Nothing/);

Nothing is actually a plugin that impliments the 'Nothing' design pattern - that is - instead of returning null when referencing a row in an empty resultset (particularly ->single and ->first, which I use many times when NOT looping over results, hence resulting in undef dereference errors on empty) it instead returns a magical 'Nothing' object which has characteristics like - (->is_nothing === 1, ->id === 0, @list = $rs->method === (), $row = $rs->method === bless({}, Nothing). The result - no need to if-then on empty resultsets when grabbing data. I wanted to use the Want module to change the return considering the context called in, but that module is, sadly, not compatible with mod_perl. If it was, I could give back undefined, blessed ref, array ref, or hash ref depending on its context, which would be cool. Dang segfaults...

David


Ashley wrote:
I'm trying to do a custom component which requires an elaborate result set. This is a component which might be of benefit to many projects if I can get it together.

I am writing it with its accompanying resultset_class but I cannot seem to work out how to get the resultset_class loaded without manually putting it into the "user" schema/row/table file/code. I have played around with about 100 permutations of loading components or raw parent classes in the component class to expose things like _source_handle and resultset_class public and private friends, and things like __PACKAGE__->set_component_class("resultset_class", "DBICx::ResultSet::MyRS"). I can't seem to nail it down and when I thought I might have something with the ::DB component, I got a big ol'deprecation notice.

So, how do I set the resultset_class for a result_class from within a component which is loaded from the result_class? I'm sure I'm missing something.

Thanks!
-Ashley



_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[email protected]



_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[email protected]

Reply via email to