move to MooseX::Declare extends style
[dbsrgits/SQL-Translator-2.0-ish.git] / lib / SQL / Translator / Object / Schema.pm
CommitLineData
4f4fd192 1use MooseX::Declare;
ebf2721d 2class SQL::Translator::Object::Schema extends SQL::Translator::Object {
4f4fd192 3 use MooseX::Types::Moose qw(HashRef Maybe Str);
4 use MooseX::AttributeHelpers;
a939ce63 5 use SQL::Translator::Types qw(Procedure Table Trigger View);
a939ce63 6
4f4fd192 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',
b5ce8643 21 values => 'get_tables',
4f4fd192 22 get => 'get_table',
51700db2 23 set => 'add_table',
4f4fd192 24 },
b5ce8643 25 default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash },
4f4fd192 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',
b5ce8643 35 values => 'get_views',
4f4fd192 36 get => 'get_view',
51700db2 37 set => 'add_view',
4f4fd192 38 },
7c120f08 39 default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash },
4f4fd192 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',
b5ce8643 49 values => 'get_procedures',
4f4fd192 50 get => 'get_procedure',
51700db2 51 set => 'add_procedure',
4f4fd192 52 },
a939ce63 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',
51700db2 65 set => 'add_trigger',
a939ce63 66 },
67 default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash },
4f4fd192 68 );
b5ce8643 69
51700db2 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
b5ce8643 75 method is_valid { 1 }
b750d2f1 76
77 method order { }
78 method perform_action_when { }
79 method database_events { }
80 method fields { }
81 method on_table { }
82 method action { }
4f4fd192 83}