first try at producing
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Producer.pm
1 package SQL::Translator::Producer;
2 use namespace::autoclean;
3 use Moose;
4 use MooseX::Types::Moose qw(Str);
5 use SQL::Translator::Types qw(Schema);
6
7 use Data::Dumper;
8
9 has 'schema' => (
10   isa => Schema,
11   is => 'rw',
12   required => 1
13 );
14
15 sub 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
25 sub _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;
52
53 1;