Class: LND::Tool::Store::HTLCEvent

Inherits:
SQLiteBase show all
Defined in:
lib/lnd/tool/store/htlc_event.rb

Overview

HTLC event store

Instance Attribute Summary

Attributes inherited from SQLiteBase

#db

Instance Method Summary collapse

Methods inherited from SQLiteBase

#initialize

Constructor Details

This class inherits a constructor from LND::Tool::Store::SQLiteBase

Instance Method Details

#allEnumerator::Lazy

Query all data.



52
53
54
55
56
57
58
59
# File 'lib/lnd/tool/store/htlc_event.rb', line 52

def all
  query = "    SELECT incoming_channel_id, outgoing_channel_id,\n    incoming_htlc_id, outgoing_htlc_id, timestamp_ns, event_type, forward_event, forward_fail_event,\n    settle_event, link_fail_event FROM HtlcEvent ORDER BY created_datetime DESC\n  SQL\n  convert(db.query(query))\nend\n"

#countInteger

Get record count.



85
86
87
# File 'lib/lnd/tool/store/htlc_event.rb', line 85

def count
  db.get_first_value('SELECT count(*) FROM HtlcEvent').to_i
end

#prune_prior_to(time) ⇒ Object

Pruning record prior to Time.



103
104
105
106
# File 'lib/lnd/tool/store/htlc_event.rb', line 103

def prune_prior_to(time)
  query = 'DELETE FROM HtlcEvent WHERE timestamp_ns < ?'
  db.execute(query, [time.to_i * 1_000_000_000])
end

#prune_up_to(max) ⇒ Integer

Pruning record up to max.



92
93
94
95
96
97
98
99
# File 'lib/lnd/tool/store/htlc_event.rb', line 92

def prune_up_to(max)
  pruning_count = count - max
  return 0 if pruning_count <= 0

  query = 'DELETE FROM HtlcEvent ORDER BY created_datetime ASC LIMIT ?'
  db.execute(query, [pruning_count])
  pruning_count
end

#query(event_type: nil, limit: nil) ⇒ Array



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/lnd/tool/store/htlc_event.rb', line 64

def query(event_type: nil, limit: nil)
  query = "    SELECT incoming_channel_id, outgoing_channel_id,\n    incoming_htlc_id, outgoing_htlc_id, timestamp_ns, event_type, forward_event, forward_fail_event,\n    settle_event, link_fail_event FROM HtlcEvent\n  SQL\n  bind = []\n  if event_type\n    query << ' WHERE event_type = ?'\n    bind << event_type\n  end\n  query << ' ORDER BY created_datetime DESC'\n  if limit\n    query << ' LIMIT ?'\n    bind << limit\n  end\n  convert(db.query(query, bind))\nend\n"

#save(event) ⇒ Object

Save htlc event.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/lnd/tool/store/htlc_event.rb', line 29

def save(event)
  query = "    INSERT INTO HtlcEvent (incoming_channel_id, outgoing_channel_id,\n    incoming_htlc_id, outgoing_htlc_id, timestamp_ns, event_type, forward_event, forward_fail_event,\n    settle_event, link_fail_event) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n  SQL\n  values = [\n    event.incoming_channel_id,\n    event.outgoing_channel_id,\n    event.incoming_htlc_id,\n    event.outgoing_htlc_id,\n    event.timestamp_ns,\n    event.event_type.to_s,\n    event.forward_event ? Routerrpc::ForwardEvent.encode_json(event.forward_event) : nil,\n    event.forward_fail_event ? Routerrpc::ForwardFailEvent.encode_json(event.forward_fail_event) : nil,\n    event.settle_event ? Routerrpc::SettleEvent.encode_json(event.settle_event) : nil,\n    event.link_fail_event ? Routerrpc::LinkFailEvent.encode_json(event.link_fail_event) : nil\n  ]\n  db.execute(query, values)\nend\n"

#setupObject

Setup table.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/lnd/tool/store/htlc_event.rb', line 8

def setup
  query = "    CREATE TABLE IF NOT EXISTS HtlcEvent(\n    id INTEGER PRIMARY KEY,\n    incoming_channel_id INTEGER,\n    outgoing_channel_id INTEGER,\n    incoming_htlc_id INTEGER,\n    outgoing_htlc_id INTEGER,\n    timestamp_ns INTEGER,\n    event_type TEXT,\n    forward_event TEXT,\n    forward_fail_event TEXT,\n    settle_event TEXT,\n    link_fail_event TEXT,\n    created_datetime TIMESTAMP DEFAULT (datetime(CURRENT_TIMESTAMP,'localtime')))\n  SQL\n  db.execute(query)\nend\n"