[Dbix-class] Creating custom ResultSet Class.

Jess Robinson castaway at desert-island.me.uk
Fri Apr 27 07:29:54 GMT 2007




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 = $rs->search(undef, {order_by => 'rating', rows => 10, memcache
>> => 
>> >  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



More information about the Dbix-class mailing list