Class: Rubyists::PgtOutbox::Trigger

Inherits:
Object
  • Object
show all
Defined in:
lib/sequel/pgt_outbox/trigger.rb

Overview

The Outbox Trigger

Constant Summary collapse

DEFAULT_OPTS =
{ after: true, each_row: true }.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(db, table, function, events: %i[insert update delete],, opts: { when: nil }) ⇒ Trigger

Returns a new instance of Trigger.



17
18
19
20
21
22
23
# File 'lib/sequel/pgt_outbox/trigger.rb', line 17

def initialize(db, table, function, events: %i[insert update delete], opts: { when: nil })
  @db = db
  @table = table
  @function = function
  @events = events
  @opts = opts
end

Class Method Details

.create!(db, table, function, events: %i[insert update delete],, opts: { when: nil }) ⇒ Object



13
14
15
# File 'lib/sequel/pgt_outbox/trigger.rb', line 13

def self.create!(db, table, function, events: %i[insert update delete], opts: { when: nil })
  new(db, table, function, events: events, opts: opts).create!
end

Instance Method Details

#afterObject



34
35
36
# File 'lib/sequel/pgt_outbox/trigger.rb', line 34

def after
  trigger_opts.fetch(:after)
end

#create!Object



29
30
31
32
# File 'lib/sequel/pgt_outbox/trigger.rb', line 29

def create!
  db.create_trigger(table, name, function, events:, each_row:, after:, when: where)
  self
end

#each_rowObject



42
43
44
# File 'lib/sequel/pgt_outbox/trigger.rb', line 42

def each_row
  trigger_opts.fetch(:each_row)
end

#nameObject



25
26
27
# File 'lib/sequel/pgt_outbox/trigger.rb', line 25

def name
  @name ||= opts.fetch(:trigger_name, function)
end

#trigger_optsObject



46
47
48
# File 'lib/sequel/pgt_outbox/trigger.rb', line 46

def trigger_opts
  @trigger_opts ||= DEFAULT_OPTS.merge(opts.fetch(:trigger_opts, {}))
end

#whereObject



38
39
40
# File 'lib/sequel/pgt_outbox/trigger.rb', line 38

def where
  opts.fetch(:when, nil)
end