Aniki
view release on metacpan or search on metacpan
lib/Aniki/Filter.pm view on Meta::CPAN
sub apply_trigger {
my ($self, $event, $table_name, $row) = @_;
my %row = %$row;
my $trigger = $self->get_trigger_callback($event, $table_name);
return $trigger->(\%row);
}
sub get_inflate_callback {
my ($self, $table_name, $column) = @_;
unless (exists $self->{__inflate_callbacks_cache}->{$table_name}->{$column}) {
my $callback;
for my $pair (@{ $self->global_inflators }) {
my ($rx, $code) = @$pair;
$callback = $code if $column =~ $rx;
}
for my $pair (@{ $self->table_inflators->{$table_name} }) {
my ($rx, $code) = @$pair;
$callback = $code if $column =~ $rx;
}
$self->{__inflate_callbacks_cache}->{$table_name}->{$column} = $callback;
}
return $self->{__inflate_callbacks_cache}->{$table_name}->{$column};
}
sub get_deflate_callback {
my ($self, $table_name, $column) = @_;
unless (exists $self->{__deflate_callbacks_cache}->{$table_name}->{$column}) {
my $callback;
for my $pair (@{ $self->global_deflators }) {
my ($rx, $code) = @$pair;
$callback = $code if $column =~ $rx;
}
for my $pair (@{ $self->table_deflators->{$table_name} }) {
my ($rx, $code) = @$pair;
$callback = $code if $column =~ $rx;
}
$self->{__deflate_callbacks_cache}->{$table_name}->{$column} = $callback;
}
return $self->{__deflate_callbacks_cache}->{$table_name}->{$column};
}
sub get_trigger_callback {
my ($self, $event, $table_name) = @_;
unless (exists $self->{__trigger_callback_cache}->{$table_name}->{$event}) {
my @triggers = (
@{ $self->table_triggers->{$table_name}->{$event} || [] },
@{ $self->global_triggers->{$event} || [] },
);
( run in 0.550 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )