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