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
1 use MooseX::Declare;
2 class SQL::Translator::Object::Column extends SQL::Translator::Object {
3     use MooseX::Types::Moose qw(Bool Int Maybe ScalarRef Str);
4     use MooseX::MultiMethods;
5     use SQL::Translator::Types qw(Bit ColumnSize Constraint Table Trigger);
6
7     has 'table' => (
8         is => 'rw',
9         isa => Table,
10         required => 1,
11         weak_ref => 1,
12     );
13     
14     has 'name' => (
15         is => 'rw',
16         isa => Str,
17         required => 1
18     );
19     
20     has 'data_type' => (
21         is => 'rw',
22         isa => Str,
23         required => 1
24     );
25
26     has 'sql_data_type' => (
27         is => 'rw',
28         isa => Int,
29         required => 1
30     );
31     
32     has 'size' => (
33         is => 'rw',
34         isa => ColumnSize,
35         coerce => 1,
36         auto_deref => 1,
37         default => sub { [ 0 ] },
38     );
39     
40     has 'is_nullable' => (
41         is => 'rw',
42         isa => Bit,
43         required => 1,
44         default => 1
45     );
46     
47     has 'default_value' => (
48         is => 'rw',
49         isa => Maybe[ScalarRef|Str],
50     );
51
52     has 'is_auto_increment' => (
53         is => 'rw',
54         isa => Bit,
55         required => 1,
56         coerce => 1,
57         default => 0
58     );
59
60     has 'is_primary_key' => (
61         is => 'rw',
62         isa => Bool,
63         default => 0
64     );
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     );
76     
77     has 'trigger' => (
78         is => 'rw',
79         isa => Trigger,
80     );
81
82     around size(@args) {
83         $self->$orig(@args) if @args;
84         my @sizes = $self->$orig;
85         return wantarray ? @sizes
86                          : join ',', @sizes;
87     }
88
89     method order { }
90     method is_unique { }
91 }