X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Model-DBIC-Schema.git;a=blobdiff_plain;f=lib%2FCatalyst%2FModel%2FDBIC%2FSchema.pm;h=993c02c49d5aada4850d0fcd52b2622db2fd1c63;hp=f7f5aaabd9006cc3aca620955d0dc90c1ef3093c;hb=7bd33abf92b0dfcfdd086532511e941868754d8b;hpb=e203cd424184388b3a9397eef9a9ac0cbf4f1d67 diff --git a/lib/Catalyst/Model/DBIC/Schema.pm b/lib/Catalyst/Model/DBIC/Schema.pm index f7f5aaa..993c02c 100644 --- a/lib/Catalyst/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Model/DBIC/Schema.pm @@ -493,14 +493,18 @@ sub BUILD { $self->composed_schema($schema_class->compose_namespace($class)); + $self->meta->make_mutable; $self->meta->add_attribute('schema', is => 'rw', isa => 'DBIx::Class::Schema', handles => $self->_delegates ); + $self->meta->make_immutable; $self->schema($self->composed_schema->clone); + $self->_pass_options_to_schema; + $self->schema->storage_type($self->storage_type) if $self->storage_type; @@ -614,6 +618,22 @@ sub _delegates { return \@delegates; } +sub _pass_options_to_schema { + my $self = shift; + + my @attributes = map $_->name, $self->meta->get_all_attributes; + my %attributes; + @attributes{@attributes} = (); + + for my $opt (keys %$self) { + if (not exists $attributes{$opt}) { + die "Invalid schema option: $opt" unless $self->schema->can($opt); + + $self->schema->$opt($self->{$opt}); + } + } +} + __PACKAGE__->meta->make_immutable; =head1 SEE ALSO