Add permanent plumbing for _TempExtlib (d0435d75)
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / CDBICompat / Triggers.pm
1 package # hide from PAUSE
2     DBIx::Class::CDBICompat::Triggers;
3
4 use strict;
5 use warnings;
6
7 use base 'DBIx::Class';
8
9 use Class::Trigger;
10
11 sub insert {
12   my $self = shift;
13
14   return $self->create(@_) unless ref $self;
15
16   $self->call_trigger('before_create');
17   $self->next::method(@_);
18   $self->call_trigger('after_create');
19   return $self;
20 }
21
22 sub update {
23   my $self = shift;
24   $self->call_trigger('before_update');
25   my @to_update = keys %{$self->{_dirty_columns} || {}};
26   return -1 unless @to_update;
27   $self->next::method(@_);
28   $self->call_trigger('after_update');
29   return $self;
30 }
31
32 sub delete {
33   my $self = shift;
34   $self->call_trigger('before_delete') if ref $self;
35   $self->next::method(@_);
36   $self->call_trigger('after_delete') if ref $self;
37   return $self;
38 }
39
40 sub store_column {
41   my ($self, $column, $value, @rest) = @_;
42   my $vals = { $column => $value };
43   $self->call_trigger("before_set_${column}", $value, $vals);
44   return $self->next::method($column, $vals->{$column});
45 }
46
47 1;