X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FObject%2FSchema.pm;h=b9ab39a1e13a077ed2cab86fcc41be83216a566f;hb=28bd628e570cb298bf33fb144d44b042e262ce40;hp=cc82b133ec294b21e9ab369fa2ce6e1572afcf24;hpb=109263d02704d72c51cdbafe33eeb882db598728;p=dbsrgits%2FSQL-Translator-2.0-ish.git diff --git a/lib/SQL/Translator/Object/Schema.pm b/lib/SQL/Translator/Object/Schema.pm index cc82b13..b9ab39a 100644 --- a/lib/SQL/Translator/Object/Schema.pm +++ b/lib/SQL/Translator/Object/Schema.pm @@ -1,32 +1,82 @@ -package SQL::Translator::Object::Schema; -use Moose; -use MooseX::Types::Moose qw(HashRef Str); -use SQL::Translator::Types qw(Procedure Table View); -extends 'SQL::Translator::Object'; +use MooseX::Declare; +class SQL::Translator::Object::Schema extends SQL::Translator::Object { + use MooseX::Types::Moose qw(HashRef Maybe Str); + use SQL::Translator::Types qw(Procedure Table Trigger View); + + has 'name' => ( + is => 'rw', + isa => Maybe[Str], + required => 1, + default => '' + ); + + has 'tables' => ( + traits => ['Hash'], + is => 'rw', + isa => HashRef[Table], + handles => { + exists_table => 'exists', + table_ids => 'keys', + get_tables => 'values', + get_table => 'get', + add_table => 'set', + }, + default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash }, + ); + + has 'views' => ( + traits => ['Hash'], + is => 'rw', + isa => HashRef[View], + handles => { + exists_view => 'exists', + view_ids => 'keys', + get_views => 'values', + get_view => 'get', + add_view => 'set', + }, + default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash }, + ); + + has 'procedures' => ( + traits => ['Hash'], + is => 'rw', + isa => HashRef[Procedure], + handles => { + exists_procedure => 'exists', + procedure_ids => 'keys', + get_procedures => 'values', + get_procedure => 'get', + add_procedure => 'set', + }, + default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash }, + ); -has 'name' => ( - is => 'rw', - isa => Str, - required => 1, - default => '__DEFAULT__' -); + has 'triggers' => ( + traits => ['Hash'], + is => 'rw', + isa => HashRef[Trigger], + handles => { + exists_trigger => 'exists', + trigger_ids => 'keys', + get_triggers => 'values', + get_trigger => 'get', + add_trigger => 'set', + }, + default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash }, + ); -has 'tables' => ( - is => 'rw', - isa => HashRef[Table], - required => 0 -); + around add_table(Table $table) { $self->$orig($table->name, $table) } + around add_view(View $view) { $self->$orig($view->name, $view) } + around add_procedure(Procedure $procedure) { $self->$orig($procedure->name, $procedure) } + around add_trigger(Trigger $trigger) { $self->$orig($trigger->name, $trigger) } -has 'views' => ( - is => 'rw', - isa => HashRef[View], - required => 0 -); + method is_valid { 1 } -has 'procedures' => ( - is => 'rw', - isa => HashRef[Procedure], - required => 0 -); - -1; + method order { } + method perform_action_when { } + method database_events { } + method fields { } + method on_table { } + method action { } +}