Aniki
view release on metacpan or search on metacpan
lib/Aniki/Schema/Relationship.pm view on Meta::CPAN
package Aniki::Schema::Relationship;
use 5.014002;
use namespace::autoclean;
use Mouse v2.4.5;
use Aniki::Schema::Relationship::Fetcher;
use Lingua::EN::Inflect qw/PL/;
use Hash::Util::FieldHash qw/fieldhash/;
our @WORD_SEPARATORS = ('-', '_', ' ');
has schema => (
is => 'ro',
required => 1,
weak_ref => 1,
);
has src_table_name => (
is => 'ro',
required => 1,
);
has src_columns => (
is => 'ro',
required => 1,
);
has dest_table_name => (
is => 'ro',
required => 1,
);
has dest_columns => (
is => 'ro',
required => 1,
);
has has_many => (
is => 'ro',
default => sub {
my $self = shift;
return $self->schema->has_many($self->dest_table_name, $self->dest_columns);
},
);
has name => (
is => 'ro',
default => \&_guess_name,
);
has fetcher => (
is => 'ro',
default => sub { Aniki::Schema::Relationship::Fetcher->new(relationship => $_[0]) },
);
sub _guess_name {
my $self = shift;
my @src_columns = @{ $self->src_columns };
my @dest_columns = @{ $self->dest_columns };
my $src_table_name = $self->src_table_name;
my $dest_table_name = $self->dest_table_name;
my $prefix = (@src_columns == 1 && $src_columns[0] =~ /^(.+)_\Q$dest_table_name/) ? $1.'_' :
( run in 0.863 second using v1.01-cache-2.11-cpan-5a3173703d6 )