RT56175: allow tables to have a prefix
[dbsrgits/DBIx-Class-Journal.git] / lib / DBIx / Class / Schema / Journal.pm
index 8076271..6c1678a 100644 (file)
@@ -15,7 +15,9 @@ __PACKAGE__->mk_classdata('journal_copy_sources');
 __PACKAGE__->mk_classdata('__journal_schema_prototype');
 __PACKAGE__->mk_classdata('_journal_schema'); ## schema object for journal
 __PACKAGE__->mk_classdata('journal_component');
+__PACKAGE__->mk_classdata('journal_components');
 __PACKAGE__->mk_classdata('journal_nested_changesets');
+__PACKAGE__->mk_classdata('journal_prefix');
 
 use strict;
 use warnings;
@@ -29,10 +31,28 @@ sub _journal_schema_prototype {
     my $c = blessed($self)||$self;
     my $journal_schema_class = "${c}::_JOURNAL";
     Class::C3::Componentised->inject_base($journal_schema_class, 'DBIx::Class::Schema::Journal::DB');
+    $journal_schema_class->load_components($self->journal_components)
+        if $self->journal_components;
     my $proto = $self->__journal_schema_prototype (
         $journal_schema_class->compose_namespace( $c.'::Journal')
     );
+
+
     my $comp = $self->journal_component || "Journal";
+    
+    my $prefix = $self->journal_prefix || '';
+    foreach my $audit (qw(ChangeSet ChangeLog)) {
+        my $class = blessed($proto) . "::$audit";
+
+        Class::C3::Componentised->inject_base($class, "DBIx::Class::Schema::Journal::DB::$audit");
+
+        $class->journal_define_table(blessed($proto), $prefix);
+
+        $proto->register_class($audit, $class);
+
+        $self->register_class($audit, $class)
+            if $self->journal_copy_sources;
+    }
 
     ## Create auditlog+history per table
     my %j_sources = map { $_ => 1 } $self->journal_sources
@@ -109,7 +129,7 @@ sub create_journal_for {
 
         Class::C3::Componentised->inject_base($class, "DBIx::Class::Schema::Journal::DB::$audit");
 
-        $class->journal_define_table($source);
+        $class->journal_define_table($source, blessed($journal_schema));
 
         $journal_schema->register_class($audit_source, $class);
 
@@ -170,5 +190,4 @@ sub changeset_session {
     $self->_journal_schema->current_session($sessionid);
 }
 
-
 1;