cleanup of object creation
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Parser / DBI.pm
CommitLineData
b8657f04 1package SQL::Translator::Parser::DBI;
2use Class::MOP;
3use Moose;
4use MooseX::Types::Moose qw(Str);
b8657f04 5use DBI::Const::GetInfoType;
c4ec1b63 6use DBI::Const::GetInfo::ANSI;
7use DBI::Const::GetInfoReturn;
8use SQL::Translator::Types qw(DBIHandle Schema);
9use Data::Dumper;
b8657f04 10extends 'SQL::Translator::Parser';
11
12has 'dbh' => (
13 is => 'rw',
14 isa => DBIHandle,
15 required => 1
16);
17
18has 'translator' => (
19 is => 'rw',
20 does => 'SQL::Translator::Parser::DBI::Dialect',
21 handles => {
c4ec1b63 22 _tables_list => '_tables_list',
23 _table_columns => '_table_columns',
24 _table_pk_info => '_table_pk_info',
c4ec1b63 25 _table_fk_info => '_table_fk_info',
aad333cd 26 _table_uniq_info => '_table_uniq_info',
c4ec1b63 27 _columns_info_for => '_columns_info_for',
28 _extra_column_info => '_extra_column_info',
b8657f04 29 }
30);
31
c4ec1b63 32has 'schema' => (
b8657f04 33 is => 'rw',
c4ec1b63 34 isa => Schema,
b8657f04 35 lazy => 1,
36 required => 1,
c4ec1b63 37 default => sub { shift->translator->schema }
b8657f04 38);
39
40sub BUILD {
41 my $self = shift;
42
43 local $self->dbh->{RaiseError} = 1;
44 local $self->dbh->{PrintError} = 0;
45
46 my $dbtypename = $self->dbh->get_info( $GetInfoType{SQL_DBMS_NAME} ) || $self->dbh->{Driver}{Name};
47
48 my $class = 'SQL::Translator::Parser::DBI::' . $dbtypename;
49 Class::MOP::load_class( $class );
50 my $translator = $class->new( dbh => $self->dbh );
51 $self->translator($translator);
52
aad333cd 53 my $tables = $self->_tables_list; print Dumper($tables);
b8657f04 54
aad333cd 55 $self->schema->tables($tables);
b8657f04 56
aad333cd 57 foreach my $table (keys %$tables) {
58 my $columns = $self->_columns_info_for($table);
59 $self->schema->get_table($table)->columns($columns);
60 }
61# print Dumper($self->schema);
b8657f04 62}
63
641;