action_trigger.event_definition

Data-Modifying Triggers: This table has BEFORE ROW trigger(s) that modify row data before write. Values you INSERT or UPDATE may differ from what is actually stored. See the Triggers section below.

Deferrable Constraints: The following FK constraints are deferrable — they are checked at transaction end, not statement end: event_definition_cleanup_failure_fkey, event_definition_cleanup_success_fkey, event_definition_hook_fkey, event_definition_opt_in_setting_fkey, event_definition_owner_fkey, event_definition_reactor_fkey, event_definition_validator_fkey.

Columns

Column Type Nullable Default Notes

id PK

integer

No

nextval('action_trigger.event_definition_id_seq'::regclass)

active

boolean

No

true

owner FK

integer

No

actor.org_unit(id)

name

text

No

hook FK

text

No

action_trigger.hook(key)

validator FK

text

No

action_trigger.validator(module)

reactor FK

text

No

action_trigger.reactor(module)

cleanup_success FK

text

Yes

action_trigger.cleanup(module)

cleanup_failure FK

text

Yes

action_trigger.cleanup(module)

delay

interval

No

'00:05:00'::interval

max_delay

interval

Yes

repeat_delay

interval

Yes

usr_field

text

Yes

opt_in_setting FK

text

Yes

config.usr_setting_type(name)

delay_field

text

Yes

group_field

text

Yes

template

text

Yes

granularity

text

Yes

context_usr_path

text

Yes

context_library_path

text

Yes

context_bib_path

text

Yes

context_item_path

text

Yes

message_template

text

Yes

message_usr_path

text

Yes

message_library_path

text

Yes

message_title

text

Yes

retention_interval

interval

Yes

Primary Key

(id)

Foreign Keys

Column(s) References On Delete On Update Deferrable Constraint

cleanup_failure

action_trigger.cleanup(module)

NO ACTION

NO ACTION

DEFERRED

event_definition_cleanup_failure_fkey

cleanup_success

action_trigger.cleanup(module)

NO ACTION

NO ACTION

DEFERRED

event_definition_cleanup_success_fkey

hook

action_trigger.hook(key)

NO ACTION

NO ACTION

DEFERRED

event_definition_hook_fkey

opt_in_setting

config.usr_setting_type(name)

NO ACTION

NO ACTION

DEFERRED

event_definition_opt_in_setting_fkey

owner

actor.org_unit(id)

NO ACTION

NO ACTION

DEFERRED

event_definition_owner_fkey

reactor

action_trigger.reactor(module)

NO ACTION

NO ACTION

DEFERRED

event_definition_reactor_fkey

validator

action_trigger.validator(module)

NO ACTION

NO ACTION

DEFERRED

event_definition_validator_fkey

Unique Constraints

  • ev_def_name_owner_once: (owner, name)

  • ev_def_owner_hook_val_react_clean_delay_once: (owner, hook, validator, reactor, delay, delay_field)

Indexes

Index Method Definition

event_definition_pkey PK

btree

CREATE UNIQUE INDEX event_definition_pkey ON action_trigger.event_definition USING btree (id)

ev_def_name_owner_once UNIQUE

btree

CREATE UNIQUE INDEX ev_def_name_owner_once ON action_trigger.event_definition USING btree (owner, name)

ev_def_owner_hook_val_react_clean_delay_once UNIQUE

btree

CREATE UNIQUE INDEX ev_def_owner_hook_val_react_clean_delay_once ON action_trigger.event_definition USING btree (owner, hook, validator, reactor, delay, delay_field)

Triggers

Trigger Timing Event Level Function

is_valid_retention_interval

BEFORE

INSERT OR UPDATE

ROW

action_trigger.check_valid_retention_interval()

Trigger Bodies

is_valid_retention_interval

Function: action_trigger.check_valid_retention_interval()
Timing: BEFORE INSERT OR UPDATE ROW

This trigger modifies the row before it is written (returns a modified NEW).

BEGIN
    /*
     * 1. Retention intervals are always allowed on active hooks.
     * 2. On passive hooks, retention intervals are only allowed
     *    when the event definition has a max_delay value and the
     *    retention_interval value is greater than the difference
     *    beteween the delay and max_delay values.
     */
    PERFORM TRUE FROM action_trigger.hook
        WHERE key = NEW.hook AND NOT passive;

    IF FOUND THEN
        RETURN NEW;
    END IF;

    IF NEW.max_delay IS NOT NULL THEN
        IF EXTRACT(EPOCH FROM NEW.retention_interval) >
            ABS(EXTRACT(EPOCH FROM (NEW.max_delay - NEW.delay))) THEN
            RETURN NEW; -- all good
        ELSE
            RAISE EXCEPTION 'retention_interval is too short';
        END IF;
    ELSE
        RAISE EXCEPTION 'retention_interval requires max_delay';
    END IF;
END;

Referenced By

The following tables have foreign keys pointing to action_trigger.event_definition (5 referencing table(s)):

Table Referencing Column(s) Referenced Column(s) Constraint

action_trigger.alternate_template

event_def

id

alternate_template_event_def_fkey

action_trigger.environment

event_def

id

environment_event_def_fkey

action_trigger.event

event_def

id

event_event_def_fkey

action_trigger.event_def_group_member

event_def

id

event_def_group_member_event_def_fkey

action_trigger.event_params

event_def

id

event_params_event_def_fkey