Commit | Line | Data |
4f4fd192 |
1 | use MooseX::Declare; |
ebf2721d |
2 | class SQL::Translator::Object::Schema extends SQL::Translator::Object { |
4f4fd192 |
3 | use MooseX::Types::Moose qw(HashRef Maybe Str); |
a939ce63 |
4 | use SQL::Translator::Types qw(Procedure Table Trigger View); |
a939ce63 |
5 | |
4f4fd192 |
6 | has 'name' => ( |
7 | is => 'rw', |
8 | isa => Maybe[Str], |
9 | required => 1, |
10 | default => '' |
11 | ); |
57544e0b |
12 | |
13 | has 'database' => ( |
14 | is => 'rw', |
15 | isa => Maybe[Str], |
16 | ); |
4f4fd192 |
17 | |
18 | has 'tables' => ( |
28bd628e |
19 | traits => ['Hash'], |
4f4fd192 |
20 | is => 'rw', |
21 | isa => HashRef[Table], |
28bd628e |
22 | handles => { |
23 | exists_table => 'exists', |
24 | table_ids => 'keys', |
25 | get_tables => 'values', |
26 | get_table => 'get', |
27 | add_table => 'set', |
4f4fd192 |
28 | }, |
b5ce8643 |
29 | default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash }, |
4f4fd192 |
30 | ); |
31 | |
32 | has 'views' => ( |
28bd628e |
33 | traits => ['Hash'], |
4f4fd192 |
34 | is => 'rw', |
35 | isa => HashRef[View], |
28bd628e |
36 | handles => { |
37 | exists_view => 'exists', |
38 | view_ids => 'keys', |
39 | get_views => 'values', |
40 | get_view => 'get', |
41 | add_view => 'set', |
4f4fd192 |
42 | }, |
7c120f08 |
43 | default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash }, |
4f4fd192 |
44 | ); |
45 | |
46 | has 'procedures' => ( |
28bd628e |
47 | traits => ['Hash'], |
4f4fd192 |
48 | is => 'rw', |
49 | isa => HashRef[Procedure], |
28bd628e |
50 | handles => { |
51 | exists_procedure => 'exists', |
52 | procedure_ids => 'keys', |
53 | get_procedures => 'values', |
54 | get_procedure => 'get', |
55 | add_procedure => 'set', |
4f4fd192 |
56 | }, |
a939ce63 |
57 | default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash }, |
58 | ); |
59 | |
60 | has 'triggers' => ( |
28bd628e |
61 | traits => ['Hash'], |
a939ce63 |
62 | is => 'rw', |
63 | isa => HashRef[Trigger], |
28bd628e |
64 | handles => { |
65 | exists_trigger => 'exists', |
66 | trigger_ids => 'keys', |
67 | get_triggers => 'values', |
68 | get_trigger => 'get', |
69 | add_trigger => 'set', |
a939ce63 |
70 | }, |
71 | default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash }, |
4f4fd192 |
72 | ); |
b5ce8643 |
73 | |
51700db2 |
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 | |
b5ce8643 |
79 | method is_valid { 1 } |
b750d2f1 |
80 | |
81 | method order { } |
82 | method perform_action_when { } |
83 | method database_events { } |
84 | method fields { } |
85 | method on_table { } |
86 | method action { } |
4f4fd192 |
87 | } |