bump to 0.03, added new helper to support automatic inline ::Schema::Loader
Brandon L. Black [Thu, 9 Feb 2006 07:50:36 +0000 (07:50 +0000)]
Build.PL
Changes
MANIFEST
MANIFEST.SKIP
META.yml
README
lib/Catalyst/Helper/Model/DBIC/Schema.pm
lib/Catalyst/Helper/Model/DBIC/SchemaInlineLoader.pm [new file with mode: 0644]
lib/Catalyst/Model/DBIC/Schema.pm

index 946e77f..b6cb8c2 100644 (file)
--- a/Build.PL
+++ b/Build.PL
@@ -11,6 +11,9 @@ my %arguments = (
         'Class::Data::Accessor' => 0,
         'Class::Accessor::Fast' => 0,
     },
+    recommends         => {
+        'DBIx::Class::Schema::Loader' => '0.01004',
+    },
     build_requires     => {
         'Test::More'            => 0.32,
     },
diff --git a/Changes b/Changes
index 788a6d2..3d1dcb0 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 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
 
index 8161ff7..187014d 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,6 +1,7 @@
 Build.PL
 Changes
 lib/Catalyst/Helper/Model/DBIC/Schema.pm
+lib/Catalyst/Helper/Model/DBIC/SchemaInlineLoader.pm
 lib/Catalyst/Model/DBIC/Schema.pm
 Makefile.PL
 MANIFEST                       This list of files
index 2ffcc10..5ead648 100644 (file)
@@ -23,3 +23,6 @@
 \.bak$
 \#$
 \b\.#
+
+# avoid dist files
+\.tar\.gz$
index 3e793b3..0fed24f 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -1,6 +1,6 @@
 ---
 name: Catalyst-Model-DBIC-Schema
-version: 0.02
+version: 0.03
 author:
   - 'Brandon L Black, C<blblack@gmail.com>'
 abstract: DBIx::Class::Schema Model Class
@@ -11,12 +11,16 @@ requires:
   Class::Data::Accessor: 0
   DBIx::Class: 0.05
   UNIVERSAL::require: 0
+recommends:
+  DBIx::Class::Schema::Loader: 0.01004
 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::Model::DBIC::Schema:
     file: lib/Catalyst/Model/DBIC/Schema.pm
-    version: 0.02
+    version: 0.03
 generated_by: Module::Build version 0.2611
diff --git a/README b/README
index 86e33a5..95acb64 100644 (file)
--- a/README
+++ b/README
@@ -40,15 +40,18 @@ SYNOPSIS
         # or, if your schema works on different storage drivers:
         my $newconn = $c->model('Foo')->composed_schema->clone();
         $newconn->storage_type('::LDAP');
-        $newconn->connect(...);
+        $newconn->connection(...);
 
         # and again, a convenience shortcut
         my $newconn = $c->model('Foo')->clone();
         $newconn->storage_type('::LDAP');
-        $newconn->connect(...);
+        $newconn->connection(...);
 
 DESCRIPTION
-    This is a Catalyst Model for DBIx::Class::Schema-based Models.
+    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.
 
 CONFIG PARAMETERS
     schema_class
@@ -108,7 +111,16 @@ METHODS
         Shortcut for ->schema->resultset
 
 SEE ALSO
-    Catalyst, DBIx::Class, DBIx::Class::Schema, DBIx::Class::Schema::Loader
+    General Catalyst Stuff:
+
+    Catalyst::Manual, Catalyst::Test, Catalyst::Request, Catalyst::Response,
+    Catalyst::Helper, Catalyst,
+
+    Stuff related to DBIC and this Model style:
+
+    DBIx::Class, DBIx::Class::Schema, DBIx::Class::Schema::Loader,
+    Catalyst::Helper::Model::DBIC::Schema,
+    Catalyst::Helper::Model::DBIC::SchemaInlineLoader
 
 AUTHOR
     Brandon L Black, "blblack@gmail.com"
index bf8fecc..875497b 100644 (file)
@@ -22,7 +22,7 @@ Catalyst::Helper::Model::DBIC::Schema - Helper for DBIC Schema Models
 
 =head1 DESCRIPTION
 
-Helper for the DBIC Plain Models.
+Helper for the DBIC Schema Models.
 
 =head2 METHODS
 
@@ -48,8 +48,16 @@ sub mk_compclass {
 
 =head1 SEE ALSO
 
+General Catalyst Stuff:
+
 L<Catalyst::Manual>, L<Catalyst::Test>, L<Catalyst::Request>,
-L<Catalyst::Response>, L<Catalyst::Helper>
+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>
 
 =head1 AUTHOR
 
diff --git a/lib/Catalyst/Helper/Model/DBIC/SchemaInlineLoader.pm b/lib/Catalyst/Helper/Model/DBIC/SchemaInlineLoader.pm
new file mode 100644 (file)
index 0000000..87ab7ef
--- /dev/null
@@ -0,0 +1,127 @@
+package Catalyst::Helper::Model::DBIC::SchemaInlineLoader;
+
+use strict;
+use warnings;
+use Carp;
+
+=head1 NAME
+
+Catalyst::Helper::Model::DBIC::SchemaInlineLoader - Helper for AutoLoaded DBIC Schema Models
+
+=head1 SYNOPSIS
+
+    script/create.pl model Foo DBIC::SchemaInlineLoader dsn user password
+
+    Where:
+      Foo is the short name for the Model class being generated
+      dsn, user, and password are the connection info
+
+=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.
+
+Models generated by this Helper require the seperate package
+L<DBIx::Class::Schema::Loader> to be installed.  It is on the recommended
+list for this package, but is not required for installation.
+
+=head2 METHODS
+
+=head3 mk_compclass
+
+=cut
+
+sub mk_compclass {
+    my ( $self, $helper, $dsn, $user, $pass ) = @_;
+
+    $helper->{dsn}          = $dsn  || '';
+    $helper->{user}         = $user || '';
+    $helper->{pass}         = $pass || '';
+
+    my $file = $helper->{file};
+    $helper->render_file( 'compclass', $file );
+}
+
+=head1 SEE ALSO
+
+General Catalyst Stuff:
+
+L<Catalyst::Manual>, L<Catalyst::Test>, L<Catalyst::Request>,
+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>
+
+=head1 AUTHOR
+
+Brandon L Black, C<blblack@gmail.com>
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
+
+1;
+
+__DATA__
+
+__compclass__
+package [% %]_[% class %]::Schema;
+
+use strict;
+use base qw/DBIx::Class::Schema::Loader/;
+
+__PACKAGE__->load_from_connection(
+    dsn     => '[% dsn %]',
+    user    => '[% user %]',
+    pass    => '[% pass %]',
+    options => {
+                  RaiseError         => 1,
+                  PrintError         => 0,
+                  ShowErrorStatement => 1,
+                  TraceLevel         => 0,
+                  AutoCommit         => 1,
+                },
+    relationships => 1,
+    # debug => 1,
+);
+
+package [% class %];
+
+use strict;
+use base 'Catalyst::Model::DBIC::Schema';
+
+__PACKAGE__->config(
+    schema_class => '_[% class %]::Schema',
+);
+
+=head1 NAME
+
+[% class %] - Catalyst DBIC Plain Model
+
+=head1 SYNOPSIS
+
+See L<[% app %]>
+
+=head1 DESCRIPTION
+
+Catalyst::Model::DBIC::Schema Model
+
+=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;
index 789a11d..201ac29 100644 (file)
@@ -4,9 +4,10 @@ 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.02';
+our $VERSION = '0.03';
 
 __PACKAGE__->mk_classaccessor('composed_schema');
 __PACKAGE__->mk_accessors('schema');
@@ -64,7 +65,10 @@ Catalyst::Model::DBIC::Schema - DBIx::Class::Schema Model Class
 
 =head1 DESCRIPTION
 
-This is a Catalyst Model for L<DBIx::Class::Schema>-based Models.
+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.
 
 =head1 CONFIG PARAMETERS
 
@@ -156,8 +160,11 @@ sub new {
 
     my $schema_class = $self->{schema_class};
 
-    $schema_class->require
-        or croak "Cannot load schema class '$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': $@";
+    }
 
     if( !$self->{connect_info} ) {
         if($schema_class->storage && $schema_class->storage->connect_info) {
@@ -191,8 +198,16 @@ sub connect { shift->composed_schema->connect(@_); }
 
 =head1 SEE ALSO
 
-L<Catalyst>, L<DBIx::Class>, L<DBIx::Class::Schema>,
-L<DBIx::Class::Schema::Loader>
+General Catalyst Stuff:
+
+L<Catalyst::Manual>, L<Catalyst::Test>, L<Catalyst::Request>,
+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>
 
 =head1 AUTHOR