1 package SQL::Translator::Parser::DBI;
4 use MooseX::Types::Moose qw(Str);
5 use DBI::Const::GetInfoType;
6 use DBI::Const::GetInfo::ANSI;
7 use DBI::Const::GetInfoReturn;
8 use SQL::Translator::Types qw(DBIHandle Schema);
10 extends 'SQL::Translator::Parser';
20 does => 'SQL::Translator::Parser::DBI::Dialect',
22 _tables_list => '_tables_list',
23 _table_columns => '_table_columns',
24 _table_pk_info => '_table_pk_info',
25 _table_uniq_info => '_table_uniq_info',
26 _table_fk_info => '_table_fk_info',
27 _columns_info_for => '_columns_info_for',
28 _extra_column_info => '_extra_column_info',
37 default => sub { shift->translator->schema }
43 local $self->dbh->{RaiseError} = 1;
44 local $self->dbh->{PrintError} = 0;
46 my $dbtypename = $self->dbh->get_info( $GetInfoType{SQL_DBMS_NAME} ) || $self->dbh->{Driver}{Name};
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);
53 my $tables = $self->_tables_list;
55 $self->schema->tables($self->_tables_list);
56 $self->schema->get_table($_)->columns($self->_columns_info_for($_)) for keys %$tables;
58 # foreach my $table (keys %$tables) {
59 # my $columns = $self->_columns_info_for($table);
60 # my $table = $self->schema->get_table($key);
61 # $table->columns($columns);
62 # $self->schema->get_table($key)->columns($columns);
65 print Dumper($self->schema);