missed some cruft
[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',
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',
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
c4ec1b63 53 my $tables = $self->_tables_list;
b8657f04 54
c4ec1b63 55 $self->schema->tables($self->_tables_list);
56 $self->schema->get_table($_)->columns($self->_columns_info_for($_)) for keys %$tables;
b8657f04 57
c4ec1b63 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);
63# }
b8657f04 64
c4ec1b63 65 print Dumper($self->schema);
b8657f04 66}
67
681;