Commit | Line | Data |
4f4fd192 |
1 | use MooseX::Declare; |
2 | class SQL::Translator::Object::Column { |
70ada8ac |
3 | use MooseX::Types::Moose qw(ArrayRef Bool HashRef Int Maybe Str); |
4 | use SQL::Translator::Types qw(ColumnSize Constraint Trigger); |
4f4fd192 |
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', |
81429cb9 |
15 | isa => Str, |
16 | required => 1 |
17 | ); |
18 | |
19 | has 'sql_data_type' => ( |
20 | is => 'rw', |
4f4fd192 |
21 | isa => Int, |
22 | required => 1 |
23 | ); |
24 | |
25 | has 'size' => ( |
26 | is => 'rw', |
70ada8ac |
27 | isa => ColumnSize, |
28 | coerce => 1, |
29 | auto_deref => 1, |
4f4fd192 |
30 | ); |
31 | |
32 | has 'is_nullable' => ( |
33 | is => 'rw', |
34 | isa => Bool, |
35 | required => 1, |
36 | default => 1 |
37 | ); |
38 | |
4f4fd192 |
39 | has 'default_value' => ( |
40 | is => 'rw', |
41 | isa => Maybe[Str], |
42 | ); |
43 | |
2225e251 |
44 | has 'comments' => ( |
4f4fd192 |
45 | is => 'rw', |
46 | isa => Maybe[Str], |
47 | ); |
0874db2d |
48 | |
81429cb9 |
49 | has 'is_auto_increment' => ( |
50 | is => 'rw', |
51 | isa => Bool, |
52 | required => 1, |
53 | default => 0 |
54 | ); |
55 | |
0874db2d |
56 | has 'is_primary_key' => ( |
57 | is => 'rw', |
58 | isa => Bool, |
59 | default => 0 |
60 | ); |
70ada8ac |
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 | ); |
4f4fd192 |
72 | |
73 | has 'trigger' => ( |
74 | is => 'rw', |
75 | isa => Trigger, |
76 | ); |
0874db2d |
77 | |
78 | has 'extra' => ( |
79 | is => 'rw', |
80 | isa => HashRef, |
81 | auto_deref => 1, |
82 | ); |
70ada8ac |
83 | |
84 | around size(@args) { |
85 | $self->$orig(@args) if @args; |
86 | my @sizes = $self->$orig; |
87 | return wantarray ? @sizes |
88 | : join ',', @sizes; |
89 | } |
4f4fd192 |
90 | } |