move to MooseX::Declare extends style
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Object / Schema.pm
1 use MooseX::Declare;
2 class SQL::Translator::Object::Schema extends SQL::Translator::Object {
3     use MooseX::Types::Moose qw(HashRef Maybe Str);
4     use MooseX::AttributeHelpers;
5     use SQL::Translator::Types qw(Procedure Table Trigger View);
6  
7     has 'name' => (
8         is => 'rw',
9         isa => Maybe[Str],
10         required => 1,
11         default => ''
12     );
13     
14     has 'tables' => (
15         metaclass => 'Collection::Hash',
16         is => 'rw',
17         isa => HashRef[Table],
18         provides => {
19             exists => 'exists_table',
20             keys   => 'table_ids',
21             values => 'get_tables',
22             get    => 'get_table',
23             set    => 'add_table',
24         },
25         default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash },
26     );
27     
28     has 'views' => (
29         metaclass => 'Collection::Hash',
30         is => 'rw',
31         isa => HashRef[View],
32         provides => {
33             exists => 'exists_view',
34             keys   => 'view_ids',
35             values => 'get_views',
36             get    => 'get_view',
37             set    => 'add_view',
38         },
39         default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash },
40     );
41     
42     has 'procedures' => (
43         metaclass => 'Collection::Hash',
44         is => 'rw',
45         isa => HashRef[Procedure],
46         provides => {
47             exists => 'exists_procedure',
48             keys   => 'procedure_ids',
49             values => 'get_procedures',
50             get    => 'get_procedure',
51             set    => 'add_procedure',
52         },
53         default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash },
54     );
55
56     has 'triggers' => (
57         metaclass => 'Collection::Hash',
58         is => 'rw',
59         isa => HashRef[Trigger],
60         provides => {
61             exists => 'exists_trigger',
62             keys   => 'trigger_ids',
63             values => 'get_triggers',
64             get    => 'get_trigger',
65             set    => 'add_trigger',
66         },
67         default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash },
68     );
69
70     around add_table(Table $table) { $self->$orig($table->name, $table) }
71     around add_view(View $view) { $self->$orig($view->name, $view) }
72     around add_procedure(Procedure $procedure) { $self->$orig($procedure->name, $procedure) }
73     around add_trigger(Trigger $trigger) { $self->$orig($trigger->name, $trigger) }
74
75     method is_valid { 1 }
76
77     method order { }
78     method perform_action_when { }
79     method database_events { }
80     method fields { }
81     method on_table { }
82     method action { }
83 }