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