remove Base
[dbsrgits/DBIx-Class-Journal.git] / lib / DBIx / Class / Schema / Journal / DB / AuditHistory.pm
1 package DBIx::Class::Schema::Journal::DB::AuditHistory;
2
3 use base 'DBIx::Class';
4
5 sub journal_define_table {
6     my ( $class, $source ) = @_;
7
8     $class->load_components(qw(Core));
9
10     $class->table($source->name . "_audit_log");
11     
12     $class->add_column( audit_change_id => {
13         data_type => 'integer',
14         is_nullable => 0,
15         is_primary_key => 1,
16     });
17
18     $class->set_primary_key("audit_change_id");
19
20     foreach my $column ( $source->columns ) {
21         my $info = $source->column_info($column);
22
23         my %hist_info = %$info;
24
25         delete $hist_info{$_} for qw(
26             is_foreign_key
27             is_primary_key
28             is_auto_increment
29             default_value
30         );
31         
32         $hist_info{is_nullable} = 1;
33
34         $class->add_column($column => \%hist_info);
35     }
36                            
37     $class->belongs_to('change', 'DBIx::Class::Schema::Journal::DB::ChangeLog', 'audit_change_id');
38 }
39
40 sub new
41 {
42     my ($self, $data, @rest) = @_;
43     my $source = $data->{-result_source};
44
45     $data->{change} = { 
46 #        ID => \'DEFAULT',
47         changeset_id => $source->schema->current_changeset,
48         %{$data->{change}||{}}, 
49     };
50
51     $self->next::method($data, @rest);
52 }                           
53
54 1;