use SQL::Translator;
- my $t = SQL::Translator->new( parser => '...',
+ my $t = SQL::Translator->new( parser => '...',
producer => 'DBIx::Class::File' );
print $translator->translate( $file );
use SQL::Translator::Schema::Constants;
use SQL::Translator::Utils qw(header_comment);
+use Data::Dumper ();
## Skip all column type translation, as we want to use whatever the parser got.
my $output = '';
# Steal the XML producers "prefix" arg for our namespace?
- my $dbixschema = $translator->producer_args()->{prefix} ||
+ my $dbixschema = $translator->producer_args()->{prefix} ||
$schema->name || 'My::Schema';
my $pkclass = $parser2PK{$translator->parser_type} || '';
$tt_vars{pkclass} = $pkclass;
my $schemaoutput .= << "DATA";
+
package ${dbixschema};
use base 'DBIx::Class::Schema';
+use strict;
+use warnings;
DATA
my %tableoutput = ();
{
my $tname = $table->name;
my $output .= qq{
+
package ${dbixschema}::${tname};
use base 'DBIx::Class';
+use strict;
+use warnings;
__PACKAGE__->load_components(qw/${pkclass} Core/);
__PACKAGE__->table('${tname}');
};
- my @fields = map
+ my @fields = map
{ { $_->name => {
name => $_->name,
is_auto_increment => $_->is_auto_increment,
{
local $Data::Dumper::Terse = 1;
$output .= "\n '" . (keys %$f)[0] . "' => " ;
- my $colinfo =
+ my $colinfo =
Data::Dumper->Dump([values %$f],
[''] # keys %$f]
);
{
my @pk = map { $_->name } ($pk->fields);
$output .= "__PACKAGE__->set_primary_key(";
- $output .= "'" . join("', '", @pk) . "');";
+ $output .= "'" . join("', '", @pk) . "');\n";
}
foreach my $cont ($table->get_constraints)
# print Data::Dumper::Dumper($cont->type);
if($cont->type =~ /foreign key/i)
{
- $output .= "\n__PACKAGE__->belongs_to('" .
+# $output .= "\n__PACKAGE__->belongs_to('" .
+# $cont->fields->[0]->name . "', '" .
+# "${dbixschema}::" . $cont->reference_table . "');\n";
+
+ $tableextras{$table->name} .= "\n__PACKAGE__->belongs_to('" .
$cont->fields->[0]->name . "', '" .
"${dbixschema}::" . $cont->reference_table . "');\n";
-
+
my $other = "\n__PACKAGE__->has_many('" .
"get_" . $table->name. "', '" .
"${dbixschema}::" . $table->name. "', '" .
}
}
- $tableoutput{$table->name} = $output;
+ $tableoutput{$table->name} .= $output;
}
- foreach my $te (keys %tableextras)
+ foreach my $to (keys %tableoutput)
{
- $tableoutput{$te} .= $tableextras{$te} . "\n";
+ $output .= $tableoutput{$to};
+ $schemaoutput .= "\n__PACKAGE__->register_class('${to}', '${dbixschema}::${to}');\n";
}
- $schemaoutput .= "\n__PACKAGE__->load_classes(";
- foreach my $to (keys %tableoutput)
+ foreach my $te (keys %tableextras)
{
- $output .= $tableoutput{$to};
- $schemaoutput .= "'${to}',";
+ $output .= "\npackage ${dbixschema}::$te;\n";
+ $output .= $tableextras{$te} . "\n";
+# $tableoutput{$te} .= $tableextras{$te} . "\n";
}
- chop $schemaoutput;
- $schemaoutput .= ");\n";
# print "$output\n";
- return $schemaoutput . $output . "\n1;\n";
+ return "${output}\n\n${schemaoutput}\n1;\n";
}