skeleton checkin, largely stolen from DBIx::Class::Partitioned
[dbsrgits/DBIx-Class-Fixtures.git] / lib / DBIx / Class / Fixtures.pm
1 package DBIx::Class::Fixtures;
2
3 use strict;
4 use warnings;
5
6 use DBIx::Class::Exception;
7 use Class::Accessor;
8 use Path::Class qw(dir file);
9 use FindBin;
10 use JSON::Syck qw(LoadFile);
11 use Data::Dumper;
12
13 use base qw(Class::Accessor);
14
15 __PACKAGE__->mk_accessors(qw(config_dir));
16
17 =head1 VERSION
18
19 Version 1.000
20
21 =cut
22
23 our $VERSION = '1.000';
24
25 =head1 NAME
26
27 =head1 SYNOPSIS
28
29   use DBIx::Class::Fixtures;
30
31   ...
32
33   my $fixtures = DBIx::Class::Fixtures->new({ config_dir => '/home/me/app/fixture_configs' });
34
35   $fixtures->dump({
36     config => 'set_config.json',
37     schema => $source_dbic_schema,
38     directory => '/home/me/app/fixtures'
39   });
40
41   $fixtures->populate({
42     directory => '/home/me/app/fixtures',
43     ddl => '/home/me/app/sql/ddl.sql',
44     connection_details => ['dbi:mysql:dbname=app_dev', 'me', 'password']
45   });
46
47 =head1 DESCRIPTION
48
49 =head1 AUTHOR
50
51 =head1 CONTRIBUTORS
52
53 =cut
54
55
56 sub new {
57   my $class = shift;
58
59   my ($params) = @_;
60   unless (ref $params eq 'HASH') {
61     return DBIx::Class::Exception->throw('first arg to DBIx::Class::Fixtures->new() must be hash ref');
62   }
63
64   unless ($params->{config_dir}) {
65     return DBIx::Class::Exception->throw('config_dir param not specified');
66   }
67
68   my $config_dir = dir($params->{config_dir});
69   unless (-e $params->{config_dir}) {
70     return DBIx::Class::Exception->throw('config_dir directory doesn\'t exist');
71   }
72
73   my $self = {
74     config_dir => $config_dir
75   };
76
77   bless $self, $class;
78
79   return $self;
80 }
81
82 1;