0.01003 - fixed has_many cond rels
[dbsrgits/DBIx-Class-Schema-Loader.git] / lib / DBIx / Class / Schema / Loader.pm
index f7f1305..8d83679 100644 (file)
@@ -2,16 +2,17 @@ package DBIx::Class::Schema::Loader;
 
 use strict;
 use warnings;
+use base qw/DBIx::Class::Schema/;
+use base qw/Class::Data::Accessor/;
 use Carp;
-
-use vars qw($VERSION @ISA);
 use UNIVERSAL::require;
 
 # Always remember to do all digits for the version even if they're 0
 # i.e. first release of 0.XX *must* be 0.XX000. This avoids fBSD ports
 # brain damage and presumably various other packaging systems too
+our $VERSION = '0.01003';
 
-$VERSION = '0.01000';
+__PACKAGE__->mk_classaccessor('loader');
 
 =head1 NAME
 
@@ -45,8 +46,30 @@ DBIx::Class::Schema::Loader - Dynamic definition of a DBIx::Class::Schema
   my $schema1 = "My::Schema";
   # ^^ defaults to dsn/user/pass from load_from_connection()
 
+  # Get a list of the original (database) names of the tables that
+  #  were loaded
+  my @tables = $schema1->loader->tables;
+
+  # Get a hashref of table_name => 'TableName' table-to-moniker
+  #   mappings.
+  my $monikers = $schema1->loader->monikers;
+
+  # Get a hashref of table_name => 'My::Schema::TableName'
+  #   table-to-classname mappings.
+  my $classes = $schema1->loader->classes;
+
+  # Use the schema as per normal for DBIx::Class::Schema
+  my $rs = $schema1->resultset($monikers->{table_table})->search(...);
+
 =head1 DESCRIPTION
 
+THIS IS A DEVELOPMENT RELEASE.  This is 0.01xxx, the first public
+releases.  Expect things to be broken in various ways.  Expect the
+entire design to be fatally flawed.  Expect the interfaces to change if
+it becomes neccessary.  It's mostly here for people to poke at it and
+find the flaws in it.  0.02 will hopefully have some sanity when we get
+there.
+
 DBIx::Class::Schema::Loader automates the definition of a
 DBIx::Class::Schema by scanning table schemas and setting up
 columns and primary keys.
@@ -56,10 +79,8 @@ L<DBIx::Class::Schema::Loader::Generic> for more, and
 L<DBIx::Class::Schema::Loader::Writing> for notes on writing your own
 db-specific subclass for an unsupported db.
 
-This module requires DBIx::Class::Loader 0.5 or later, and obsoletes
-L<DBIx::Class::Loader> for L<DBIx::Class> version 0.5 and later.
-
-=cut
+This module requires L<DBIx::Class> 0.05 or later, and obsoletes
+L<DBIx::Class::Loader> for L<DBIx::Class> version 0.05 and later.
 
 =head1 METHODS
 
@@ -75,7 +96,6 @@ sub load_from_connection {
     my ( $class, %args ) = @_;
 
     croak 'dsn argument is required' if ! $args{dsn};
-
     my $dsn = $args{dsn};
     my ($driver) = $dsn =~ m/^dbi:(\w*?)(?:\((.*?)\))?:/i;
     $driver = 'SQLite' if $driver eq 'SQLite2';
@@ -85,15 +105,25 @@ sub load_from_connection {
       croak qq/Couldn't require loader class "$impl",/ .
             qq/"$UNIVERSAL::require::ERROR"/;
 
-    push(@ISA, $impl);
-    $class->_load_from_connection(%args);
+    $args{schema} = $class;
+
+    $class->loader($impl->new(%args));
+    $class->loader->load;
 }
 
+=head2 loader
+
+This is an accessor in the generated Schema class for accessing
+the L<DBIx::Class::Schema::Loader::Generic> -based loader object
+that was used during construction.  See the
+L<DBIx::Class::Schema::Loader::Generic> docs for more information
+on the available loader methods there.
+
 =head1 AUTHOR
 
-Brandon Black, C<bblack@gmail.com>
+Brandon Black, C<blblack@gmail.com>
 
-Sebastian Riedel, C<sri@oook.de> (DBIx::Class::Loader, which this module is branched from)
+Based on L<DBIx::Class::Loader> by Sebastian Riedel
 
 Based upon the work of IKEBE Tomohiro