X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FParser%2FDDL%2FPostgreSQL.pm;h=95f6cc7a0de8feb199b7a4e9cb378a89a40d52bc;hb=49eb21a3a6910bf8f7109fbfb06f7bb20c4eff33;hp=ed7f44663805eecf322e589afb42ff625625dcbe;hpb=510f91a870458b8182778975c432b8db9644dab2;p=dbsrgits%2FSQL-Translator-2.0-ish.git diff --git a/lib/SQL/Translator/Parser/DDL/PostgreSQL.pm b/lib/SQL/Translator/Parser/DDL/PostgreSQL.pm index ed7f446..95f6cc7 100644 --- a/lib/SQL/Translator/Parser/DDL/PostgreSQL.pm +++ b/lib/SQL/Translator/Parser/DDL/PostgreSQL.pm @@ -2,6 +2,7 @@ use MooseX::Declare; role SQL::Translator::Parser::DDL::PostgreSQL { use MooseX::Types::Moose qw(Str); use MooseX::MultiMethods; + use Moose::Autobox; use SQL::Translator::Constants qw(:sqlt_types :sqlt_constants); use SQL::Translator::Types qw(Schema); use aliased 'SQL::Translator::Object::Column'; @@ -37,7 +38,7 @@ role SQL::Translator::Parser::DDL::PostgreSQL { $schema->add_table($table); $table->extra({ temporary => 1 }) if $tdata->{'temporary'}; - $table->comments( $tdata->{'comments'} ); + $table->comments( [ $tdata->{'comments'}->flatten ]) if $tdata->{comments}; my @fields = sort { $tdata->{'fields'}{ $a }{'order'} <=> $tdata->{'fields'}{ $b }{'order'} } keys %{ $tdata->{'fields'} }; @@ -57,7 +58,7 @@ role SQL::Translator::Parser::DDL::PostgreSQL { $field->comments($fdata->{comments}); $table->add_column($field); - $table->primary_key($field->name) if $fdata->{is_primary_key}; + $field->is_primary_key(1) if $fdata->{is_primary_key}; for my $cdata ( @{ $fdata->{constraints} } ) { next unless lc $cdata->{type} eq 'foreign_key'; @@ -78,10 +79,11 @@ role SQL::Translator::Parser::DDL::PostgreSQL { for my $cdata ( @{ $tdata->{'constraints'} || [] } ) { my $constraint; - if (uc $cdata->{type} eq 'PRIMARY_KEY') { + $cdata->{type} =~ s/_/ /g; + if (uc $cdata->{type} eq PRIMARY_KEY) { $constraint = PrimaryKey->new({ name => $cdata->{name} || '', table => $table }); $table->get_column($_)->is_primary_key(1) for @{$cdata->{fields}}; - } elsif (uc $cdata->{type} eq 'FOREIGN_KEY') { + } elsif (uc $cdata->{type} eq FOREIGN_KEY) { $constraint = ForeignKey->new({ name => $cdata->{name} || '', table => $table, reference_table => $cdata->{reference_table},