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