X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FAdmin.pm;h=60d8c9e7360b4e35d2d147585a16910a8a337dd0;hb=d52fc26dd05b56a41494a5ec86cddecfe3587b96;hp=0e2cf78beb308e1bb76a090fd75bc3313d914f74;hpb=4d1e63f4234e8a70a5a1f618ad7d8f3facd09142;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Admin.pm b/lib/DBIx/Class/Admin.pm index 0e2cf78..60d8c9e 100644 --- a/lib/DBIx/Class/Admin.pm +++ b/lib/DBIx/Class/Admin.pm @@ -1,20 +1,24 @@ package DBIx::Class::Admin; +use warnings; +use strict; + # check deps BEGIN { - use DBIx::Class; - die('The following modules are required for DBIx::Class::Admin ' . DBIx::Class::Optional::Dependencies->req_missing_for ('admin') ) - unless DBIx::Class::Optional::Dependencies->req_ok_for ('admin'); + require DBIx::Class::Optional::Dependencies; + if (my $missing = DBIx::Class::Optional::Dependencies->req_missing_for ('admin') ) { + die "The following extra modules are required for DBIx::Class::Admin: $missing\n"; + } } +use JSON::Any qw(DWIW PP JSON CPANEL XS); use Moose; use MooseX::Types::Moose qw/Int Str Any Bool/; use DBIx::Class::Admin::Types qw/DBICConnectInfo DBICHashRef/; use MooseX::Types::JSON qw(JSON); use MooseX::Types::Path::Class qw(Dir File); -use Try::Tiny; -use JSON::Any qw(DWIW XS JSON); -use namespace::autoclean; +use MooseX::Types::LoadableClass qw(LoadableClass); +use namespace::clean; =head1 NAME @@ -68,7 +72,7 @@ the class of the schema to load has 'schema_class' => ( is => 'ro', - isa => Str, + isa => LoadableClass, ); @@ -87,8 +91,6 @@ has 'schema' => ( sub _build_schema { my ($self) = @_; - require Class::MOP; - Class::MOP::load_class($self->schema_class); $self->connect_info->[3]{ignore_version} = 1; return $self->schema_class->connect(@{$self->connect_info}); } @@ -167,7 +169,7 @@ sub _build_connect_info { config_file provide a config_file to read connect_info from, if this is provided config_stanze should also be provided to locate where the connect_info is in the config -The config file should be in a format readable by Config::General +The config file should be in a format readable by Config::Any. =cut @@ -207,9 +209,6 @@ has config => ( sub _build_config { my ($self) = @_; - try { require Config::Any } - catch { die ("Config::Any is required to parse the config file.\n") }; - my $cfg = Config::Any->load_files ( {files => [$self->config_file], use_ext =>1, flatten_to_hash=>1}); # just grab the config from the config file @@ -340,8 +339,6 @@ sub create { $sqlt_type ||= $self->sql_type(); my $schema = $self->schema(); - # create the dir if does not exist - $self->sql_dir->mkpath() if ( ! -d $self->sql_dir); $schema->create_ddl_dir( $sqlt_type, (defined $schema->schema_version ? $schema->schema_version : ""), $self->sql_dir->stringify, $preversion, $sqlt_args ); } @@ -452,7 +449,7 @@ sub insert { $rs ||= $self->resultset(); $set ||= $self->set(); my $resultset = $self->schema->resultset($rs); - my $obj = $resultset->create( $set ); + my $obj = $resultset->new_result($set)->insert; print ''.ref($resultset).' ID: '.join(',',$obj->id())."\n" if (!$self->quiet); } @@ -579,16 +576,20 @@ sub _find_stanza { die ("Could not find $stanza in config, $path does not seem to exist.\n"); } } + $cfg = $cfg->{connect_info} if exists $cfg->{connect_info}; return $cfg; } -=head1 AUTHOR +=head1 FURTHER QUESTIONS? -See L. +Check the list of L. -=head1 LICENSE +=head1 COPYRIGHT AND LICENSE -You may distribute this code under the same terms as Perl itself +This module is free software L +by the L. You can +redistribute it and/or modify it under the same terms as the +L. =cut