start of hardcore refactoring
[dbsrgits/SQL-Translator.git] / lib / SQL / Translator / Generator / Role / DDL.pm
CommitLineData
1ea76bff 1package SQL::Translator::Generator::Role::DDL;
2
3use Moo::Role;
4
5requires '_build_shim';
6requires '_build_type_map';
7requires 'field_type_size';
8
9has shim => (
10 is => 'ro',
11 builder => '_build_shim',
12);
13
14has type_map => (
15 is => 'ro',
16 builder => '_build_type_map',
17);
18
19# would also be handy to have a required size set if there is such a thing
20
21sub field_name { $_[0]->shim->quote($_[1]->name) }
22
23sub field_nullable { ($_[1]->is_nullable ? 'NULL' : 'NOT NULL' ) }
24
25sub field_default {
26 (defined $_[1]->default_value ? 'DEFAULT ' . q(') . $_[1]->default_value . q(') : () )
27}
28
29sub field_type {
30 my ($self, $field) = @_;
31
32 my $field_type = $field->data_type;
33 ($self->type_map->{$field_type} || $field_type).$self->field_type_size($field)
34}
35
361;