turn off cascade_delete/copy, set on_delete/update
[dbsrgits/DBIx-Class-Schema-Loader.git] / lib / DBIx / Class / Schema / Loader / RelBuilder / Compat / v0_040.pm
1 package DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_040;
2
3 use strict;
4 use warnings;
5 use Class::C3;
6
7 use base 'DBIx::Class::Schema::Loader::RelBuilder';
8
9 sub _default_relationship_attrs { +{} }
10
11 sub _to_PL {
12     my ($self, $name) = @_;
13
14     return Lingua::EN::Inflect::Number::to_PL($name);
15 }
16
17 sub _relnames_and_method {
18     my ( $self, $local_moniker, $rel, $cond, $uniqs, $counters ) = @_;
19
20     my $remote_moniker = $rel->{remote_source};
21     my $remote_table   = $self->{schema}->source( $remote_moniker )->from;
22
23     my $local_table = $self->{schema}->source($local_moniker)->from;
24     my $local_cols  = $rel->{local_columns};
25
26     # for single-column case, set the remote relname to just the column name
27     my $remote_relname =
28         scalar keys %{$cond} == 1
29             ? $self->_inflect_singular( values %$cond  )
30             : $self->_inflect_singular( lc $remote_table );
31
32     # If more than one rel between this pair of tables, use the local
33     # col names to distinguish
34     my $local_relname;
35     if ($counters->{$remote_moniker} > 1) {
36         my $colnames = '_' . join( '_', @$local_cols );
37         $remote_relname .= $colnames if keys %$cond > 1;
38         $local_relname = $self->_inflect_plural( lc($local_table) . $colnames );
39     } else {
40         $local_relname = $self->_inflect_plural(lc $local_table);
41     }
42
43     return ( $local_relname, $remote_relname, 'has_many' );
44 }
45
46 sub _remote_attrs { }
47
48 1;
49
50 =head1 NAME
51
52 DBIx::Class::Schema::Loader::RelBuilder::Compat::v0_040 - RelBuilder for
53 compatibility with DBIx::Class::Schema::Loader version 0.04006
54
55 =head1 DESCRIPTION
56
57 See L<DBIx::Class::Schema::Loader::Base/naming>.
58
59 =cut