X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSetManager.pm;h=a0911bccd2be3dbc00a28ff95116073cdb17e19c;hb=a733c37fdebe9bb9ef6e56003e986717e23383d1;hp=eb184371063be5d70179d41fe3e5705aa2ef0fff;hpb=24d67825c6b2e604a349ccd5de0df1956c0d98dc;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/ResultSetManager.pm b/lib/DBIx/Class/ResultSetManager.pm index eb18437..a0911bc 100644 --- a/lib/DBIx/Class/ResultSetManager.pm +++ b/lib/DBIx/Class/ResultSetManager.pm @@ -1,8 +1,45 @@ package DBIx::Class::ResultSetManager; use strict; +use warnings; use base 'DBIx::Class'; use Class::Inspector; +=head1 NAME + + 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 { + my $self = shift; + my $cond = shift; + my $attrs = shift || {}; + $attrs->{order_by} = 'year DESC'; + $self->next::method($cond, $attrs); + } + + $rs = $schema->resultset('CD')->search_by_year_desc({ artist => 'Tool' }); + +=head1 DESCRIPTION + +This package implements two useful features for customizing resultset +classes. C loads components in addition to +C (or whatever you set as +C). Any methods tagged with the C +attribute will be moved into a table-specific resultset class (by +default called C, but configurable via +C). Most of the magic is done when you +call C<< __PACKAGE__->table >>. + +=cut + __PACKAGE__->mk_classdata($_) for qw/ base_resultset_class table_resultset_class_suffix /; __PACKAGE__->base_resultset_class('DBIx::Class::ResultSet'); @@ -13,7 +50,7 @@ sub table { my $ret = $self->next::method(@rest); if (@rest) { $self->_register_attributes; - $self->_register_resultset_class; + $self->_register_resultset_class; } return $ret; } @@ -59,48 +96,12 @@ sub _register_resultset_class { $self->result_source_instance->resultset_class($resultset_class); } else { $self->result_source_instance->resultset_class - ($self->base_resultset_class); + ($self->base_resultset_class); } } 1; -__END__ - -=head1 NAME - - 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 { - my $self = shift; - my $cond = shift; - my $attrs = shift || {}; - $attrs->{order_by} = 'year DESC'; - $self->next::method($cond, $attrs); - } - - $rs = $schema->resultset('CD')->search_by_year_desc({ artist => 'Tool' }); - -=head1 DESCRIPTION - -This package implements two useful features for customizing resultset -classes. C loads components in addition to -C (or whatever you set as -C). Any methods tagged with the C -attribute will be moved into a table-specific resultset class (by -default called C, but configurable via -C). Most of the magic is done when you -call C<< __PACKAGE__->table >>. - =head1 AUTHORS David Kamholz