use method BUILD instead of triggers
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Parser.pm
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';
6
7     has 'dbh' => (
8         isa => DBIHandle,
9         is => 'ro',
10         predicate => 'has_dbh',
11     );
12
13     has 'filename' => (
14         isa => Str,
15         is => 'ro',
16         predicate => 'has_ddl',
17     );
18
19     has 'type' => (
20         isa => Str,
21         is => 'ro',
22         predicate => 'has_type',
23     );
24
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
37     method parse {
38         my $schema = Schema->new({ name => $self->schema_name });
39         $self->_add_tables($schema);
40         $schema;
41     }
42 }