start of hardcore refactoring
[dbsrgits/SQL-Translator.git] / lib / SQL / Translator / Generator / DDL / SQLServer.pm
CommitLineData
1ea76bff 1package SQL::Translator::Generator::DDL::SQLServer;
2
3use Moo;
4use SQL::Translator::Generator::Utils;
5
6with 'SQL::Translator::Generator::Role::DDL';
7
8sub _build_shim { SQL::Translator::Generator::Utils->new( quote_chars => [qw( [ ] )] ) }
9
10sub _build_type_map {
11 +{
12 date => 'datetime',
13 'time' => 'datetime',
14 }
15}
16
17has sizeless_types => (
18 is => 'ro',
19 builder => '_build_sizeless_types',
20);
21
22sub _build_sizeless_types {
23 +{ map { $_ => 1 }
24 qw( tinyint smallint int integer bigint text bit image datetime ) }
25}
26
27sub field {
28 my ($self, $field) = @_;
29
30 return join ' ', $self->field_name($field), ($self->field_type($field)||die 'type is required'),
31 $self->field_autoinc($field),
32 $self->field_nullable($field),
33 $self->field_default($field),
34}
35
36sub field_type_size {
37 my ($self, $field) = @_;
38
39 ($field->size && !$self->sizeless_types->{$field->data_type}
40 ? '(' . $field->size . ')'
41 : ''
42 )
43}
44
45sub field_autoinc { ( $_[1]->is_auto_increment ? 'IDENTITY' : () ) }
46
471;
48