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