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 make_create_string => 'make_create_string',
23 make_update_string => 'make_update_string',
24 _tables_list => '_tables_list',
25 _table_columns => '_table_columns',
26 _table_pk_info => '_table_pk_info',
27 _table_uniq_info => '_table_uniq_info',
28 _table_fk_info => '_table_fk_info',
29 _columns_info_for => '_columns_info_for',
30 _extra_column_info => '_extra_column_info',
39 default => sub { shift->translator->schema }
45 local $self->dbh->{RaiseError} = 1;
46 local $self->dbh->{PrintError} = 0;
48 my $dbtypename = $self->dbh->get_info( $GetInfoType{SQL_DBMS_NAME} ) || $self->dbh->{Driver}{Name};
50 my $class = 'SQL::Translator::Parser::DBI::' . $dbtypename;
51 Class::MOP::load_class( $class );
52 my $translator = $class->new( dbh => $self->dbh );
53 $self->translator($translator);
55 my $tables = $self->_tables_list;
57 $self->schema->tables($self->_tables_list);
58 $self->schema->get_table($_)->columns($self->_columns_info_for($_)) for keys %$tables;
60 # foreach my $table (keys %$tables) {
61 # my $columns = $self->_columns_info_for($table);
62 # my $table = $self->schema->get_table($key);
63 # $table->columns($columns);
64 # $self->schema->get_table($key)->columns($columns);
67 print Dumper($self->schema);