Commit | Line | Data |
c87fe35d |
1 | package SQL::Translator::Producer; |
a832857f |
2 | use namespace::autoclean; |
c87fe35d |
3 | use Moose; |
a832857f |
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; |
c87fe35d |
52 | |
53 | 1; |