add SQL::Translator constants
[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 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}