1 package SQL::Translator::Generator::Role::DDL;
5 requires '_build_shim';
6 requires '_build_type_map';
7 requires '_build_numeric_types';
8 requires '_build_unquoted_defaults';
9 requires 'field_type_size';
13 builder => '_build_shim',
18 builder => '_build_type_map',
21 has numeric_types => (
23 builder => '_build_numeric_types',
26 has unquoted_defaults => (
28 builder => '_build_unquoted_defaults',
31 # would also be handy to have a required size set if there is such a thing
33 sub field_name { $_[0]->shim->quote($_[1]->name) }
36 ( $_[1]->comments ? ('-- ' . $_[1]->comments . "\n ") : () )
39 sub field_nullable { ($_[1]->is_nullable ? $_[0]->nullable : 'NOT NULL' ) }
42 return () if !defined $_[1]->default_value;
44 my $val = $_[1]->default_value;
45 $val = "'$val'" unless $_[0]->numeric_types->{$_[1]->data_type};
46 return ( "DEFAULT $val" )
50 my ($self, $field) = @_;
52 my $field_type = $field->data_type;
53 ($self->type_map->{$field_type} || $field_type).$self->field_type_size($field)
56 sub nullable { 'NULL' }