move to MooseX::Declare extends style
[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(ArrayRef Bool HashRef Int Maybe Str);
4     use MooseX::MultiMethods;
5     use SQL::Translator::Types qw(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 => Bool,
54         required => 1,
55         default => 0
56     );
57
58     has 'is_primary_key' => (
59         is => 'rw',
60         isa => Bool,
61         default => 0
62     );
63
64     has 'is_foreign_key' => (
65         is => 'rw',
66         isa => Bool,
67         default => 0
68     );
69
70     has 'foreign_key_reference' => (
71          is => 'rw',
72          isa => Constraint,
73     );
74     
75     has 'trigger' => (
76         is => 'rw',
77         isa => Trigger,
78     );
79
80     around size(@args) {
81         $self->$orig(@args) if @args;
82         my @sizes = $self->$orig;
83         return wantarray ? @sizes
84                          : join ',', @sizes;
85     }
86
87     method order { }
88     method is_unique { }
89 }