Extract couple more stateless functions from DBIHacks (like 497d0451)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Storage / DBI / UniqueIdentifier.pm
index 955529d..e6f3466 100644 (file)
@@ -38,7 +38,8 @@ In which case it is used as the name of database function to create a new GUID,
 =item coderef
 
 In which case the coderef should return a string GUID, using L<Data::GUID>, or
-whatever GUID generation method you prefer.
+whatever GUID generation method you prefer. It is passed the C<$self>
+L<DBIx::Class::Storage> reference as a parameter.
 
 =back
 
@@ -58,9 +59,7 @@ sub _is_guid_type {
 
 sub _prefetch_autovalues  {
   my $self = shift;
-  my ($source, $to_insert) = @_;
-
-  my $col_info = $source->columns_info;
+  my ($source, $col_info, $to_insert) = @_;
 
   my %guid_cols;
   my @pk_cols = $source->primary_columns;
@@ -91,13 +90,13 @@ sub _prefetch_autovalues  {
 
     if (not defined $guid_method) {
       $self->throw_exception(
-        'You must set new_guid on your storage. See perldoc '
+        'You must set new_guid() on your storage. See perldoc '
        .'DBIx::Class::Storage::DBI::UniqueIdentifier'
       );
     }
 
     if (ref $guid_method eq 'CODE') {
-      $to_insert->{$guid_col} = $guid_method->();
+      $to_insert->{$guid_col} = $guid_method->($self);
     }
     else {
       ($to_insert->{$guid_col}) = $self->_get_dbh->selectrow_array("SELECT $guid_method");
@@ -107,13 +106,16 @@ sub _prefetch_autovalues  {
   return $self->next::method(@_);
 }
 
-=head1 AUTHOR
+=head1 FURTHER QUESTIONS?
 
-See L<DBIx::Class/AUTHOR> and L<DBIx::Class/CONTRIBUTORS>.
+Check the list of L<additional DBIC resources|DBIx::Class/GETTING HELP/SUPPORT>.
 
-=head1 LICENSE
+=head1 COPYRIGHT AND LICENSE
 
-You may distribute this code under the same terms as Perl itself.
+This module is free software L<copyright|DBIx::Class/COPYRIGHT AND LICENSE>
+by the L<DBIx::Class (DBIC) authors|DBIx::Class/AUTHORS>. You can
+redistribute it and/or modify it under the same terms as the
+L<DBIx::Class library|DBIx::Class/COPYRIGHT AND LICENSE>.
 
 =cut