Class: LND::Tool::Store::HTLCEvent
- Inherits:
-
SQLiteBase
- Object
- SQLiteBase
- LND::Tool::Store::HTLCEvent
- Defined in:
- lib/lnd/tool/store/htlc_event.rb
Overview
HTLC event store
Instance Attribute Summary
Attributes inherited from SQLiteBase
Instance Method Summary collapse
-
#all ⇒ Enumerator::Lazy
Query all data.
-
#count ⇒ Integer
Get record count.
-
#prune_prior_to(time) ⇒ Object
Pruning record prior to
Time. -
#prune_up_to(max) ⇒ Integer
Pruning record up to
max. - #query(event_type: nil, limit: nil) ⇒ Array
-
#save(event) ⇒ Object
Save htlc event.
-
#setup ⇒ Object
Setup table.
Methods inherited from SQLiteBase
Constructor Details
This class inherits a constructor from LND::Tool::Store::SQLiteBase
Instance Method Details
#all ⇒ Enumerator::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" |
#count ⇒ Integer
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" |
#setup ⇒ Object
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" |