From: Brandon L. Black Date: Thu, 9 Feb 2006 07:50:36 +0000 (+0000) Subject: bump to 0.03, added new helper to support automatic inline ::Schema::Loader X-Git-Tag: v0.12~15 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Model-DBIC-Schema.git;a=commitdiff_plain;h=7b39f3f05b1cf0a70eaea7348f29a66fe62a4518 bump to 0.03, added new helper to support automatic inline ::Schema::Loader --- diff --git a/Build.PL b/Build.PL index 946e77f..b6cb8c2 100644 --- 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 --- 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 diff --git a/MANIFEST b/MANIFEST index 8161ff7..187014d 100644 --- 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 diff --git a/MANIFEST.SKIP b/MANIFEST.SKIP index 2ffcc10..5ead648 100644 --- a/MANIFEST.SKIP +++ b/MANIFEST.SKIP @@ -23,3 +23,6 @@ \.bak$ \#$ \b\.# + +# avoid dist files +\.tar\.gz$ diff --git a/META.yml b/META.yml index 3e793b3..0fed24f 100644 --- 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' 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 --- 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" diff --git a/lib/Catalyst/Helper/Model/DBIC/Schema.pm b/lib/Catalyst/Helper/Model/DBIC/Schema.pm index bf8fecc..875497b 100644 --- a/lib/Catalyst/Helper/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Helper/Model/DBIC/Schema.pm @@ -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, L, L, -L, L +L, L, L, + +Stuff related to DBIC and this Model style: + +L, L, +L, L, +L =head1 AUTHOR diff --git a/lib/Catalyst/Helper/Model/DBIC/SchemaInlineLoader.pm b/lib/Catalyst/Helper/Model/DBIC/SchemaInlineLoader.pm new file mode 100644 index 0000000..87ab7ef --- /dev/null +++ b/lib/Catalyst/Helper/Model/DBIC/SchemaInlineLoader.pm @@ -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 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, L, L, +L, L, L, + +Stuff related to DBIC and this Model style: + +L, L, +L, L, +L + +=head1 AUTHOR + +Brandon L Black, C + +=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; diff --git a/lib/Catalyst/Model/DBIC/Schema.pm b/lib/Catalyst/Model/DBIC/Schema.pm index 789a11d..201ac29 100644 --- a/lib/Catalyst/Model/DBIC/Schema.pm +++ b/lib/Catalyst/Model/DBIC/Schema.pm @@ -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-based Models. +This is a Catalyst Model for L-based Models. See +the documentation for L and +L 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, L, L, -L +General Catalyst Stuff: + +L, L, L, +L, L, L, + +Stuff related to DBIC and this Model style: + +L, L, +L, L, +L =head1 AUTHOR