From: Rafael Kitover Date: Mon, 24 Aug 2009 08:19:51 +0000 (+0000) Subject: pass config options to schema X-Git-Tag: v0.27~4 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Model-DBIC-Schema.git;a=commitdiff_plain;h=7bd33abf92b0dfcfdd086532511e941868754d8b pass config options to schema --- 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