skip structs in loader args after connect_info
[catagits/Catalyst-Model-DBIC-Schema.git] / lib / Catalyst / Helper / Model / DBIC / Schema.pm
index 16e8634..472ef90 100644 (file)
@@ -4,7 +4,7 @@ use namespace::autoclean;
 use Moose;
 no warnings 'uninitialized';
 
-our $VERSION = '0.50';
+our $VERSION = '0.52';
 $VERSION = eval $VERSION;
 
 use Carp;
@@ -300,6 +300,33 @@ 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;
+    }
+
+    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 ($self->_is_struct($val)) {
+            $loader_args{$key} = $val;
+        } elsif ((my @vals = split /,/ => $val) > 1) {
+            $loader_args{$key} = \@vals;
+        } else {
+            $loader_args{$key} = $val;
+        }
+    }
+
     wantarray ? %loader_args : \%loader_args;
 }
 
@@ -596,6 +623,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 {