]> git.decadent.org.uk Git - maypole.git/blob - lib/Maypole/Model/CDBI/Plain.pm
0dee774b9813ef34dd37df9bb6c9d668aea78338
[maypole.git] / lib / Maypole / Model / CDBI / Plain.pm
1 package Maypole::Model::CDBI::Plain;
2 use base 'Maypole::Model::CDBI';
3 use strict;
4
5 Maypole::Config->mk_accessors(qw(table_to_class));
6
7 sub setup_database {
8     my ( $self, $config, $namespace, $classes ) = @_;
9     $config->{classes}        = $classes;
10     $config->{table_to_class} = { map { $_->table => $_ } @$classes };
11     $config->{tables}         = [ keys %{ $config->{table_to_class} } ];
12 }
13
14 sub class_of {
15     my ( $self, $r, $table ) = @_;
16     return $r->config->{table_to_class}->{$table};
17 }
18
19 1;
20
21 =head1 NAME
22
23 Maypole::Model::CDBI::Plain - Class::DBI model without ::Loader
24
25 =head1 SYNOPSIS
26
27     package Foo;
28     use base 'Maypole::Application';
29     use Foo::SomeTable;
30     use Foo::Other::Table;
31
32     Foo->config->model("Maypole::Model::CDBI::Plain");
33     Foo->setup([qw/ Foo::SomeTable Foo::Other::Table /]);
34
35 =head1 DESCRIPTION
36
37 This module allows you to use Maypole with previously set-up
38 L<Class::DBI> classes; simply call C<setup> with a list reference
39 of the classes you're going to use, and Maypole will work out the
40 tables and set up the inheritance relationships as normal.
41
42 =head1 METHODS
43
44 =over 4
45
46 =item setup_database
47
48 =item  class_of
49
50 =back
51
52 See L<Maypole::Model::Base>
53
54 =cut
55