add compat methods
[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 SQL::Translator::Types qw(ColumnSize Constraint Trigger);
5     extends 'SQL::Translator::Object';
6     
7     has 'name' => (
8         is => 'rw',
9         isa => Str,
10         required => 1
11     );
12     
13     has 'data_type' => (
14         is => 'rw',
15         isa => Str,
16         required => 1
17     );
18
19     has 'sql_data_type' => (
20         is => 'rw',
21         isa => Int,
22         required => 1
23     );
24     
25     has 'size' => (
26         is => 'rw',
27         isa => ColumnSize,
28         coerce => 1,
29         auto_deref => 1,
30     );
31     
32     has 'is_nullable' => (
33         is => 'rw',
34         isa => Bool,
35         required => 1,
36         default => 1
37     );
38     
39     has 'default_value' => (
40         is => 'rw',
41         isa => Maybe[Str],
42     );
43     
44     has 'comments' => (
45         is => 'rw',
46         isa => Maybe[Str],
47     );
48
49     has 'is_auto_increment' => (
50         is => 'rw',
51         isa => Bool,
52         required => 1,
53         default => 0
54     );
55
56     has 'is_primary_key' => (
57         is => 'rw',
58         isa => Bool,
59         default => 0
60     );
61
62     has 'is_foreign_key' => (
63         is => 'rw',
64         isa => Bool,
65         default => 0
66     );
67
68     has 'foreign_key_reference' => (
69          is => 'rw',
70          isa => Constraint,
71     );
72     
73     has 'trigger' => (
74         is => 'rw',
75         isa => Trigger,
76     );
77
78     has 'extra' => (
79         is => 'rw',
80         isa => HashRef,
81         auto_deref => 1,
82     );
83
84     around size(@args) {
85         $self->$orig(@args) if @args;
86         my @sizes = $self->$orig;
87         return wantarray ? @sizes
88                          : join ',', @sizes;
89     }
90 }