Commit | Line | Data |
d27ed438 |
1 | package DBIx::Class::Schema::Journal::DB::AuditHistory; |
2 | |
59c8adb5 |
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 | } |
d27ed438 |
39 | |
40 | sub 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 | |
54 | 1; |