use Moose;
no warnings 'uninitialized';
-our $VERSION = '0.49';
+our $VERSION = '0.59';
$VERSION = eval $VERSION;
use Carp;
C<traits> is the list of traits to apply to the model, see
L<Catalyst::Model::DBIC::Schema> for details.
-C<Schema::Loader opts> are described in L</TYPICAL EXAMPLES> below.
+C<Schema::Loader opts> are documented in L<DBIx::Class::Schema::Loader::Base>
+and some examples are given in L</TYPICAL EXAMPLES> below.
-C<connect_info> arguments are the same as what
-DBIx::Class::Schema::connect expects, and are storage_type-specific.
-For DBI-based storage, these arguments are the dsn, username,
-password, and connect options, respectively. These are optional for
-existing Schemas, but required if you use either of the C<create=>
-options.
+C<connect_info> arguments are the same as what L<DBIx::Class::Schema/connect>
+expects, and are storage_type-specific. They are documented in
+L<DBIx::Class::Storage::DBI/connect_info>. For DBI-based storage, these
+arguments are the dsn, username, password, and connect options, respectively.
+These are optional for existing Schemas, but required if you use either of the
+C<create=> options.
username and password can be omitted for C<SQLite> dsns.
}
}
+ # 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;
}
$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 {