implement 'use aliased'
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Object / Table.pm
1 package SQL::Translator::Object::Table;
2 use namespace::autoclean;
3 use Moose;
4 use MooseX::Types::Moose qw(HashRef Str);
5 use MooseX::AttributeHelpers;
6 use SQL::Translator::Types qw(Column Constraint Index Schema Sequence);
7 use SQL::Translator::Object::Schema;
8 extends 'SQL::Translator::Object';
9
10 has 'name' => (
11     is => 'rw',
12     isa => Str,
13     required => 1
14 );
15
16 has 'columns' => (
17     metaclass => 'Collection::Hash',
18     is => 'rw',
19     isa => HashRef[Column],
20     provides => {
21         exists => 'exists_column',
22         keys   => 'column_ids',
23         get    => 'get_column',
24     },
25     curries => {
26         set => {
27             add_column => sub {
28                 my ($self, $body, $column) = @_;
29                 $self->$body($column->name, $column);
30             }
31         }
32     },
33     default => sub { {} },
34     required => 0
35 );
36
37 has 'indexes' => (
38     metaclass => 'Collection::Hash',
39     is => 'rw',
40     isa => HashRef[Index],
41     provides => {
42         exists => 'exists_index',
43         keys   => 'index_ids',
44         get    => 'get_index',
45     },
46     curries => {
47         set => {
48             add_index => sub {
49                 my ($self, $body, $index) = @_;
50                 $self->$body($index->name, $index);
51             }
52         }
53     },
54     default => sub { {} },
55     required => 0
56 );
57
58 has 'constraints' => (
59     metaclass => 'Collection::Hash',
60     is => 'rw',
61     isa => HashRef[Constraint],
62     provides => {
63         exists => 'exists_constraint',
64         keys   => 'constraint_ids',
65         get    => 'get_constraint',
66     },
67     curries => {
68         set => {
69             add_constraint => sub {
70                 my ($self, $body, $constraint) = @_;
71                 $self->$body($constraint->name, $constraint);
72             }
73         }
74     },
75     default => sub { {} },
76     required => 0
77 );
78
79 has 'sequences' => (
80     metaclass => 'Collection::Hash',
81     is => 'rw',
82     isa => HashRef[Sequence],
83     provides => {
84         exists => 'exists_sequence',
85         keys   => 'sequence_ids',
86         get    => 'get_sequence',
87     },
88     curries => {
89         set => {
90             add_sequence => sub {
91                 my ($self, $body, $sequence) = @_;
92                 $self->$body($sequence->name, $sequence);
93             }
94         }
95     },
96     default => sub { {} },
97     required => 0
98 );
99
100 __PACKAGE__->meta->make_immutable;
101
102 1;