78d88ec342e425ef217f2fab64a04e1eb364c02f
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Parser.pm
1 package SQL::Translator::Parser;
2 use namespace::autoclean;
3 use Moose;
4 use MooseX::Types::Moose qw(Str);
5 use SQL::Translator::Types qw(DBIHandle);
6
7 my $apply_role_dbi = sub {
8     my $self = shift;
9     my $class = __PACKAGE__ . '::DBI';
10     Class::MOP::load_class($class);
11     $class->meta->apply($self);
12     $self->_subclass();
13 };
14
15 my $apply_role_ddl = sub { };
16
17 has 'dbh' => (
18     isa => DBIHandle,
19     is => 'ro',
20     predicate => 'has_dbh',
21     trigger => $apply_role_dbi,
22 );
23
24 has 'filename' => (
25     isa => Str,
26     is => 'ro',
27     predicate => 'has_ddl',
28     trigger => $apply_role_ddl,
29 );
30
31 sub BUILD {}
32
33 sub parse {
34     my $self = shift;
35     my $schema = SQL::Translator::Object::Schema->new({ name => $self->schema_name });
36     $self->_add_tables($schema);
37     $schema;
38 }
39
40 __PACKAGE__->meta->make_immutable;
41
42 1;