X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSetManager.pm;h=78461c9047d762653f3f6136b015bb7d2aa49b5d;hb=7f99746737bbbcb61f9dd0296a86a08a25f8b4fa;hp=a0911bccd2be3dbc00a28ff95116073cdb17e19c;hpb=75d079145a507a0e5ff89b2676d383f4fd1a5511;p=dbsrgits%2FDBIx-Class-Historic.git diff --git a/lib/DBIx/Class/ResultSetManager.pm b/lib/DBIx/Class/ResultSetManager.pm index a0911bc..78461c9 100644 --- a/lib/DBIx/Class/ResultSetManager.pm +++ b/lib/DBIx/Class/ResultSetManager.pm @@ -6,15 +6,14 @@ use Class::Inspector; =head1 NAME - DBIx::Class::ResultSetManager - helpful methods for managing - resultset classes (EXPERIMENTAL) +DBIx::Class::ResultSetManager - helpful methods for managing resultset +classes (EXPERIMENTAL) =head1 SYNOPSIS # in a table class __PACKAGE__->load_components(qw/ResultSetManager Core/); # note order! - __PACKAGE__->load_resultset_components(qw/AlwaysRS/); - + # will be removed from the table class and inserted into a # table-specific resultset class sub search_by_year_desc : ResultSet { @@ -22,7 +21,7 @@ use Class::Inspector; my $cond = shift; my $attrs = shift || {}; $attrs->{order_by} = 'year DESC'; - $self->next::method($cond, $attrs); + $self->search($cond, $attrs); } $rs = $schema->resultset('CD')->search_by_year_desc({ artist => 'Tool' }); @@ -45,6 +44,17 @@ __PACKAGE__->mk_classdata($_) __PACKAGE__->base_resultset_class('DBIx::Class::ResultSet'); __PACKAGE__->table_resultset_class_suffix('::_resultset'); +=head2 table + +Stacks on top of the normal L C method. Any +methods tagged with the C attribute will be moved into a +table-specific resultset class (by default called +C, but configurable via +C). The magic for this is done within +this C<< __PACKAGE__->table >> call. + +=cut + sub table { my ($self,@rest) = @_; my $ret = $self->next::method(@rest); @@ -55,6 +65,14 @@ sub table { return $ret; } +=head2 load_resultset_components + +C loads components in addition to +C (or whatever you set as +C). + +=cut + sub load_resultset_components { my ($self,@comp) = @_; my $resultset_class = $self->_setup_resultset_class; @@ -65,7 +83,7 @@ sub _register_attributes { my $self = shift; my $cache = $self->_attr_cache; return if keys %$cache == 0; - + foreach my $meth (@{Class::Inspector->methods($self) || []}) { my $attrs = $cache->{$self->can($meth)}; next unless $attrs;