re-worked C::H::M::DBIC::SchemaInlineLoader code into a better C::H::M::DBIC::SchemaL...
Brandon L. Black [Mon, 13 Feb 2006 04:24:14 +0000 (04:24 +0000)]
Build.PL
Changes
MANIFEST
META.yml
README
lib/Catalyst/Helper/Model/DBIC/Schema.pm
lib/Catalyst/Helper/Model/DBIC/SchemaLoader.pm
lib/Catalyst/Model/DBIC/Schema.pm

index b6cb8c2..673746e 100644 (file)
--- a/Build.PL
+++ b/Build.PL
@@ -7,12 +7,12 @@ my %arguments = (
     requires           => {
         'DBIx::Class'           => 0.05,
         'Catalyst'              => 5.64,
-        'UNIVERSAL::require'    => 0,
-        'Class::Data::Accessor' => 0,
-        'Class::Accessor::Fast' => 0,
+        'UNIVERSAL::require'    => 0.10,
+        'Class::Data::Accessor' => 0.02,
+        'Class::Accessor::Fast' => 0.22,
     },
     recommends         => {
-        'DBIx::Class::Schema::Loader' => '0.01004',
+        'DBIx::Class::Schema::Loader' => '0.02000',
     },
     build_requires     => {
         'Test::More'            => 0.32,
diff --git a/Changes b/Changes
index 3d1dcb0..6c1f91f 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,10 +1,4 @@
 Revision history for Perl extension Catalyst::Model::DBIC::Schema
 
-0.03  Not yet released
-        - YAS... added support for inline Schema::Loader via C::H::M::DBIC::SchemaInlineLoader
-
-0.02  Not yet released
-        - Another snapshot
-
-0.01  Not yet released
-        - First snapshot
+0.04  Mon Feb 13 04:22:49 UTC 2006
+        - First public release
index 187014d..5a39bd6 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,7 +1,7 @@
 Build.PL
 Changes
 lib/Catalyst/Helper/Model/DBIC/Schema.pm
-lib/Catalyst/Helper/Model/DBIC/SchemaInlineLoader.pm
+lib/Catalyst/Helper/Model/DBIC/SchemaLoader.pm
 lib/Catalyst/Model/DBIC/Schema.pm
 Makefile.PL
 MANIFEST                       This list of files
index 0fed24f..14fb1f8 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -1,26 +1,26 @@
 ---
 name: Catalyst-Model-DBIC-Schema
-version: 0.03
+version: 0.04
 author:
   - 'Brandon L Black, C<blblack@gmail.com>'
 abstract: DBIx::Class::Schema Model Class
 license: perl
 requires:
   Catalyst: 5.64
-  Class::Accessor::Fast: 0
-  Class::Data::Accessor: 0
+  Class::Accessor::Fast: 0.22
+  Class::Data::Accessor: 0.02
   DBIx::Class: 0.05
-  UNIVERSAL::require: 0
+  UNIVERSAL::require: 0.1
 recommends:
-  DBIx::Class::Schema::Loader: 0.01004
+  DBIx::Class::Schema::Loader: 0.02000
 build_requires:
   Test::More: 0.32
 provides:
   Catalyst::Helper::Model::DBIC::Schema:
     file: lib/Catalyst/Helper/Model/DBIC/Schema.pm
-  Catalyst::Helper::Model::DBIC::SchemaInlineLoader:
-    file: lib/Catalyst/Helper/Model/DBIC/SchemaInlineLoader.pm
+  Catalyst::Helper::Model::DBIC::SchemaLoader:
+    file: lib/Catalyst/Helper/Model/DBIC/SchemaLoader.pm
   Catalyst::Model::DBIC::Schema:
     file: lib/Catalyst/Model/DBIC/Schema.pm
-    version: 0.03
+    version: 0.04
 generated_by: Module::Build version 0.2611
diff --git a/README b/README
index 95acb64..27dbf98 100644 (file)
--- a/README
+++ b/README
@@ -48,10 +48,14 @@ SYNOPSIS
         $newconn->connection(...);
 
 DESCRIPTION
+    NOTE: This is the first public release, there's probably a higher than
+    average chance of random bugs and shortcomings: you've been warned.
+
     This is a Catalyst Model for DBIx::Class::Schema-based Models. See the
     documentation for Catalyst::Helper::Model::DBIC::Schema and
-    Catalyst::Helper::Model::DBIC::SchemaInlineLoader for information on
-    generating these Models via Helper scripts.
+    Catalyst::Helper::Model::DBIC::SchemaLoader for information on
+    generating these Models via Helper scripts. The latter of the two will
+    also generated a DBIx::Class::Schema::Loader-based Schema class for you.
 
 CONFIG PARAMETERS
     schema_class
@@ -120,7 +124,7 @@ SEE ALSO
 
     DBIx::Class, DBIx::Class::Schema, DBIx::Class::Schema::Loader,
     Catalyst::Helper::Model::DBIC::Schema,
-    Catalyst::Helper::Model::DBIC::SchemaInlineLoader
+    Catalyst::Helper::Model::DBIC::SchemaLoader
 
 AUTHOR
     Brandon L Black, "blblack@gmail.com"
index 875497b..0546c63 100644 (file)
@@ -56,8 +56,8 @@ L<Catalyst::Response>, L<Catalyst::Helper>, L<Catalyst>,
 Stuff related to DBIC and this Model style:
 
 L<DBIx::Class>, L<DBIx::Class::Schema>,
-L<DBIx::Class::Schema::Loader>, L<Catalyst::Helper::Model::DBIC::Schema>,
-L<Catalyst::Helper::Model::DBIC::SchemaInlineLoader>
+L<DBIx::Class::Schema::Loader>, L<Catalyst::Model::DBIC::Schema>,
+L<Catalyst::Helper::Model::DBIC::SchemaLoader>
 
 =head1 AUTHOR
 
@@ -99,7 +99,7 @@ __PACKAGE__->config(
 
 =head1 NAME
 
-[% class %] - Catalyst DBIC Plain Model
+[% class %] - Catalyst DBIC Schema Model
 
 =head1 SYNOPSIS
 
@@ -107,7 +107,8 @@ See L<[% app %]>
 
 =head1 DESCRIPTION
 
-Catalyst::Model::DBIC::Schema Model
+L<Catalyst::Model::DBIC::Schema> Model using schema
+L<[% schema_class %]>
 
 =head1 AUTHOR
 
index 87ab7ef..509bd24 100644 (file)
@@ -1,4 +1,4 @@
-package Catalyst::Helper::Model::DBIC::SchemaInlineLoader;
+package Catalyst::Helper::Model::DBIC::SchemaLoader;
 
 use strict;
 use warnings;
@@ -6,11 +6,11 @@ use Carp;
 
 =head1 NAME
 
-Catalyst::Helper::Model::DBIC::SchemaInlineLoader - Helper for AutoLoaded DBIC Schema Models
+Catalyst::Helper::Model::DBIC::SchemaLoader - Helper for AutoLoaded DBIC Schema Models
 
 =head1 SYNOPSIS
 
-    script/create.pl model Foo DBIC::SchemaInlineLoader dsn user password
+    script/myapp_create.pl model Foo DBIC::SchemaLoader dsn user password
 
     Where:
       Foo is the short name for the Model class being generated
@@ -18,9 +18,13 @@ Catalyst::Helper::Model::DBIC::SchemaInlineLoader - Helper for AutoLoaded DBIC S
 
 =head1 DESCRIPTION
 
-This helper generates a Catalyst::Model::DBIC::Schema class based upon a
-generated inline DBIx::Class::Schema::Loader definition.  Nothing external
-to the generated class is required.
+This helper generates two classes:
+
+First, it generates a L<DBIx::Class::Schema::Loader> class at
+F<lib/MyApp/SchemaLoader/Foo.pm> based on your supplied dsn/user/pass.
+
+Then, it generates a L<Catalyst::Model::DBIC::Schema> at
+F<lib/MyApp/M/Foo.pm>, which references the above-generated loader.
 
 Models generated by this Helper require the seperate package
 L<DBIx::Class::Schema::Loader> to be installed.  It is on the recommended
@@ -35,10 +39,24 @@ list for this package, but is not required for installation.
 sub mk_compclass {
     my ( $self, $helper, $dsn, $user, $pass ) = @_;
 
+    $helper->{loader_class} = $helper->{class};
+    $helper->{loader_class} =~ s/\:\:M(?:odel)?\:\:/::SchemaLoader::/;
+    my @loader_parts = split(/\:\:/, $helper->{loader_class});
+    my $loader_file_part = pop @loader_parts;
+
+    my $loader_dir  = File::Spec->catfile( $helper->{base}, 'lib', @loader_parts );
+    my $loader_file = File::Spec->catfile( $loader_dir, $loader_file_part . '.pm' );
+
+    $helper->mk_dir($loader_dir);
+
     $helper->{dsn}          = $dsn  || '';
     $helper->{user}         = $user || '';
     $helper->{pass}         = $pass || '';
 
+    $helper->mk_dir( $loader_dir );
+    $helper->render_file( 'loaderclass', $loader_file );
+
+
     my $file = $helper->{file};
     $helper->render_file( 'compclass', $file );
 }
@@ -53,8 +71,8 @@ L<Catalyst::Response>, L<Catalyst::Helper>, L<Catalyst>,
 Stuff related to DBIC and this Model style:
 
 L<DBIx::Class>, L<DBIx::Class::Schema>,
-L<DBIx::Class::Schema::Loader>, L<Catalyst::Helper::Model::DBIC::Schema>,
-L<Catalyst::Helper::Model::DBIC::SchemaInlineLoader>
+L<DBIx::Class::Schema::Loader>, L<Catalyst::Model::DBIC::Schema>,
+L<Catalyst::Helper::Model::DBIC::Schema>
 
 =head1 AUTHOR
 
@@ -71,8 +89,8 @@ it under the same terms as Perl itself.
 
 __DATA__
 
-__compclass__
-package [% %]_[% class %]::Schema;
+__loaderclass__
+package [% loader_class %];
 
 use strict;
 use base qw/DBIx::Class::Schema::Loader/;
@@ -92,18 +110,44 @@ __PACKAGE__->load_from_connection(
     # debug => 1,
 );
 
+=head1 NAME
+
+[% loader_class %] - Loader-generated DBIx::Class::Schema class
+
+=head1 SYNOPSIS
+
+See L<[% app %]>
+
+=head1 DESCRIPTION
+
+Generated by L<Catalyst::Model::DBIC::Schema> for use in L<[% class %]>
+
+=head1 AUTHOR
+
+[% author %]
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+
+1;
+
+__compclass__
 package [% class %];
 
 use strict;
 use base 'Catalyst::Model::DBIC::Schema';
 
 __PACKAGE__->config(
-    schema_class => '_[% class %]::Schema',
+    schema_class => '[% loader_class %]',
 );
 
 =head1 NAME
 
-[% class %] - Catalyst DBIC Plain Model
+[% class %] - Catalyst DBIC Schema Model
 
 =head1 SYNOPSIS
 
@@ -111,7 +155,8 @@ See L<[% app %]>
 
 =head1 DESCRIPTION
 
-Catalyst::Model::DBIC::Schema Model
+L<Catalyst::Model::DBIC::Schema> Model using L<DBIx::Class::Schema::Loader>
+generated Schema: L<[% loader_class %]>
 
 =head1 AUTHOR
 
index 201ac29..480dcd5 100644 (file)
@@ -4,10 +4,9 @@ use strict;
 use base qw/Catalyst::Model Class::Accessor::Fast Class::Data::Accessor/;
 use NEXT;
 use UNIVERSAL::require;
-use UNIVERSAL qw/ can /;
 use Carp;
 
-our $VERSION = '0.03';
+our $VERSION = '0.04';
 
 __PACKAGE__->mk_classaccessor('composed_schema');
 __PACKAGE__->mk_accessors('schema');
@@ -65,10 +64,15 @@ Catalyst::Model::DBIC::Schema - DBIx::Class::Schema Model Class
 
 =head1 DESCRIPTION
 
+NOTE: This is the first public release, there's probably a higher than
+average chance of random bugs and shortcomings: you've been warned.
+
 This is a Catalyst Model for L<DBIx::Class::Schema>-based Models.  See
 the documentation for L<Catalyst::Helper::Model::DBIC::Schema> and
-L<Catalyst::Helper::Model::DBIC::SchemaInlineLoader> for information
-on generating these Models via Helper scripts.
+L<Catalyst::Helper::Model::DBIC::SchemaLoader> for information
+on generating these Models via Helper scripts.  The latter of the two
+will also generated a L<DBIx::Class::Schema::Loader>-based Schema class
+for you.
 
 =head1 CONFIG PARAMETERS
 
@@ -160,11 +164,8 @@ sub new {
 
     my $schema_class = $self->{schema_class};
 
-    # don't require if the class is already loaded...
-    if( !can($schema_class, 'source') ) {
-        $schema_class->require
-            or croak "Cannot load schema class '$schema_class': $@";
-    }
+    $schema_class->require
+        or croak "Cannot load schema class '$schema_class': $@";
 
     if( !$self->{connect_info} ) {
         if($schema_class->storage && $schema_class->storage->connect_info) {
@@ -172,7 +173,7 @@ sub new {
         }
         else {
             croak "Either ->config->{connect_info} must be defined for $class"
-                  . " or $schema_class must have connection defined on it";
+                  . " or $schema_class must have connect info defined on it";
         }
     }
 
@@ -207,7 +208,7 @@ Stuff related to DBIC and this Model style:
 
 L<DBIx::Class>, L<DBIx::Class::Schema>,
 L<DBIx::Class::Schema::Loader>, L<Catalyst::Helper::Model::DBIC::Schema>,
-L<Catalyst::Helper::Model::DBIC::SchemaInlineLoader>
+L<Catalyst::Helper::Model::DBIC::SchemaLoader>
 
 =head1 AUTHOR