[Bast-commits] r4705 - in DBIx-Class-Journal/1.000/trunk/lib/DBIx/Class: . Schema/Journal

nothingmuch at dev.catalyst.perl.org nothingmuch at dev.catalyst.perl.org
Fri Aug 1 03:06:26 BST 2008


Author: nothingmuch
Date: 2008-08-01 03:06:26 +0100 (Fri, 01 Aug 2008)
New Revision: 4705

Modified:
   DBIx-Class-Journal/1.000/trunk/lib/DBIx/Class/Journal.pm
   DBIx-Class-Journal/1.000/trunk/lib/DBIx/Class/Schema/Journal/DB.pm
Log:
history for insert too

Modified: DBIx-Class-Journal/1.000/trunk/lib/DBIx/Class/Journal.pm
===================================================================
--- DBIx-Class-Journal/1.000/trunk/lib/DBIx/Class/Journal.pm	2008-08-01 02:06:18 UTC (rev 4704)
+++ DBIx-Class-Journal/1.000/trunk/lib/DBIx/Class/Journal.pm	2008-08-01 02:06:26 UTC (rev 4705)
@@ -18,25 +18,9 @@
 #     $class->next::method($attrs, @rest);
 # }
 
-sub journal_update_or_create_log_entry
-{
-    my ($self, $field ) = @_;
-    my $rs = $self->result_source;
-    my $s_name = $rs->source_name();
-
-    my $jschema = $rs->schema->_journal_schema;
-
-    my $al = $jschema->resultset("${s_name}AuditLog");
-
-    my %id = map { $_ => $self->get_column($_)} $self->primary_columns;
-
-    my %extra;
-
-    if ( $field ) {
-        $extra{$field} = $jschema->journal_create_change->id;
-    }
-
-    $al->update_or_create({ %extra, %id });
+sub _journal_schema {
+    my $self = shift;
+    $self->result_source->schema->_journal_schema;
 }
 
 sub insert
@@ -56,8 +40,12 @@
 {
     my ($self) = @_;
 
-    $self->journal_update_or_create_log_entry('create_id')
-        if $self->in_storage;
+    if ( $self->in_storage ) {
+        my $j = $self->_journal_schema;
+        my $change_id = $j->journal_create_change()->id;
+        $j->journal_update_or_create_log_entry( $self, create_id => $change_id );
+        $j->journal_record_in_history( $self, audit_change_id => $change_id );
+    }
 }
 
 ## On delete, update delete_id of AuditLog
@@ -73,8 +61,10 @@
 {
     my ($self) = @_;
 
-    $self->journal_update_or_create_log_entry('delete_id')
-        unless $self->in_storage;
+    unless ($self->in_storage) {
+        my $j = $self->_journal_schema;
+        $j->journal_update_or_create_log_entry( $self, delete_id => $j->journal_create_change->id );
+    }
 }
 
 ## On update, copy previous row's contents to AuditHistory
@@ -92,14 +82,11 @@
 
     if($self->in_storage)
     {
-        my $s_name = $self->result_source->source_name();
-        my $ah = $self->result_source->schema->_journal_schema->resultset("${s_name}AuditHistory");
+        my $j = $self->_journal_schema;
 
-        my $obj = $self->result_source->resultset->find( $self->ident_condition );
-        $ah->create({
-            $obj->get_columns,
-            change => { changeset_id => $ah->result_source->schema->current_changeset },
-        });
+        my $change = $j->journal_create_change;
+        my $prev = $self->result_source->resultset->find( $self->ident_condition );
+        $j->journal_record_in_history( $prev, audit_change_id => $change );
     }
 }
 

Modified: DBIx-Class-Journal/1.000/trunk/lib/DBIx/Class/Schema/Journal/DB.pm
===================================================================
--- DBIx-Class-Journal/1.000/trunk/lib/DBIx/Class/Schema/Journal/DB.pm	2008-08-01 02:06:18 UTC (rev 4704)
+++ DBIx-Class-Journal/1.000/trunk/lib/DBIx/Class/Schema/Journal/DB.pm	2008-08-01 02:06:26 UTC (rev 4705)
@@ -58,4 +58,25 @@
     $self->resultset("ChangeLog")->create({ changeset_id => $self->current_changeset });
 }
 
+sub journal_update_or_create_log_entry
+{
+    my ($self, $row, @cols) = @_;
+
+    my $s_name = $row->result_source->source_name;
+
+    my %id = map { $_ => $row->get_column($_)} $row->primary_columns;
+
+    $self->resultset("${s_name}AuditLog")->update_or_create({ @cols, %id });
+}
+
+sub journal_record_in_history
+{
+    my ($self, $row, @cols) = @_;
+
+    my $s_name = $row->result_source->source_name;
+
+    $self->resultset("${s_name}AuditHistory")->create({ $row->get_columns, @cols });
+}
+
+
 1;




More information about the Bast-commits mailing list