X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FParser%2FDDL%2FYAML.pm;h=9b9da8a6e9acc4eedd96e4f977defcde34c09e3d;hb=c3569998fe116f0abbe90b6dfe38a41e80ac7e23;hp=a02143ec3b953cf3be9b430ebc186cb954c1a937;hpb=5fdf332978b3c05239819b059f243726185e434b;p=dbsrgits%2FSQL-Translator-2.0-ish.git diff --git a/lib/SQL/Translator/Parser/DDL/YAML.pm b/lib/SQL/Translator/Parser/DDL/YAML.pm index a02143e..9b9da8a 100644 --- a/lib/SQL/Translator/Parser/DDL/YAML.pm +++ b/lib/SQL/Translator/Parser/DDL/YAML.pm @@ -30,12 +30,14 @@ role SQL::Translator::Parser::DDL::YAML { keys %{ $data->{'tables'} }; for my $tdata ( @tables ) { - my $table = Table->new({ map { $tdata->{$_} ? ($_ => $tdata->{$_}) : () } qw/name extra options/ }); + my $table = Table->new({ name => $tdata->{name}, schema => $schema }); + $table->extra($tdata->{extra}) if $tdata->{extra}; + $table->options($tdata->{options}) if $tdata->{options}; $schema->add_table($table); - + my @fields = map { $tdata->{'fields'}{ $_->[1] } } - map { [ $tdata->{'fields'}{ $_ }{'order'}, $_ ] } + map { [ $tdata->{'fields'}{ $_ }{'order'} || 0, $_ ] } keys %{ $tdata->{'fields'} }; for my $fdata ( @fields ) { @@ -44,7 +46,7 @@ role SQL::Translator::Parser::DDL::YAML { my $column = Column->new($fdata); $table->add_column($column); - $table->primary_key($column->name) if $fdata->{is_primary_key}; + $column->is_primary_key(1) if $fdata->{is_primary_key}; } for my $idata ( @{ $tdata->{'indices'} || [] } ) { @@ -58,8 +60,9 @@ role SQL::Translator::Parser::DDL::YAML { for my $cdata ( @{ $tdata->{'constraints'} || [] } ) { $cdata->{table} = $table; - $cdata->{reference_columns} = delete $cdata->{reference_fields}; + $cdata->{reference_columns} = delete $cdata->{reference_fields} || []; my $columns = delete $cdata->{fields} || []; + $columns = ref $columns eq 'ARRAY' ? $columns : [ $columns ]; my $constraint = Constraint->new($cdata); $constraint->add_column($table->get_column($_)) for @$columns; $table->add_constraint($constraint); @@ -102,8 +105,8 @@ role SQL::Translator::Parser::DDL::YAML { map { [ $data->{'procedures'}{ $_ }{'order'}, $_ ] } keys %{ $data->{'procedures'} }; - for my $tdata ( @procedures ) { - my $procedure = Procedure->new($tdata); + for my $pdata ( @procedures ) { + my $procedure = Procedure->new($pdata); $schema->add_procedure($procedure); } @@ -119,6 +122,6 @@ role SQL::Translator::Parser::DDL::YAML { $translator->trace( $tr_data->{'trace'} ); } - return $schema; + return 1; } }