X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FRelBuilder.pm;h=b8cef856c414baaa27b578d10f46dc6165ebf052;hb=refs%2Fheads%2Ffk-to-non-uniq;hp=8ae4559ec8ee851b34c99b4dd224d1673b386482;hpb=45b70e6c5450ee7a1428f10dd90dce0a50e45ff4;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 8ae4559..b8cef85 100644 --- a/lib/DBIx/Class/Schema/Loader/RelBuilder.pm +++ b/lib/DBIx/Class/Schema/Loader/RelBuilder.pm @@ -9,7 +9,7 @@ use Scalar::Util 'weaken'; use DBIx::Class::Schema::Loader::Utils qw/split_name slurp_file array_eq/; use Try::Tiny; use List::Util 'first'; -use List::MoreUtils qw/apply uniq any/; +use List::MoreUtils qw/apply uniq any none/; use namespace::clean; use Lingua::EN::Inflect::Phrase (); use Lingua::EN::Tagger (); @@ -381,6 +381,7 @@ sub generate_code { # make a copy to destroy my @tables = @$tables; + my %uniq_cols = map { $_->[0] => [ map { $_->[1] } @{$_->[2]} ] } @tables; my $all_code = {}; @@ -433,6 +434,17 @@ sub generate_code { $remote_moniker, $remote_cols, $remote_relname, ); + if (!$self->loader->_disable_uniq_detection + && none { array_eq($_, $remote_cols) } + [ $remote_obj->primary_columns ], + @{$uniq_cols{$remote_moniker}}, + ) { + warn <<"EOF"; +$local_method relationship '$remote_relname' in source '$local_moniker' references +non-unique columns (@{[join(',', @$remote_cols)]}) in source '$remote_moniker'. +EOF + } + my $rel_attrs_params = { rel_name => $local_relname, rel_type => $local_method,