71eda45d1af0d40745c58e8e715f42a94b710188
[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 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     );
38     
39     has 'is_nullable' => (
40         is => 'rw',
41         isa => Bool,
42         required => 1,
43         default => 1
44     );
45     
46     has 'default_value' => (
47         is => 'rw',
48         isa => Maybe[Str],
49     );
50
51     has 'is_auto_increment' => (
52         is => 'rw',
53         isa => Bit,
54         required => 1,
55         coerce => 1,
56         default => 0
57     );
58
59     has 'is_primary_key' => (
60         is => 'rw',
61         isa => Bool,
62         default => 0
63     );
64
65     has 'is_foreign_key' => (
66         is => 'rw',
67         isa => Bool,
68         default => 0
69     );
70
71     has 'foreign_key_reference' => (
72          is => 'rw',
73          isa => Constraint,
74     );
75     
76     has 'trigger' => (
77         is => 'rw',
78         isa => Trigger,
79     );
80
81     around size(@args) {
82         $self->$orig(@args) if @args;
83         my @sizes = $self->$orig;
84         return wantarray ? @sizes
85                          : join ',', @sizes;
86     }
87
88     method order { }
89     method is_unique { }
90 }