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 | my $apply_role_dbi = sub { |
8 | my $self = shift; |
eba3827b |
9 | my $role = __PACKAGE__ . '::DBI'; |
10 | Class::MOP::load_class($role); |
11 | $role->meta->apply($self); |
4f4fd192 |
12 | $self->_subclass(); |
13 | }; |
d6201a5e |
14 | |
eba3827b |
15 | my $apply_role_ddl = sub { |
16 | my $self = shift; |
17 | my $role = __PACKAGE__ . '::DDL::' . $self->type; |
18 | Class::MOP::load_class($role); |
19 | $role->meta->apply($self); |
20 | }; |
d6201a5e |
21 | |
4f4fd192 |
22 | has 'dbh' => ( |
23 | isa => DBIHandle, |
24 | is => 'ro', |
25 | predicate => 'has_dbh', |
26 | trigger => $apply_role_dbi, |
27 | ); |
d6201a5e |
28 | |
4f4fd192 |
29 | has 'filename' => ( |
30 | isa => Str, |
31 | is => 'ro', |
32 | predicate => 'has_ddl', |
33 | trigger => $apply_role_ddl, |
34 | ); |
d6201a5e |
35 | |
eba3827b |
36 | has 'type' => ( |
37 | isa => Str, |
38 | is => 'ro', |
39 | ); |
40 | |
4f4fd192 |
41 | method parse { |
42 | my $schema = Schema->new({ name => $self->schema_name }); |
43 | $self->_add_tables($schema); |
44 | $schema; |
45 | } |
bab65ec9 |
46 | } |