From: Jess Robinson Date: Wed, 21 Jan 2009 22:55:19 +0000 (+0000) Subject: Docs fixed, tests not fail.. X-Git-Tag: v0.08240~179 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=880c075bf6651976e9799a6a2b35c0fcc94f232a;p=dbsrgits%2FDBIx-Class.git Docs fixed, tests not fail.. --- diff --git a/lib/DBIx/Class/ResultSource.pm b/lib/DBIx/Class/ResultSource.pm index 055f89a..a72f54d 100644 --- a/lib/DBIx/Class/ResultSource.pm +++ b/lib/DBIx/Class/ResultSource.pm @@ -544,6 +544,76 @@ sub unique_constraint_columns { return @{ $unique_constraints{$constraint_name} }; } +=head2 sqlt_deploy_callback + +=over + +=item Arguments: $callback + +=back + + __PACKAGE__->sqlt_deploy_callback('mycallbackmethod'); + +An accessor to set a callback to be called during deployment of +the schema via L or +L. + +The callback can be set as either a code reference or the name of a +method in the current result class. + +If not set, the L is called. + +Your callback will be passed the $source object representing the +ResultSource instance being deployed, and the +L object being created from it. The +callback can be used to manipulate the table object or add your own +customised indexes. If you need to manipulate a non-table object, use +the L. + +See L for examples. + +This sqlt deployment callback can only be used to manipulate +SQL::Translator objects as they get turned into SQL. To execute +post-deploy statements which SQL::Translator does not currently +handle, override L in your Schema class +and call L. + +=head2 default_sqlt_deploy_hook + +=over + +=item Arguments: $source, $sqlt_table + +=item Return value: undefined + +=back + +This is the sensible default for L. + +If a method named C exists in your Result class, it +will be called and passed the current C<$source> and the +C<$sqlt_table> being deployed. + +=cut + +sub default_sqlt_deploy_hook { + my $self = shift; + + my $class = $self->result_class; + + if ($class and $class->can('sqlt_deploy_hook')) { + $class->sqlt_deploy_hook(@_); + } +} + +sub _invoke_sqlt_deploy_hook { + my $self = shift; + if ( my $hook = $self->sqlt_deploy_callback) { + $self->$hook(@_); + } +} + =head2 resultset =over 4 @@ -1367,8 +1437,6 @@ and don't actually accomplish anything on their own: Creates a new ResultSource object. Not normally called directly by end users. -=cut - =head2 column_info_from_storage =over @@ -1379,81 +1447,12 @@ Creates a new ResultSource object. Not normally called directly by end users. =back + __PACKAGE__->column_info_from_storage(1); + Enables the on-demand automatic loading of the above column metadata from storage as neccesary. This is *deprecated*, and should not be used. It will be removed before 1.0. - __PACKAGE__->column_info_from_storage(1); - -=head2 sqlt_deploy_callback - -An attribute which contains the callback to trigger on L. -Defaults to L. Can be a code reference or the name -of a method in the current result class. You would change the default value -in case you want to share a hook between several result sources, or if you -want to use a result source without a declared result class. - -=head2 default_sqlt_deploy_hook - -=over - -=item Arguments: $source, $sqlt_table - -=item Return value: undefined - -=back - -Proxies its arguments to a C method on the C -if such a method exists. This is useful to make L create -non-unique indexes, or set table options such as C. For -examples of what you can do with this, see -L. - -=cut - -sub default_sqlt_deploy_hook { - my $self = shift; - - my $class = $self->result_class; - - if ($class and $class->can('sqlt_deploy_hook')) { - $class->sqlt_deploy_hook(@_); - } -} - - -=head2 sqlt_deploy_hook - -=over 4 - -=item Arguments: $source, $sqlt_table - -=item Return value: undefined - -=back - -This is the entry point invoked by L -during the execution of L. -Delegates to the method name or code reference specified in -L. - -Note that the code is called by -L, which in turn is called -before L. Therefore the hook can be used only -to manipulate the L object before it is turned into -SQL fed to the database. If you want to execute post-deploy statements which -currently can can not be generated by L, the suggested -method is to overload L and use -L. - -=cut - -sub sqlt_deploy_hook { - my $self = shift; - if ( my $hook = $self->sqlt_deploy_callback) { - $self->$hook(@_); - } -} =head1 AUTHORS diff --git a/lib/SQL/Translator/Parser/DBIx/Class.pm b/lib/SQL/Translator/Parser/DBIx/Class.pm index c43a4a6..e365364 100644 --- a/lib/SQL/Translator/Parser/DBIx/Class.pm +++ b/lib/SQL/Translator/Parser/DBIx/Class.pm @@ -214,7 +214,7 @@ sub parse { } } - $source->sqlt_deploy_hook($table) + $source->_invoke_sqlt_deploy_hook($table); } if ($dbicschema->can('sqlt_deploy_hook')) {