make dump/populate work with mixed-case table names
[dbsrgits/DBIx-Class-Fixtures.git] / lib / DBIx / Class / Fixtures.pm
index 630e1f6..e44827e 100644 (file)
@@ -26,11 +26,11 @@ __PACKAGE__->mk_group_accessors( 'simple' => qw/config_dir
 
 =head1 VERSION
 
-Version 1.001012
+Version 1.001013
 
 =cut
 
-our $VERSION = '1.001012';
+our $VERSION = '1.001013';
 
 =head1 NAME
 
@@ -712,7 +712,7 @@ sub dump_object {
 
 
   # write dir and gen filename
-  my $source_dir = $params->{set_dir}->subdir(lc $src->from);
+  my $source_dir = $params->{set_dir}->subdir($src->from);
   $source_dir->mkpath(0, 0777);
 
   # strip dir separators from file name
@@ -939,10 +939,10 @@ sub _read_sql {
   return \@data;
 }
 
-=head2 dump_all_config_sets
+=head2 dump_config_sets
 
 Works just like L</dump> but instead of specifying a single json config set
-located in L</config_dir> we dump each set in turn to the specified directory.
+located in L</config_dir> we dump each set named in the C<configs> parameter.
 
 The parameters are the same as for L</dump> except instead of a C<directory>
 parameter we have a C<directory_template> which is a coderef expected to return
@@ -952,6 +952,7 @@ example:
 
     $fixture->dump_all_config_sets({
       schema => $schema,
+      configs => [qw/one.json other.json/],
       directory_template => sub {
         my ($fixture, $params, $set) = @_;
         return File::Spec->catdir('var', 'fixtures', $params->{schema}->version, $set);
@@ -960,19 +961,57 @@ example:
 
 =cut
 
-sub dump_all_config_sets {
+sub dump_config_sets {
   my ($self, $params) = @_;
-  my @available_config_sets = $self->available_config_sets;
+  my $available_config_sets = delete $params->{configs};
   my $directory_template = delete $params->{directory_template} ||
     DBIx::Class::Exception->throw("'directory_template is required parameter");
 
-  for my $set (@available_config_sets) {
-    local($self,$params);
-    $params->{directory} = $directory_template->($self, $params, $set);
-    $self->dump($params)
+  for my $set (@$available_config_sets) {
+    my $localparams = $params;
+    $localparams->{directory} = $directory_template->($self, $localparams, $set);
+    $localparams->{config} = $set;
+    $self->dump($localparams);
+    $self->dumped_objects({}); ## Clear dumped for next go, if there is one!
   }
 }
 
+=head2 dump_all_config_sets
+
+    my %local_params = %$params;
+    my $local_self = bless { %$self }, ref($self);
+    $local_params{directory} = $directory_template->($self, \%local_params, $set);
+    $local_params{config} = $set;
+    $self->dump(\%local_params);
+
+
+Works just like L</dump> but instead of specifying a single json config set
+located in L</config_dir> we dump each set in turn to the specified directory.
+
+The parameters are the same as for L</dump> except instead of a C<directory>
+parameter we have a C<directory_template> which is a coderef expected to return
+a scalar that is a root directory where we will do the actual dumping.  This
+coderef get three arguments: C<$self>, C<$params> and C<$set_name>.  For
+example:
+
+    $fixture->dump_all_config_sets({
+      schema => $schema,
+      directory_template => sub {
+        my ($fixture, $params, $set) = @_;
+        return File::Spec->catdir('var', 'fixtures', $params->{schema}->version, $set);
+      },
+    });
+
+=cut
+
+sub dump_all_config_sets {
+  my ($self, $params) = @_;
+  $self->dump_config_sets({
+    %$params,
+    configs=>[$self->available_config_sets],
+  });
+}
+
 =head2 populate
 
 =over 4
@@ -1124,7 +1163,7 @@ sub populate {
       foreach my $source (sort $schema->sources) {
         $self->msg("- adding " . $source);
         my $rs = $schema->resultset($source);
-        my $source_dir = $tmp_fixture_dir->subdir( lc $rs->result_source->from );
+        my $source_dir = $tmp_fixture_dir->subdir( $rs->result_source->from );
         next unless (-e $source_dir);
         my @rows;
         while (my $file = $source_dir->next) {