docs and config substitutions
[dbsrgits/DBIx-Class-Fixtures.git] / lib / DBIx / Class / Fixtures / External / File.pm
index 13ff2eb..97fd5fb 100644 (file)
@@ -21,16 +21,84 @@ sub _save {
   close($fh);
 }
 
-sub fetch {
+sub backup {
   my ($class, $key, $args) = @_;
   my $path = catfile($args->{path}, $key);
-  return my $fetched = $class->_load($path);
+  return $class->_load($path);
 }
 
-sub write {
+sub restore {
   my ($class, $key, $content, $args) = @_;
   my $path = catfile($args->{path}, $key);
   $class->_save($path, $content);
 }
 
 1;
+
+=head1 NAME
+
+DBIx::Class::Fixtures::External::File - save and restore external data
+
+=head1 SYNOPSIS
+
+    my $fixtures = DBIx::Class::Fixtures
+      ->new({
+        config_dir => 't/var/configs',
+        config_attrs => { photo_dir => './t/var/files' });
+
+    {
+        "sets": [{
+            "class": "Photo",
+            "quantity": "all",
+            "external": {
+                "file": {
+                    "class": "File",
+                    "args": {"path":"__ATTR(photo_dir)__"}
+                }
+            }
+        }]
+    }
+
+=head1 DESCRIPTION
+
+Sometimes your database fields are pointers to external data.  The classic
+example is you are using L<DBIx::Class::InflateColumn::FS> to manage blob
+data.  In these cases it may be desirable to backup and restore the external
+data via fixtures.
+
+This module performs this function and can also serve as an example for your
+possible custom needs.
+
+=head1 METHODS
+
+This module defines the following methods
+
+=head2 backup
+
+Accepts: Value of Database Field, $args
+
+Given the value of a database field (which is some sort of pointer to the location
+of an actual file, and a hashref of args (passed in the args key of your config
+set), slurp up the file and return to to be saved in the fixure.
+
+=head2 restore
+
+Accepts: Value of Database Field, Content, $args
+
+Given the value of a database field, some blob content and $args, restore the
+file to the filesystem
+
+=head1 AUTHOR
+
+    See L<DBIx::Class::Fixtures> for author information.
+
+=head1 CONTRIBUTORS
+
+    See L<DBIx::Class::Fixtures> for contributor information.
+
+=head1 LICENSE
+
+    See L<DBIx::Class::Fixtures> for license information.
+
+=cut
+