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