X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FSQL%2FTranslator%2FObject%2FView.pm;h=e800cbb95d62bcef9dc9899d1f57137a9be86b89;hb=035b85031c5d6fdce4b2ea18c243707b84b0d869;hp=414abd6601ad3617b2ddf82fa3cf5e9652f3c9ca;hpb=44547961080e3091989e0f2bbfbc85ad510da235;p=dbsrgits%2FSQL-Translator-2.0-ish.git diff --git a/lib/SQL/Translator/Object/View.pm b/lib/SQL/Translator/Object/View.pm index 414abd6..e800cbb 100644 --- a/lib/SQL/Translator/Object/View.pm +++ b/lib/SQL/Translator/Object/View.pm @@ -1,44 +1,33 @@ -package SQL::Translator::Object::View; -use namespace::autoclean; -use Moose; -use MooseX::Types::Moose qw(HashRef Str); -use MooseX::AttributeHelpers; -use SQL::Translator::Types qw(Column); -extends 'SQL::Translator::Object'; +use MooseX::Declare; +class SQL::Translator::Object::View extends SQL::Translator::Object { + use MooseX::Types::Moose qw(HashRef Str); + use SQL::Translator::Types qw(Column); + + has 'name' => ( + is => 'rw', + isa => Str, + required => 1 + ); + + has 'columns' => ( + traits => ['Hash'], + is => 'rw', + isa => HashRef[Column], + handles => { + exists_column => 'exists', + column_ids => 'keys', + get_columns => 'values', + get_column => 'get', + add_column => 'set', + }, + default => sub { my %hash = (); tie %hash, 'Tie::IxHash'; return \%hash }, + ); + + has 'sql' => ( + is => 'rw', + isa => Str, + required => 1 + ); -has 'name' => ( - is => 'rw', - isa => Str, - required => 1 -); - -has 'columns' => ( - metaclass => 'Collection::Hash', - is => 'rw', - isa => HashRef[Column], - provides => { - exists => 'exists_column', - keys => 'column_ids', - get => 'get_column', - }, - curries => { - set => { - add_column => sub { - my ($self, $body, $column) = @_; - $self->$body($column->name, $column); - } - } - }, - default => sub { {} }, - required => 0 -); - -has 'sql' => ( - is => 'rw', - isa => Str, - required => 1 -); - -__PACKAGE__->meta->make_immutable; - -1; + around add_column(Column $column) { $self->$orig($column->name, $column) } +}