X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FRelBuilder.pm;h=2fe5824897f4a775cea282e9875d42065a2c68e2;hb=0faae4b8a8a08f1442ea2cf7dcd03bc14ef38cd3;hp=adc652ae6f21b3ff91458d59f21c21a57c496d69;hpb=198a1e711a2610cd3b165669ee23daa641e789f5;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/RelBuilder.pm b/lib/DBIx/Class/Schema/Loader/RelBuilder.pm index adc652a..2fe5824 100644 --- a/lib/DBIx/Class/Schema/Loader/RelBuilder.pm +++ b/lib/DBIx/Class/Schema/Loader/RelBuilder.pm @@ -100,6 +100,8 @@ sub new { sub _inflect_plural { my ($self, $relname) = @_; + return '' if !defined $relname || $relname eq ''; + if( ref $self->{inflect_plural} eq 'HASH' ) { return $self->{inflect_plural}->{$relname} if exists $self->{inflect_plural}->{$relname}; @@ -116,6 +118,8 @@ sub _inflect_plural { sub _inflect_singular { my ($self, $relname) = @_; + return '' if !defined $relname || $relname eq ''; + if( ref $self->{inflect_singular} eq 'HASH' ) { return $self->{inflect_singular}->{$relname} if exists $self->{inflect_singular}->{$relname}; @@ -180,6 +184,7 @@ sub _remote_relname { # name, to make filter accessors work, but strip trailing _id if(scalar keys %{$cond} == 1) { my ($col) = values %{$cond}; + $col = lc $col; $col =~ s/_id$//; $remote_relname = $self->_inflect_singular($col); } @@ -224,7 +229,7 @@ sub generate_code { } my ( $local_relname, $remote_relname, $remote_method ) = - $self->_relnames_and_methods( $local_moniker, $rel, \%cond, $uniqs, \%counters ); + $self->_relnames_and_method( $local_moniker, $rel, \%cond, $uniqs, \%counters ); push(@{$all_code->{$local_class}}, { method => 'belongs_to', @@ -256,13 +261,13 @@ sub generate_code { return $all_code; } -sub _relnames_and_methods { +sub _relnames_and_method { my ( $self, $local_moniker, $rel, $cond, $uniqs, $counters ) = @_; my $remote_moniker = $rel->{remote_source}; my $remote_obj = $self->{schema}->source( $remote_moniker ); my $remote_class = $self->{schema}->class( $remote_moniker ); - my $remote_relname = $self->_remote_relname( $remote_obj->from, $cond); + my $remote_relname = lc $self->_remote_relname( $remote_obj->from, $cond); my $local_cols = $rel->{local_columns}; my $local_table = $self->{schema}->source($local_moniker)->from; @@ -272,7 +277,7 @@ sub _relnames_and_methods { my $local_relname; my $old_multirel_name; #< TODO: remove me if ( $counters->{$remote_moniker} > 1) { - my $colnames = q{_} . join(q{_}, @$local_cols); + my $colnames = lc(q{_} . join(q{_}, @$local_cols)); $remote_relname .= $colnames if keys %$cond > 1; $local_relname = lc($local_table) . $colnames; @@ -293,6 +298,8 @@ sub _relnames_and_methods { grep { _array_eq($_->[1], $local_cols) } @$uniqs) { $remote_method = 'might_have'; $local_relname = $self->_inflect_singular($local_relname); + #< TODO: remove me + $old_multirel_name = $self->_inflect_singular($old_multirel_name); } # TODO: remove me after 0.05003 release