1package DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_05; 2 3use strict; 4use warnings; 5use base 'DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_06'; 6use mro 'c3'; 7use DBIx::Class::Schema::Loader::Utils 'array_eq'; 8use namespace::clean; 9use Lingua::EN::Inflect::Number (); 10 11our $VERSION = '0.07033'; 12 13sub _to_PL { 14 my ($self, $name) = @_; 15 16 return Lingua::EN::Inflect::Number::to_PL($name); 17} 18 19sub _to_S { 20 my ($self, $name) = @_; 21 22 return Lingua::EN::Inflect::Number::to_S($name); 23} 24 25sub _default_relationship_attrs { +{} } 26 27sub _relnames_and_method { 28 my ( $self, $local_moniker, $rel, $cond, $uniqs, $counters ) = @_; 29 30 my $remote_moniker = $rel->{remote_source}; 31 my $remote_obj = $self->{schema}->source( $remote_moniker ); 32 my $remote_class = $self->{schema}->class( $remote_moniker ); 33 my $remote_relname = $self->_remote_relname( $rel->{remote_table}, $cond); 34 35 my $local_cols = $rel->{local_columns}; 36 my $local_table = $rel->{local_table}; 37 38 # If more than one rel between this pair of tables, use the local 39 # col names to distinguish 40 my ($local_relname, $local_relname_uninflected); 41 if ( $counters->{$remote_moniker} > 1) { 42 my $colnames = lc(q{_} . join(q{_}, map lc($_), @$local_cols)); 43 $remote_relname .= $colnames if keys %$cond > 1; 44 45 $local_relname = lc($local_table) . $colnames; 46 47 $local_relname_uninflected = $local_relname; 48 ($local_relname) = $self->_inflect_plural( $local_relname ); 49 } else { 50 $local_relname_uninflected = lc $local_table; 51 ($local_relname) = $self->_inflect_plural(lc $local_table); 52 } 53 54 my $remote_method = 'has_many'; 55 56 # If the local columns have a UNIQUE constraint, this is a one-to-one rel 57 my $local_source = $self->{schema}->source($local_moniker); 58 if (array_eq([ $local_source->primary_columns ], $local_cols) || 59 grep { array_eq($_->[1], $local_cols) } @$uniqs) { 60 $remote_method = 'might_have'; 61 ($local_relname) = $self->_inflect_singular($local_relname_uninflected); 62 } 63 64 return ( $local_relname, $remote_relname, $remote_method ); 65} 66 67=head1 NAME 68 69DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_05 - RelBuilder for 70compatibility with DBIx::Class::Schema::Loader version 0.05003 71 72=head1 DESCRIPTION 73 74See L<DBIx::Class::Schema::Loader::Base/naming> and 75L<DBIx::Class::Schema::Loader::RelBuilder>. 76 77=head1 AUTHOR 78 79See L<DBIx::Class::Schema::Loader/AUTHOR> and L<DBIx::Class::Schema::Loader/CONTRIBUTORS>. 80 81=head1 LICENSE 82 83This library is free software; you can redistribute it and/or modify it under 84the same terms as Perl itself. 85 86=cut 87 881; 89