[Bast-commits] r4672 - trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema

nothingmuch at dev.catalyst.perl.org nothingmuch at dev.catalyst.perl.org
Tue Jul 29 22:31:41 BST 2008


Author: nothingmuch
Date: 2008-07-29 22:31:41 +0100 (Tue, 29 Jul 2008)
New Revision: 4672

Modified:
   trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal.pm
Log:
if journalling schema is not the main schema we need to call txn_do on that too

Modified: trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal.pm
===================================================================
--- trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal.pm	2008-07-29 20:10:01 UTC (rev 4671)
+++ trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal.pm	2008-07-29 21:31:41 UTC (rev 4672)
@@ -172,7 +172,7 @@
 
     my $jschema = $self->_journal_schema;
 
-    my $code;
+    my $code = $user_code;
 
     my $current_changeset = $jschema->current_changeset;
     if ( !$current_changeset || $self->journal_nested_changesets )
@@ -187,13 +187,19 @@
 
         # wrap the thunk with a new changeset creation
         $code = sub {
-            my $changeset = $jschema->journal_create_changeset( parent_id => $current_changeset );
-            local $current_changeset_ref->{changeset} = $changeset->ID;
-            $user_code->(@_);
-        };
+			my $changeset = $jschema->journal_create_changeset( parent_id => $current_changeset );
+			local $current_changeset_ref->{changeset} = $changeset->ID;
+			$user_code->(@_);
+		};
+
     }
 
-    $self->next::method($code || $user_code);
+	if ( $jschema != $self ) {
+		my $inner_code = $code;
+		$code = sub { $jschema->txn_do($inner_code, @_) };
+	}
+
+	return $self->next::method($code, @args);
 }
 
 sub changeset_user




More information about the Bast-commits mailing list