X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FModel%2FCDBI%2FPlain.pm;h=fd34a75c91d312bcb6437cca6c4dc6883d67e52d;hb=b9aff7e76eab19b36abd670e6fc75a8a3d821324;hp=7833c7b25e0bfe11c49e25cece5f2f6338293df3;hpb=362c7a1f666b6900c4cfa3524db3ce0449927989;p=maypole.git diff --git a/lib/Maypole/Model/CDBI/Plain.pm b/lib/Maypole/Model/CDBI/Plain.pm index 7833c7b..fd34a75 100644 --- a/lib/Maypole/Model/CDBI/Plain.pm +++ b/lib/Maypole/Model/CDBI/Plain.pm @@ -5,20 +5,6 @@ use strict; Maypole::Config->mk_accessors(qw(table_to_class)); -sub setup_database { - my ( $self, $config, $namespace, $classes ) = @_; - $config->{classes} = $classes; - $config->{table_to_class} = { map { $_->table => $_ } @$classes }; - $config->{tables} = [ keys %{ $config->{table_to_class} } ]; -} - -sub class_of { - my ( $self, $r, $table ) = @_; - return $r->config->{table_to_class}->{$table}; -} - -1; - =head1 NAME Maypole::Model::CDBI::Plain - Class::DBI model without ::Loader @@ -27,8 +13,6 @@ Maypole::Model::CDBI::Plain - Class::DBI model without ::Loader package Foo; use 'Maypole::Application'; - use Foo::SomeTable; - use Foo::Other::Table; Foo->config->model("Maypole::Model::CDBI::Plain"); Foo->setup([qw/ Foo::SomeTable Foo::Other::Table /]); @@ -42,15 +26,63 @@ tables and set up the inheritance relationships as normal. =head1 METHODS -=over 4 +=head2 setup + + This method is inherited from Maypole::Model::Base and calls setup_database, + which uses Class::DBI::Loader to create and load Class::DBI classes from + the given database schema. + +=head2 setup_database + + This method loads the model classes for the application + +=cut + + + +sub setup_database { + my ( $self, $config, $namespace, $classes ) = @_; + $config->{classes} = $classes; + foreach my $class (@$classes) { $namespace->load_model_subclass($class); } + $namespace->model_classes_loaded(1); + $config->{table_to_class} = { map { $_->table => $_ } @$classes }; + $config->{tables} = [ keys %{ $config->{table_to_class} } ]; +} + +=head2 class_of -=item setup_database + returns class for given table -=item class_of +=cut + +sub class_of { + my ( $self, $r, $table ) = @_; + return $r->config->{table_to_class}->{$table}; +} -=back +=head2 adopt -See L +This class method is passed the name of a model class that represensts a table +and allows the master model class to do any set-up required. =cut +sub adopt { + my ( $self, $child ) = @_; + if ( my $col = $child->stringify_column ) { + $child->columns( Stringify => $col ); + } +} + +=head1 SEE ALSO + +L + +L + +=cut + + +1; + +