[Bast-commits] r3217 - in trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema: . Journal/DB

castaway at dev.catalyst.perl.org castaway at dev.catalyst.perl.org
Sat Apr 28 23:21:53 GMT 2007


Author: castaway
Date: 2007-04-28 23:21:44 +0100 (Sat, 28 Apr 2007)
New Revision: 3217

Added:
   trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuditHistory.pm
   trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuditLog.pm
   trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuduitLog.pm
   trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/Base.pm
Modified:
   trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal.pm
   trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/Change.pm
Log:
Various improvements from mst


Added: trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuditHistory.pm
===================================================================
--- trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuditHistory.pm	                        (rev 0)
+++ trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuditHistory.pm	2007-04-28 22:21:44 UTC (rev 3217)
@@ -0,0 +1,23 @@
+package DBIx::Class::Schema::Journal::DB::AuditHistory;
+
+use base 'DBIx::Class::Schema::Journal::DB::Base';
+
+__PACKAGE__->add_columns(
+                           change_id => {
+                               data_type => 'integer',
+                               is_nullable => 0,
+                           });
+__PACKAGE__->belongs_to('change', 'DBIx::Class::Schema::Journal::DB::Change', 'change_id');
+
+sub new
+{
+    my ($self, $data, @rest) = @_;
+
+    $data->{change} = {
+        changeset_id => $self->result_source->schema->_journal_schema->current_changeset,
+    };
+
+    $self->next::method($data, @rest);
+}                           
+
+1;

Added: trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuditLog.pm
===================================================================
--- trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuditLog.pm	                        (rev 0)
+++ trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuditLog.pm	2007-04-28 22:21:44 UTC (rev 3217)
@@ -0,0 +1,34 @@
+package DBIx::Class::Schema::Journal::DB::AuditLog;
+
+use base 'DBIx::Class::Schema::Journal::DB::Base';
+
+__PACKAGE__->add_columns(
+                           ID => {
+                               data_type => 'integer',
+                               is_nullable => 0,
+                           },
+                           create_id => {
+                               data_type => 'integer',
+                               is_nullable => 0,
+                               is_foreign_key => 1,
+                           },
+                           delete_id => {
+                               data_type => 'integer',
+                               is_nullable => 1,
+                               is_foreign_key => 1,
+                           });
+  __PACKAGE__->belongs_to('created', 'DBIx::Class::Schema::Journal::DB::Change', 'create_id');
+  __PACKAGE__->belongs_to('deleted', 'DBIx::Class::Schema::Journal::DB::Change', 'delete_id');
+
+sub new
+{
+    my ($self, $data, @rest) = @_;
+
+    $data->{created} = {
+        changeset_id => $self->result_source->schema->_journal_schema->current_changeset,
+    };
+
+    $self->next::method($data, @rest);
+}                           
+
+1;

Added: trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuduitLog.pm
===================================================================
--- trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuduitLog.pm	                        (rev 0)
+++ trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/AuduitLog.pm	2007-04-28 22:21:44 UTC (rev 3217)
@@ -0,0 +1,9 @@
+package DBIx::Class::Schema::Journal::DB::Base;
+
+use base 'DBIx::Class';
+
+__PACKAGE__->load_components(qw/Core/);
+__PACKAGE__->table('');
+
+
+1;

Added: trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/Base.pm
===================================================================
--- trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/Base.pm	                        (rev 0)
+++ trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/Base.pm	2007-04-28 22:21:44 UTC (rev 3217)
@@ -0,0 +1,9 @@
+package DBIx::Class::Schema::Journal::DB::Base;
+
+use base 'DBIx::Class';
+
+__PACKAGE__->load_components(qw/Core/);
+__PACKAGE__->table('');
+
+
+1;

Modified: trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/Change.pm
===================================================================
--- trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/Change.pm	2007-04-28 13:44:05 UTC (rev 3216)
+++ trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal/DB/Change.pm	2007-04-28 22:21:44 UTC (rev 3217)
@@ -25,6 +25,7 @@
 
 
 __PACKAGE__->set_primary_key('ID');
+__PACKAGE__->add_unique_constraint('setorder', [ qw/changeset_id order_in/ ]);
 __PACKAGE__->belongs_to('changeset', 'DBIx::Class::Schema::Journal::DB::ChangeSet', 'changeset_id');
 
 __PACKAGE__->position_column('order_in');

Modified: trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal.pm
===================================================================
--- trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal.pm	2007-04-28 13:44:05 UTC (rev 3216)
+++ trunk/DBIx-Class-Journal/lib/DBIx/Class/Schema/Journal.pm	2007-04-28 22:21:44 UTC (rev 3217)
@@ -2,7 +2,10 @@
 
 use base qw/DBIx::Class/;
 
-__PACKAGE__->mk_classdata('journal_dsn');
+use Scalar::Util 'blessed';
+
+__PACKAGE__->mk_classdata('journal_storage_type');
+__PACKAGE__->mk_classdata('journal_connection');
 __PACKAGE__->mk_classdata('journal_sources'); ## [ source names ]
 __PACKAGE__->mk_classdata('journal_user'); ## [ class, field for user id ]
 __PACKAGE__->mk_classdata('_journal_schema');
@@ -12,8 +15,15 @@
     my $self = shift;
     $self->next::method(@_);
 
-    $self->_journal_schema((__PACKAGE__ . '::DB')->connect($self->journal_dsn || $self->storage->connect_info));
+    my $journal_schema = (__PACKAGE__ . '::DB')->connect($self->journal_connection || $self->storage->connect_info);
+    if($self->journal_storage_type)
+    {
+        $journal_schema->storage_type($self->journal_storage_type);
+    }
 
+    ## get our own private version of the journaling sources
+    $self->_journal_schema($journal_schema->compose_namespace(blessed($self) . '::Journal'));
+
     my %j_sources = @{$self->journal_sources} ? map { $_ => 1 } @{$self->journal_sources} : map { $_ => 1 } $self->sources;
     foreach my $s_name ($self->sources)
     {
@@ -28,6 +38,8 @@
         return;
     }
 
+    ## get our own private version of the journaling sources
+    $self->_journal_schema->compose_namespace(blessed($self) . '::Journal');
     DBIx::Class::Schema::Journal::DB::ChangeSet->belongs_to('user', @{$self->journal_user});
 }
 
@@ -35,14 +47,14 @@
 {
     my ($self, $sourcename) = @_;
 
-    return __PACKAGE__ . "::DB::${sourcename}AuditLog";
+    return blessed($self->_journal_schema) . "::${sourcename}AuditLog";
 }
 
 sub get_audit_history_class_name
 {
     my ($self, $sourcename) = @_;
 
-    return __PACKAGE__ . "::DB::${sourcename}AuditHistory";
+    return blessed($self->_journal_schema) . "::${sourcename}AuditHistory";
 }
 
 sub create_journal_for
@@ -51,38 +63,16 @@
 
     my $source = $self->source($s_name);
     my $newclass = $self->get_audit_log_class_name($s_name);
-    DBIx::Class::Componentised->inject_base($newclass, 'DBIx::Class');
-    $newclass->load_components('Core');
+    DBIx::Class::Componentised->inject_base($newclass, 'DBIx::Class::Schema::Journal::DB::AuditLog');
     $newclass->table(lc($s_name) . "_audit_log");
-    $newclass->add_columns(
-                           ID => {
-                               data_type => 'integer',
-                               is_nullable => 0,
-                           },
-                           create_id => {
-                               data_type => 'integer',
-                               is_nullable => 0,
-                           },
-                           delete_id => {
-                               data_type => 'integer',
-                               is_nullable => 1,
-                           });
-    $newclass->belongs_to('created', 'DBIx::Class::Schema::Journal::DB::Change', 'create_id');
-    $newclass->belongs_to('deleted', 'DBIx::Class::Schema::Journal::DB::Change', 'delete_id');
                            
 
     my $histclass = $self->get_audit_hisory_class_name($s_name);
-    DBIx::Class::Componentised->inject_base($histclass, 'DBIx::Class');
-    $histclass->load_components('Core');
+    DBIx::Class::Componentised->inject_base($histclass, 'DBIx::Class::Schema::Journal::DB::AuditHistory');
     $histclass->table(lc($s_name) . "_audit_hisory");
     $histclass->add_columns(
-                           change_id => {
-                               data_type => 'integer',
-                               is_nullable => 0,
-                           },
                             map { $_ => $source->column_info($_) } $source->columns
                            );
-    $histclass->belongs_to('change', 'DBIx::Class::Schema::Journal::DB::Change', 'change_id');
                            
 }
 




More information about the Bast-commits mailing list