use method BUILD instead of triggers
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Parser.pm
CommitLineData
4f4fd192 1use MooseX::Declare;
2class 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}