[Dbix-class] Creating custom ResultSet Class.

Oleg Pronin syber.rus at gmail.com
Fri Apr 27 16:37:25 GMT 2007


I used this code in my base schema's "load_components" method and every
dynamically loaded new sources should use my resultset. Is that correct?

2007/4/27, Christopher H. Laco <claco at chrislaco.com>:
>
> Oleg Pronin wrote:
> > No, i can't use that. i cannot change user application. This will be
> just a
> > loadable component.
> >
> >
> > 2007/4/27, Jess Robinson <castaway at desert-island.me.uk>:
> >>
> >>
> >>
> >>
> >> On Fri, 27 Apr 2007, Oleg Pronin wrote:
> >>
> >> > Could you please give more details :)
> >> >
> >> > 2007/4/27, Jess Robinson <castaway at desert-island.me.uk>:
> >> >>
> >> >>
> >> >>
> >> >>
> >> >>  On Thu, 26 Apr 2007, Oleg Pronin wrote:
> >> >>
> >> >> >  Hello!
> >> >> >
> >> >> >  I want to create custom resultset class that will allow caching
> (in
> >> >> >  memcached) functionality.
> >> >> >
> >> >> >  For example,
> >> >> > @users =3D $rs->search(undef, {order_by =3D> 'rating', rows =3D> =
10,
> >> memcache
> >> >> =3D>
> >> >> >  60});
> >> >> >
> >> >> >  This will give stored in memcached and automatically updated
> every
> >> 60
> >> >> >  seconds top10 users list.
> >> >> >
> >> >> >  To do that i need every resultsource to use my resultset class.
> >> >> >  Cookbook says i've got to
> >> >> >  $source->resultset_class('My::ResultSet::Class');
> >> >> >  But i dont want to write it in every result source!
> >> >> >
> >> >> >  Is there a good way to set my custom resultset to all registered
> >> result
> >> >> >  sources?
> >> >> >
> >> >>
> >> >>  Yes, its a perl feature called a "base class" ;)
> >> >>
> >> >>  Jess
> >> >>
> >>
> >> package My::DBIC::Base;
> >> use base 'DBIx::Class';
> >>
> >> __PACKAGE__->load_components('Core');
> >> __PACKAGE__->table('');
> >> __PACKAGE__->resultset_class('My::ResultSet');
> >>
> >> 1;
> >>
> >> ...
> >>
> >> package My::TableClass;
> >> use base 'My::DBIC::Base';
> >>
> >> __PACKAGE__->table('mytable');
> >>
> >> 1;
> >>
> >> -- standard perl inheritance, nothing more exciting than that.
> >>
> >> Jess
>
> foreach my $source ($schema->sources) {
>    $source->resultset_class('YourResultSetClass');
> };
>
> That should work if you only want to alter the behavour of the current
> schema, and you can't/don't want to alter the classes for all instances.
>
>
> _______________________________________________
> List: http://lists.rawmode.org/cgi-bin/mailman/listinfo/dbix-class
> Wiki: http://dbix-class.shadowcatsystems.co.uk/
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/trunk/DBIx-Class/
> Searchable Archive:
> http://www.mail-archive.com/dbix-class@lists.rawmode.org/
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20070427/200=
ac111/attachment.htm


More information about the Dbix-class mailing list