=cut
use Moo;
-use SQL::Translator::Utils qw(parse_list_arg ex2err);
+use SQL::Translator::Utils qw(ex2err);
+use SQL::Translator::Role::ListAttr;
use SQL::Translator::Types qw(schema_obj);
-use List::MoreUtils qw(uniq);
+use Sub::Quote qw(quote_sub);
-with qw(
- SQL::Translator::Schema::Role::BuildArgs
- SQL::Translator::Schema::Role::Extra
- SQL::Translator::Schema::Role::Error
- SQL::Translator::Schema::Role::Compare
-);
+extends 'SQL::Translator::Schema::Object';
-our $VERSION = '1.59';
+our $VERSION = '1.60';
=head2 new
=cut
-has parameters => (
- is => 'rw',
- default => sub { [] },
- coerce => sub { [uniq @{parse_list_arg($_[0])}] },
-);
-
-around parameters => sub {
- my $orig = shift;
- my $self = shift;
- my $fields = parse_list_arg( @_ );
- $self->$orig($fields) if @$fields;
-
- return wantarray ? @{ $self->$orig } : $self->$orig;
-};
+with ListAttr parameters => ( uniq => 1 );
=head2 name
=cut
-has name => ( is => 'rw', default => sub { '' } );
+has name => ( is => 'rw', default => quote_sub(q{ '' }) );
=head2 sql
=cut
-has sql => ( is => 'rw', default => sub { '' } );
+has sql => ( is => 'rw', default => quote_sub(q{ '' }) );
=head2 order
=cut
-has owner => ( is => 'rw', default => sub { '' } );
+has owner => ( is => 'rw', default => quote_sub(q{ '' }) );
=head2 comments
has comments => (
is => 'rw',
- coerce => sub { ref($_[0]) eq 'ARRAY' ? $_[0] : [$_[0]] },
- default => sub { [] },
+ coerce => quote_sub(q{ ref($_[0]) eq 'ARRAY' ? $_[0] : [$_[0]] }),
+ default => quote_sub(q{ [] }),
);
around comments => sub {
=cut
-has schema => ( is => 'rw', isa => schema_obj('Schema') );
+has schema => ( is => 'rw', isa => schema_obj('Schema'), weak_ref => 1 );
around schema => \&ex2err;
return 1;
};
-sub DESTROY {
- my $self = shift;
- undef $self->{'schema'}; # destroy cyclical reference
-}
-
# Must come after all 'has' declarations
around new => \&ex2err;