X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FSQL-Translator.git;a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FProducer%2FYAML.pm;h=c5055ff544b5cb5e002210afdc39ea343a451cdc;hp=25fa66f71d8b9e7ca0a95c213c92149e6b338ff9;hb=c0ec0e22d3f0e3852c00daac5ef5763010b410c3;hpb=62bff80557556f36704816a1eaebb23708033ae3 diff --git a/lib/SQL/Translator/Producer/YAML.pm b/lib/SQL/Translator/Producer/YAML.pm index 25fa66f..c5055ff 100644 --- a/lib/SQL/Translator/Producer/YAML.pm +++ b/lib/SQL/Translator/Producer/YAML.pm @@ -1,25 +1,5 @@ package SQL::Translator::Producer::YAML; -# ------------------------------------------------------------------- -# $Id: YAML.pm,v 1.12 2005-06-15 18:00:31 kycl4rk Exp $ -# ------------------------------------------------------------------- -# Copyright (C) 2002-4 SQLFairy Authors -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; version 2. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307 USA -# ------------------------------------------------------------------- - =head1 NAME SQL::Translator::Producer::YAML - A YAML producer for SQL::Translator @@ -40,32 +20,31 @@ takes a long time. =cut use strict; -use vars qw($VERSION); -$VERSION = sprintf "%d.%02d", q$Revision: 1.12 $ =~ /(\d+)\.(\d+)/; +use warnings; +our $VERSION = '1.59'; use YAML qw(Dump); -# ------------------------------------------------------------------- sub produce { my $translator = shift; my $schema = $translator->schema; return Dump({ schema => { - tables => { + tables => { map { ($_->name => view_table($_)) } $schema->get_tables, }, - views => { + views => { map { ($_->name => view_view($_)) } $schema->get_views, }, - triggers => { + triggers => { map { ($_->name => view_trigger($_)) } $schema->get_triggers, }, - procedures => { - map { ($_->name => view_procedure($_)) } + procedures => { + map { ($_->name => view_procedure($_)) } $schema->get_procedures, }, }, @@ -80,11 +59,11 @@ sub produce { show_warnings => $translator->show_warnings, trace => $translator->trace, version => $translator->version, - } + }, + keys %{$schema->extra} ? ('extra' => { $schema->extra } ) : (), }); } -# ------------------------------------------------------------------- sub view_table { my $table = shift; @@ -92,58 +71,58 @@ sub view_table { 'name' => $table->name, 'order' => $table->order, 'options' => $table->options || [], - 'comments' => $table->comments || '', + $table->comments ? ('comments' => [ $table->comments ] ) : (), 'constraints' => [ map { view_constraint($_) } $table->get_constraints ], 'indices' => [ map { view_index($_) } $table->get_indices ], - 'fields' => { + 'fields' => { map { ($_->name => view_field($_)) } - $table->get_fields + $table->get_fields }, + keys %{$table->extra} ? ('extra' => { $table->extra } ) : (), }; } -# ------------------------------------------------------------------- sub view_constraint { my $constraint = shift; return { 'deferrable' => scalar $constraint->deferrable, 'expression' => scalar $constraint->expression, - 'fields' => scalar $constraint->field_names, + 'fields' => [ map { ref $_ ? $_->name : $_ } $constraint->field_names ], 'match_type' => scalar $constraint->match_type, 'name' => scalar $constraint->name, 'options' => scalar $constraint->options, 'on_delete' => scalar $constraint->on_delete, 'on_update' => scalar $constraint->on_update, - 'reference_fields' => scalar $constraint->reference_fields, + 'reference_fields' => [ map { ref $_ ? $_->name : $_ } $constraint->reference_fields ], 'reference_table' => scalar $constraint->reference_table, 'type' => scalar $constraint->type, + keys %{$constraint->extra} ? ('extra' => { $constraint->extra } ) : (), }; } -# ------------------------------------------------------------------- sub view_field { my $field = shift; return { - 'order' => scalar $field->order, - 'name' => scalar $field->name, - 'data_type' => scalar $field->data_type, - 'size' => [ $field->size ], - 'default_value' => scalar $field->default_value, - 'is_nullable' => scalar $field->is_nullable, - 'is_primary_key' => scalar $field->is_primary_key, - 'is_unique' => scalar $field->is_unique, - 'comments' => $field->comments || '', - 'extra' => { $field->extra }, + 'order' => scalar $field->order, + 'name' => scalar $field->name, + 'data_type' => scalar $field->data_type, + 'size' => [ $field->size ], + 'default_value' => scalar $field->default_value, + 'is_nullable' => scalar $field->is_nullable, + 'is_primary_key' => scalar $field->is_primary_key, + 'is_unique' => scalar $field->is_unique, + $field->is_auto_increment ? ('is_auto_increment' => 1) : (), + $field->comments ? ('comments' => [ $field->comments ]) : (), + keys %{$field->extra} ? ('extra' => { $field->extra } ) : (), }; } -# ------------------------------------------------------------------- sub view_procedure { my $procedure = shift; @@ -154,10 +133,10 @@ sub view_procedure { 'parameters' => scalar $procedure->parameters, 'owner' => scalar $procedure->owner, 'comments' => scalar $procedure->comments, + keys %{$procedure->extra} ? ('extra' => { $procedure->extra } ) : (), }; } -# ------------------------------------------------------------------- sub view_trigger { my $trigger = shift; @@ -165,14 +144,15 @@ sub view_trigger { 'order' => scalar $trigger->order, 'name' => scalar $trigger->name, 'perform_action_when' => scalar $trigger->perform_action_when, - 'database_event' => scalar $trigger->database_event, + 'database_events' => scalar $trigger->database_events, 'fields' => scalar $trigger->fields, 'on_table' => scalar $trigger->on_table, 'action' => scalar $trigger->action, + 'scope' => scalar $trigger->scope, + keys %{$trigger->extra} ? ('extra' => { $trigger->extra } ) : (), }; } -# ------------------------------------------------------------------- sub view_view { my $view = shift; @@ -181,10 +161,10 @@ sub view_view { 'name' => scalar $view->name, 'sql' => scalar $view->sql, 'fields' => scalar $view->fields, + keys %{$view->extra} ? ('extra' => { $view->extra } ) : (), }; } -# ------------------------------------------------------------------- sub view_index { my $index = shift; @@ -193,13 +173,12 @@ sub view_index { 'type' => scalar $index->type, 'fields' => scalar $index->fields, 'options' => scalar $index->options, + keys %{$index->extra} ? ('extra' => { $index->extra } ) : (), }; } 1; -# ------------------------------------------------------------------- - =head1 SEE ALSO SQL::Translator, YAML, http://www.yaml.org/. @@ -207,6 +186,6 @@ SQL::Translator, YAML, http://www.yaml.org/. =head1 AUTHORS darren chamberlain Edarren@cpan.orgE, -Ken Y. Clark Ekclark@cpan.orgE. +Ken Youens-Clark Ekclark@cpan.orgE. =cut