add table for reference
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Object / Column.pm
1 use MooseX::Declare;
2 class SQL::Translator::Object::Column {
3     use MooseX::Types::Moose qw(ArrayRef Bool HashRef Int Maybe Str);
4     use MooseX::MultiMethods;
5     use SQL::Translator::Types qw(ColumnSize Constraint Table Trigger);
6     extends 'SQL::Translator::Object';
7
8     has 'table' => (
9         is => 'rw',
10         isa => Table,
11         required => 1,
12         weak_ref => 1,
13     );
14     
15     has 'name' => (
16         is => 'rw',
17         isa => Str,
18         required => 1
19     );
20     
21     has 'data_type' => (
22         is => 'rw',
23         isa => Str,
24         required => 1
25     );
26
27     has 'sql_data_type' => (
28         is => 'rw',
29         isa => Int,
30         required => 1
31     );
32     
33     has 'size' => (
34         is => 'rw',
35         isa => ColumnSize,
36         coerce => 1,
37         auto_deref => 1,
38     );
39     
40     has 'is_nullable' => (
41         is => 'rw',
42         isa => Bool,
43         required => 1,
44         default => 1
45     );
46     
47     has 'default_value' => (
48         is => 'rw',
49         isa => Maybe[Str],
50     );
51
52     has 'is_auto_increment' => (
53         is => 'rw',
54         isa => Bool,
55         required => 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     has 'extra' => (
82         is => 'rw',
83         isa => HashRef,
84         auto_deref => 1,
85     );
86
87     around size(@args) {
88         $self->$orig(@args) if @args;
89         my @sizes = $self->$orig;
90         return wantarray ? @sizes
91                          : join ',', @sizes;
92     }
93
94     method order { }
95     method is_unique { }
96 }