Audit and minimize use of last major indirect method: search()
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Admin.pm
index 81dd5b0..300c485 100644 (file)
@@ -1,10 +1,14 @@
 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);
@@ -14,7 +18,6 @@ use DBIx::Class::Admin::Types qw/DBICConnectInfo DBICHashRef/;
 use MooseX::Types::JSON qw(JSON);
 use MooseX::Types::Path::Class qw(Dir File);
 use MooseX::Types::LoadableClass qw(LoadableClass);
-use Try::Tiny;
 use namespace::clean;
 
 =head1 NAME
@@ -89,7 +92,7 @@ sub _build_schema {
   my ($self)  = @_;
 
   $self->connect_info->[3]{ignore_version} = 1;
-  return $self->schema_class->connect(@{$self->connect_info});
+  return $self->schema_class->clone->connection(@{$self->connect_info});
 }
 
 =head2 resultset
@@ -206,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
@@ -339,10 +339,14 @@ 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 );
+  $schema->create_ddl_dir(
+    $sqlt_type,
+    (defined $schema->schema_version ? $schema->schema_version : ""),
+    $self->sql_dir,
+    $preversion,
+    $sqlt_args,
+  );
 }
 
 
@@ -476,7 +480,8 @@ sub update {
   $where ||= $self->where();
   $set ||= $self->set();
   my $resultset = $self->schema->resultset($rs);
-  $resultset = $resultset->search( ($where||{}) );
+  $resultset = $resultset->search_rs( $where )
+    if $where;
 
   my $count = $resultset->count();
   print "This action will modify $count ".ref($resultset)." records.\n" if (!$self->quiet);
@@ -507,7 +512,8 @@ sub delete {
   $where ||= $self->where();
   $attrs ||= $self->attrs();
   my $resultset = $self->schema->resultset($rs);
-  $resultset = $resultset->search( ($where||{}), ($attrs||()) );
+  $resultset = $resultset->search_rs( ($where||{}), ($attrs||()) )
+    if $where or $attrs;
 
   my $count = $resultset->count();
   print "This action will delete $count ".ref($resultset)." records.\n" if (!$self->quiet);
@@ -538,7 +544,8 @@ sub select {
   $where ||= $self->where();
   $attrs ||= $self->attrs();
   my $resultset = $self->schema->resultset($rs);
-  $resultset = $resultset->search( ($where||{}), ($attrs||()) );
+  $resultset = $resultset->search_rs( ($where||{}), ($attrs||()) )
+    if $where or $attrs;
 
   my @data;
   my @columns = $resultset->result_source->columns();