implement 'use aliased'
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Parser.pm
1 package SQL::Translator::Parser;
2 use namespace::autoclean;
3 use Moose;
4 use MooseX::Types::Moose qw(Str);
5 use SQL::Translator::Types qw(DBIHandle);
6 use aliased 'SQL::Translator::Object::Schema';
7
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
25 has 'filename' => (
26     isa => Str,
27     is => 'ro',
28     predicate => 'has_ddl',
29     trigger => $apply_role_ddl,
30 );
31
32 sub parse {
33     my $self = shift;
34     my $schema = Schema->new({ name => $self->schema_name });
35     $self->_add_tables($schema);
36     $schema;
37 }
38
39 __PACKAGE__->meta->make_immutable;
40
41 1;