DBIx-Class-Schema-ResultSetNames
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/DBIx/Class/Schema/ResultSetNames.pm view on Meta::CPAN
package DBIx::Class::Schema::ResultSetNames;
use Modern::Perl;
our $VERSION = '1.0301'; # VERSION
our $AUTHORITY = 'cpan:GEEKRUTH'; # AUTHORITY
# ABSTRACT: Create resultset accessors from schema result class names
use base qw(DBIx::Class::Schema);
use Carp;
use Lingua::EN::Inflect::Phrase;
__PACKAGE__->mk_group_accessors( inherited => 'resultset_name_methods' );
__PACKAGE__->resultset_name_methods( {} );
sub register_source {
my ( $class, $source_name, @rest ) = @_;
my $source = $class->next::method( $source_name, @rest );
$class->_register_resultset_name_methods($source_name);
return $source;
}
sub _ensure_resultset_name_method {
my ( $class, $name, $sub ) = @_;
return if $class->can($name);
{
no strict 'refs';
*{"${class}::${name}"} = $sub;
}
$class->resultset_name_methods( { %{ $class->resultset_name_methods }, $name => 1 }, );
return;
}
sub _register_resultset_name_methods {
my ( $class, $source_name ) = @_;
my $rsname_overrides = {};
if ( $class->can('override_rsnames') ) {
$rsname_overrides = $class->override_rsnames;
}
my $method_name = $rsname_overrides->{$source_name}->{singular}
|| $class->_source_name_to_method_name($source_name);
my $plural_name = $rsname_overrides->{$source_name}->{plural}
|| $class->_source_name_to_plural_name($source_name);
if ( $method_name eq $plural_name ) {
croak << "END_MESSAGE";
The ResultSet $source_name is the same word in both singular and
plural forms. Use an override to choose different words for one
or the other, or both. Consult the documentation for assistance
in doing this.
END_MESSAGE
}
$class->_ensure_resultset_name_method(
$method_name => sub {
my ( $self, @args ) = @_;
die "Can't call ${method_name} without arguments" unless @args;
$self->resultset($source_name)->find(@args);
}
);
$class->_ensure_resultset_name_method(
$plural_name => sub {
my ( $self, @args ) = @_;
my $rs = $self->resultset($source_name);
return $rs unless @args;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 5.820 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-48ebf85a1963 )