make is_nullable a Bit and default the column size to [ 0 ]
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Object / Column.pm
CommitLineData
4f4fd192 1use MooseX::Declare;
ebf2721d 2class SQL::Translator::Object::Column extends SQL::Translator::Object {
1ddd6d2a 3 use MooseX::Types::Moose qw(Bool Int Maybe ScalarRef Str);
f49a2a49 4 use MooseX::MultiMethods;
ada068ed 5 use SQL::Translator::Types qw(Bit ColumnSize Constraint Table Trigger);
f49a2a49 6
7 has 'table' => (
8 is => 'rw',
9 isa => Table,
10 required => 1,
11 weak_ref => 1,
12 );
4f4fd192 13
14 has 'name' => (
15 is => 'rw',
16 isa => Str,
17 required => 1
18 );
19
20 has 'data_type' => (
21 is => 'rw',
81429cb9 22 isa => Str,
23 required => 1
24 );
25
26 has 'sql_data_type' => (
27 is => 'rw',
4f4fd192 28 isa => Int,
29 required => 1
30 );
31
32 has 'size' => (
33 is => 'rw',
70ada8ac 34 isa => ColumnSize,
35 coerce => 1,
36 auto_deref => 1,
2cb42d47 37 default => sub { [ 0 ] },
4f4fd192 38 );
39
40 has 'is_nullable' => (
41 is => 'rw',
2cb42d47 42 isa => Bit,
4f4fd192 43 required => 1,
44 default => 1
45 );
46
4f4fd192 47 has 'default_value' => (
48 is => 'rw',
1ddd6d2a 49 isa => Maybe[ScalarRef|Str],
4f4fd192 50 );
0874db2d 51
81429cb9 52 has 'is_auto_increment' => (
53 is => 'rw',
ada068ed 54 isa => Bit,
81429cb9 55 required => 1,
ada068ed 56 coerce => 1,
81429cb9 57 default => 0
58 );
59
0874db2d 60 has 'is_primary_key' => (
61 is => 'rw',
62 isa => Bool,
63 default => 0
64 );
70ada8ac 65
66 has 'is_foreign_key' => (
67 is => 'rw',
68 isa => Bool,
69 default => 0
70 );
71
72 has 'foreign_key_reference' => (
73 is => 'rw',
74 isa => Constraint,
75 );
4f4fd192 76
77 has 'trigger' => (
78 is => 'rw',
79 isa => Trigger,
80 );
0874db2d 81
70ada8ac 82 around size(@args) {
83 $self->$orig(@args) if @args;
84 my @sizes = $self->$orig;
85 return wantarray ? @sizes
86 : join ',', @sizes;
87 }
b750d2f1 88
89 method order { }
90 method is_unique { }
4f4fd192 91}