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