move to MooseX::Declare
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Object / Schema.pm
1 use MooseX::Declare;
2 class SQL::Translator::Object::Schema {
3     use MooseX::Types::Moose qw(HashRef Maybe Str);
4     use MooseX::AttributeHelpers;
5     use SQL::Translator::Types qw(Procedure Table View);
6     extends 'SQL::Translator::Object';
7     
8     has 'name' => (
9         is => 'rw',
10         isa => Maybe[Str],
11         required => 1,
12         default => ''
13     );
14     
15     has 'tables' => (
16         metaclass => 'Collection::Hash',
17         is => 'rw',
18         isa => HashRef[Table],
19         provides => {
20             exists => 'exists_table',
21             keys   => 'table_ids',
22             get    => 'get_table',
23         },
24         curries => {
25             set => {
26                 add_table => sub {
27                     my ($self, $body, $table) = @_;
28                     $self->$body($table->name, $table);
29                 }
30             }
31         },
32         default => sub { {} },
33     );
34     
35     has 'views' => (
36         metaclass => 'Collection::Hash',
37         is => 'rw',
38         isa => HashRef[View],
39         provides => {
40             exists => 'exists_view',
41             keys   => 'view_ids',
42             get    => 'get_view',
43         },
44         curries => {
45             set => { 
46                 add_view => sub {
47                     my ($self, $body, $view) = @_;
48                     $self->$body($view->name, $view);
49                 }
50             }
51         },
52         default => sub { {} },
53     );
54     
55     has 'procedures' => (
56         metaclass => 'Collection::Hash',
57         is => 'rw',
58         isa => HashRef[Procedure],
59         provides => {
60             exists => 'exists_procedure',
61             keys   => 'procedure_ids',
62             get    => 'get_procedure',
63         },
64         curries => {
65             set => {
66                 add_procedure => sub {
67                     my ($self, $body, $procedure) = @_;
68                     $self->$body($procedure->name, $procedure);
69                 }
70             }
71         },
72         default => sub { {} },
73     );
74 }