package SQL::Translator::Parser::XML::SQLFairy;
# -------------------------------------------------------------------
-# $Id: SQLFairy.pm,v 1.10 2004-08-19 20:41:31 grommit Exp $
-# -------------------------------------------------------------------
# Copyright (C) 2003 Mark Addison <mark.addison@itn.co.uk>,
#
# This program is free software; you can redistribute it and/or
=head1 SYNOPSIS
use SQL::Translator;
- use SQL::Translator::Parser::XML::SQLFairy;
- my $translator = SQL::Translator->new(
- from => 'XML-SQLFairy',
- to => 'MySQL',
- filename => 'schema.xml',
- show_warnings => 1,
- add_drop_table => 1,
- );
+ my $translator = SQL::Translator->new( show_warnings => 1 );
+
+ my $out = $obj->translate(
+ from => 'XML-SQLFairy',
+ to => 'MySQL',
+ filename => 'schema.xml',
+ ) or die $translator->error;
- print $obj->translate;
+ print $out;
=head1 DESCRIPTION
use strict;
use vars qw[ $DEBUG $VERSION @EXPORT_OK ];
-$VERSION = sprintf "%d.%02d", q$Revision: 1.10 $ =~ /(\d+)\.(\d+)/;
+$VERSION = '1.99';
$DEBUG = 0 unless defined $DEBUG;
use Data::Dumper;
);
for my $tblnode (
sort {
- "".$xp->findvalue('sqlf:order|@order',$a)
+ ("".$xp->findvalue('sqlf:order|@order',$a) || 0)
<=>
- "".$xp->findvalue('sqlf:order|@order',$b)
+ ("".$xp->findvalue('sqlf:order|@order',$b) || 0)
} @nodes
) {
debug "Adding table:".$xp->findvalue('sqlf:name',$tblnode);
my $table = $schema->add_table(
- get_tagfields($xp, $tblnode, "sqlf:" => qw/name order/)
+ get_tagfields($xp, $tblnode, "sqlf:" => qw/name order extra/)
) or die $schema->error;
#
foreach (@nodes) {
my %data = get_tagfields($xp, $_, "sqlf:",
qw/name type table fields reference_fields reference_table
- match_type on_delete_do on_update_do/
+ match_type on_delete on_update extra/
);
$table->add_constraint( %data ) or die $table->error;
}
@nodes = $xp->findnodes('sqlf:indices/sqlf:index',$tblnode);
foreach (@nodes) {
my %data = get_tagfields($xp, $_, "sqlf:",
- qw/name type fields options/);
+ qw/name type fields options extra/);
$table->add_index( %data ) or die $table->error;
}
+
+ #
+ # Comments
+ #
+ @nodes = $xp->findnodes('sqlf:comments/sqlf:comment',$tblnode);
+ foreach (@nodes) {
+ my $data = $_->string_value;
+ $table->comments( $data );
+ }
+
} # tables loop
#
);
foreach (@nodes) {
my %data = get_tagfields($xp, $_, "sqlf:",
- qw/name sql fields order/
+ qw/name sql fields order extra/
);
$schema->add_view( %data ) or die $schema->error;
}
'/sqlf:schema/sqlf:trigger|/sqlf:schema/sqlf:triggers/sqlf:trigger'
);
foreach (@nodes) {
- my %data = get_tagfields($xp, $_, "sqlf:",
- qw/name perform_action_when database_event fields on_table action order/
- );
+ my %data = get_tagfields($xp, $_, "sqlf:", qw/
+ name perform_action_when database_event fields on_table action order
+ extra
+ /);
$schema->add_trigger( %data ) or die $schema->error;
}
);
foreach (@nodes) {
my %data = get_tagfields($xp, $_, "sqlf:",
- qw/name sql parameters owner comments order/
+ qw/name sql parameters owner comments order extra/
);
$schema->add_procedure( %data ) or die $schema->error;
}