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]