Commit | Line | Data |
a1552a5a |
1 | package SQL::Translator::Generator::DDL::SQLite; |
2 | |
3 | use Moo; |
4 | use SQL::Translator::Generator::Utils; |
5 | |
6 | with 'SQL::Translator::Generator::Role::DDL'; |
7 | |
8 | sub _build_shim { SQL::Translator::Generator::Utils->new( quote_chars => q(") ) } |
9 | |
10 | sub _build_type_map { |
11 | +{ |
12 | date => 'datetime', |
13 | 'time' => 'datetime', |
14 | } |
15 | } |
16 | |
17 | has sizeless_types => ( |
18 | is => 'ro', |
19 | builder => '_build_sizeless_types', |
20 | ); |
21 | |
22 | sub _build_sizeless_types { +{ text => 1 } } |
23 | sub _build_numeric_types { +{ int => 1, tinyint => 1 } } |
24 | |
25 | sub _build_unquoted_defaults { |
26 | +{ |
27 | NULL => 1, |
28 | 'now()' => 1, |
29 | CURRENT_TIMESTAMP => 1, |
30 | } |
31 | } |
32 | |
33 | sub nullable { () } |
34 | |
35 | sub field { |
36 | my ($self, $field) = @_; |
37 | |
38 | return join ' ', |
39 | $self->field_comments($field), |
40 | $self->field_name($field), |
41 | ( $field->is_auto_increment |
42 | ? ( 'INTEGER PRIMARY KEY' ) |
43 | : ( $self->field_type($field) ) |
44 | ), |
45 | $self->field_nullable($field), |
46 | $self->field_default($field), |
47 | } |
48 | |
49 | sub field_type_size { |
50 | my ($self, $field) = @_; |
51 | |
52 | ($field->size && !$self->sizeless_types->{$field->data_type} |
53 | ? '(' . $field->size . ')' |
54 | : '' |
55 | ) |
56 | } |
57 | |
58 | sub field_autoinc { ( $_[1]->is_auto_increment ? 'IDENTITY' : () ) } |
59 | |
60 | 1; |
61 | |