X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FModel%2FCDBI%2FPlain.pm;h=7a36f68034bbe3b6104489a0dc2f8c6db465b366;hb=0e62abcbcaa42ab927cc252bd96b3a0e2e1a0408;hp=6c2709c7095e5ef3e170edfdadcef500215a9173;hpb=ef3da5818c452a331e863d30efc41f5b65d0f624;p=maypole.git diff --git a/lib/Maypole/Model/CDBI/Plain.pm b/lib/Maypole/Model/CDBI/Plain.pm index 6c2709c..7a36f68 100644 --- a/lib/Maypole/Model/CDBI/Plain.pm +++ b/lib/Maypole/Model/CDBI/Plain.pm @@ -1,19 +1,9 @@ package Maypole::Model::CDBI::Plain; +use Maypole::Config; use base 'Maypole::Model::CDBI'; +use strict; -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; +Maypole::Config->mk_accessors(qw(table_to_class)); =head1 NAME @@ -22,31 +12,54 @@ Maypole::Model::CDBI::Plain - Class::DBI model without ::Loader =head1 SYNOPSIS package Foo; - use base 'Maypole::Application'; - use Foo::SomeTable; - use Foo::Other::Table; + use 'Maypole::Application'; - Foo->config->{model_class} = "Maypole::Model::CDBI::Plain"; + Foo->config->model("Maypole::Model::CDBI::Plain"); Foo->setup([qw/ Foo::SomeTable Foo::Other::Table /]); =head1 DESCRIPTION This module allows you to use Maypole with previously set-up -C classes; simply call C with a list reference +L classes; simply call C with a list reference of the classes you're going to use, and Maypole will work out the 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. -=item setup_database +=head2 setup_database -=item class_of + This method loads the model classes for the application -=back +=head1 SEE ALSO -See L +L + +L =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} } ]; +} + +sub class_of { + my ( $self, $r, $table ) = @_; + return $r->config->{table_to_class}->{$table}; +} + + +1; + +