first try at producing
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Producer.pm
CommitLineData
c87fe35d 1package SQL::Translator::Producer;
a832857f 2use namespace::autoclean;
c87fe35d 3use Moose;
a832857f 4use MooseX::Types::Moose qw(Str);
5use SQL::Translator::Types qw(Schema);
6
7use Data::Dumper;
8
9has 'schema' => (
10 isa => Schema,
11 is => 'rw',
12 required => 1
13);
14
15sub produce {
16 my $self = shift;
17 my $schema = $self->schema;
18
19 my $tables = $schema->tables;
20 foreach my $tname (keys %$tables) {
21 $self->_create_table($tables->{$tname});
22 }
23}
24
25sub _create_table {
26 my $self = shift;
27 my $table = shift;
28
29 my $no_comments = 0;
30 my $add_drop_table = 1;
31 my $sqlite_version = 0;
32
33 my $create_table;
34
35 $create_table .= 'DROP TABLE ' . $table->name . ";\n" if $add_drop_table;
36 $create_table .= "CREATE TABLE " . $table->name . " (\n";
37
38 my $columns = $table->columns;
39 foreach my $cname (keys %$columns) {
40 my $column = $columns->{$cname};
41 $create_table .= ' ' . $column->name . ' ' . $column->data_type;
42 $create_table .= '(' . $column->size . ')' if $column->size;
43 $create_table .= ' NOT NULL' unless $column->is_nullable;
44 $create_table .= ",\n";
45 }
46 $create_table =~ s/,$//;
47 $create_table .= ");";
48 print $create_table . "\n";
49}
50
51__PACKAGE__->meta->make_immutable;
c87fe35d 52
531;