remove Base
[dbsrgits/DBIx-Class-Journal.git] / lib / DBIx / Class / Schema / Journal / DB / AuditHistory.pm
CommitLineData
d27ed438 1package DBIx::Class::Schema::Journal::DB::AuditHistory;
2
59c8adb5 3use base 'DBIx::Class';
4
5sub 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}
d27ed438 39
40sub new
41{
42 my ($self, $data, @rest) = @_;
8092c4ed 43 my $source = $data->{-result_source};
d27ed438 44
f3602465 45 $data->{change} = {
46# ID => \'DEFAULT',
47 changeset_id => $source->schema->current_changeset,
f5c237df 48 %{$data->{change}||{}},
d27ed438 49 };
50
51 $self->next::method($data, @rest);
52}
53
541;