X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCatalyst%2FHelper%2FModel%2FDBIC%2FSchema.pm;h=7ab6ed912351ff6d7a28a851ac99fa7c97a4591b;hb=1714a8a0ad486c7956ce7bd3f62e7b78a3d7222e;hp=16e8634b2b63963d680feafdcfabe2e5f9be3e0e;hpb=9d22a568d63517cfd3816fe8e8f1a2784cebd0f7;p=catagits%2FCatalyst-Model-DBIC-Schema.git diff --git a/lib/Catalyst/Helper/Model/DBIC/Schema.pm b/lib/Catalyst/Helper/Model/DBIC/Schema.pm index 16e8634..7ab6ed9 100644 --- a/lib/Catalyst/Helper/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Helper/Model/DBIC/Schema.pm @@ -4,7 +4,7 @@ use namespace::autoclean; use Moose; no warnings 'uninitialized'; -our $VERSION = '0.50'; +our $VERSION = '0.58'; $VERSION = eval $VERSION; use Carp; @@ -300,6 +300,47 @@ sub _read_loader_args { } } + # Use args after connect_info as loader args as well, because people always + # get the order confused. + my $i = 1; + if ($args->[0] =~ /sqlite/i) { + $i++ if $args->[$i] eq ''; + $i++ if $args->[$i] eq ''; + } + else { + $i += 2; + } + + my $have_loader = try { + Class::MOP::load_class('DBIx::Class::Schema::Loader::Base'); + 1; + }; + + if ($have_loader) { + while (defined $args->[$i]) { + $i++ while $self->_is_struct($args->[$i]); + + last if not defined $args->[$i]; + + my ($key, $val) = split /=/, $args->[$i], 2; + + if (not DBIx::Class::Schema::Loader::Base->can($key)) { + $i++; + next; + } + + if ($self->_is_struct($val)) { + $loader_args{$key} = $val; + } elsif ((my @vals = split /,/ => $val) > 1) { + $loader_args{$key} = \@vals; + } else { + $loader_args{$key} = $val; + } + + splice @$args, $i, 1; + } + } + wantarray ? %loader_args : \%loader_args; } @@ -596,6 +637,19 @@ sub _gen_static_schema { $self->loader_args, [$self->connect_info] ); + + require lib; + lib->import($schema_dir); + + Class::MOP::load_class($self->schema_class); + + my @sources = $self->schema_class->sources; + + if (not @sources) { + warn <<'EOF'; +WARNING: No tables found, did you forget to specify db_schema? +EOF + } } sub _gen_model {