Commit | Line | Data |
4f4fd192 |
1 | use MooseX::Declare; |
2 | class SQL::Translator::Parser { |
3 | use MooseX::Types::Moose qw(Str); |
4 | use SQL::Translator::Types qw(DBIHandle); |
5 | use aliased 'SQL::Translator::Object::Schema'; |
cc73c25e |
6 | |
4f4fd192 |
7 | has 'dbh' => ( |
8 | isa => DBIHandle, |
9 | is => 'ro', |
10 | predicate => 'has_dbh', |
4f4fd192 |
11 | ); |
d6201a5e |
12 | |
4f4fd192 |
13 | has 'filename' => ( |
14 | isa => Str, |
15 | is => 'ro', |
16 | predicate => 'has_ddl', |
4f4fd192 |
17 | ); |
d6201a5e |
18 | |
eba3827b |
19 | has 'type' => ( |
20 | isa => Str, |
21 | is => 'ro', |
f1bc36f4 |
22 | predicate => 'has_type', |
eba3827b |
23 | ); |
24 | |
f1bc36f4 |
25 | method BUILD(@) { |
26 | my $role = __PACKAGE__; |
27 | if ($self->has_dbh) { |
28 | $role .= '::DBI'; |
29 | } elsif ($self->has_type || $self->has_ddl) { |
30 | $role .= '::DDL'; |
31 | } |
32 | Class::MOP::load_class($role); |
33 | $role->meta->apply($self); |
34 | $self->_subclass(); |
35 | } |
36 | |
4f4fd192 |
37 | method parse { |
38 | my $schema = Schema->new({ name => $self->schema_name }); |
39 | $self->_add_tables($schema); |
40 | $schema; |
41 | } |
bab65ec9 |
42 | } |