Class: Textus::Infra::Store::AuditLog
- Inherits:
-
Base
- Object
- Base
- Textus::Infra::Store::AuditLog
show all
- Defined in:
- lib/textus/infra/store/audit_log.rb
Instance Method Summary
collapse
-
#append(role:, verb:, key:, etag_before: nil, etag_after: nil, correlation_id: nil) ⇒ Object
-
#last_writer(key) ⇒ Object
-
#latest ⇒ Object
-
#list(seq_since: nil, key: nil, role: nil, verb: nil, correlation_id: nil, limit: nil) ⇒ Object
-
#min_available ⇒ Object
Methods inherited from Base
#initialize
Instance Method Details
#append(role:, verb:, key:, etag_before: nil, etag_after: nil, correlation_id: nil) ⇒ Object
5
6
7
8
9
10
11
|
# File 'lib/textus/infra/store/audit_log.rb', line 5
def append(role:, verb:, key:, etag_before: nil, etag_after: nil, correlation_id: nil)
table(:audit_events).insert(
ts: Time.now.utc.iso8601,
role:, verb:, key:,
etag_before:, etag_after:, correlation_id:
)
end
|
#last_writer(key) ⇒ Object
32
33
34
35
36
37
38
|
# File 'lib/textus/infra/store/audit_log.rb', line 32
def last_writer(key)
row = table(:audit_events)
.where(key:, verb: %w[put delete key_delete])
.order(Sequel.desc(:seq))
.first
result(row)
end
|
#latest ⇒ Object
24
25
26
|
# File 'lib/textus/infra/store/audit_log.rb', line 24
def latest
result(table(:audit_events).order(Sequel.desc(:seq)).first) || { seq: 0 }
end
|
#list(seq_since: nil, key: nil, role: nil, verb: nil, correlation_id: nil, limit: nil) ⇒ Object
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/textus/infra/store/audit_log.rb', line 13
def list(seq_since: nil, key: nil, role: nil, verb: nil, correlation_id: nil, limit: nil)
dataset = table(:audit_events)
dataset = dataset.where { seq > seq_since } if seq_since
dataset = dataset.where(key:) if key
dataset = dataset.where(role:) if role
dataset = dataset.where(verb:) if verb
dataset = dataset.where(correlation_id:) if correlation_id
dataset = dataset.limit(limit) if limit
results(dataset.order(:seq).all)
end
|
#min_available ⇒ Object
28
29
30
|
# File 'lib/textus/infra/store/audit_log.rb', line 28
def min_available
result(table(:audit_events).order(:seq).first)&.dig(:seq)
end
|