| Fey-Loader documentation | Contained in the Fey-Loader distribution. |
Fey::Loader - Load your schema definition from a DBMS
version 0.12
my $loader = Fey::Loader->new( dbh => $dbh );
my $loader = Fey::Loader->new(
dbh => $dbh,
schema_class => '...',
table_class => '...',
);
my $schema = $loader->make_schema();
Fey::Loader takes a DBI handle and uses it to construct a set of
Fey objects representing that schema. It will attempt to use an
appropriate DBMS subclass if one exists, but will fall back to using a
generic loader otherwise.
The generic loader simply uses the various schema information methods
specified by DBI. This in turn depends on these methods being
implemented by the driver.
See the Fey::Loader::DBI class for more details on what parameters the
new() method accepts.
This class provides the following methods:
Given a connected DBI handle, this method returns a new loader. If
an appropriate subclass exists, it will be loaded and used. Otherwise,
it will warn and fall back to using Fey::Loader::DBI.
Please report any bugs or feature requests to
bug-fey-loader@rt.cpan.org, or through the web interface at
http://rt.cpan.org. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
Dave Rolsky <autarch@urth.org>
This software is Copyright (c) 2011 by Dave Rolsky.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
| Fey-Loader documentation | Contained in the Fey-Loader distribution. |
package Fey::Loader; BEGIN { $Fey::Loader::VERSION = '0.12'; } use strict; use warnings; use Fey::Loader::DBI; sub new { my $class = shift; my %p = @_; my $dbh = $p{dbh}; my $driver = $dbh->{Driver}{Name}; my $subclass = $class->_determine_subclass($driver); return $subclass->new(%p); } sub _determine_subclass { my $class = shift; my $driver = shift; my $subclass = $class . '::' . $driver; { # Shuts up UNIVERSAL::can no warnings; return $subclass if $subclass->can('new'); } return $subclass if eval "use $subclass; 1;"; die $@ unless $@ =~ /Can't locate/; warn <<"EOF"; There is no driver-specific $class subclass for your driver ($driver) ... falling back to the base DBI implementation. This may or may not work. EOF return $class . '::' . 'DBI'; } 1; # ABSTRACT: Load your schema definition from a DBMS
__END__