X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FParser.pm;h=f825bb33c9f8c495b6e379da9a258e3b2021b1f0;hb=850220add003688ea91d67b11965ee81e94c4cab;hp=e69de29bb2d1d6434b8b29ae775ad8c2e48c5391;hpb=a5345b5a20fd669f0151c4cf2c36322743992e66;p=dbsrgits%2FSQL-Translator-2.0-ish.git diff --git a/lib/SQL/Translator/Parser.pm b/lib/SQL/Translator/Parser.pm index e69de29..f825bb3 100644 --- a/lib/SQL/Translator/Parser.pm +++ b/lib/SQL/Translator/Parser.pm @@ -0,0 +1,43 @@ +use MooseX::Declare; +class SQL::Translator::Parser { + use MooseX::Types::Moose qw(Maybe Str); + use SQL::Translator::Types qw(DBIHandle Translator); + + has 'dbh' => ( + isa => DBIHandle, + is => 'ro', + predicate => 'has_dbh', + ); + + has 'filename' => ( + isa => Str, + is => 'ro', + predicate => 'has_ddl', + ); + + has 'type' => ( + isa => Maybe[Str], + is => 'ro', + predicate => 'has_type', + ); + + has 'translator' => ( + isa => Translator, + is => 'ro', + weak_ref => 1, + required => 1, + handles => [ qw(schema) ], + ); + + method BUILD(@) { + my $role = __PACKAGE__; + if ($self->has_dbh) { + $role .= '::DBI'; + } elsif ($self->has_type || $self->has_ddl) { + $role .= '::DDL'; + } + Class::MOP::load_class($role); + $role->meta->apply($self); + $self->_subclass(); + } +}