Class: BSV::Wallet::FileStore
Overview
JSON file-backed storage adapter.
Persists actions, outputs, and certificates as JSON files in a configurable directory (default: ~/.bsv-wallet/). Data survives process restarts.
Inherits all filtering and pagination logic from MemoryStore and adds load-on-init / save-on-mutation.
Constant Summary
collapse
- DEFAULT_DIR =
File.expand_path('~/.bsv-wallet')
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#delete_action(txid) ⇒ Object
-
#delete_certificate(type:, serial_number:, certifier:) ⇒ Object
-
#delete_output(outpoint) ⇒ Object
-
#initialize(dir: nil, logger: nil) ⇒ FileStore
constructor
A new instance of FileStore.
-
#lock_utxos(outpoints, reference:, no_send: false) ⇒ Object
-
#store_action(action_data) ⇒ Object
— Mutations: delegate to super, then persist —.
-
#store_certificate(cert_data) ⇒ Object
-
#store_output(output_data) ⇒ Object
-
#store_proof(txid, bump_hex) ⇒ Object
-
#store_setting(key, value) ⇒ Object
-
#store_transaction(txid, tx_hex) ⇒ Object
-
#update_action_status(txid, new_status) ⇒ Object
-
#update_output_state(outpoint, new_state, pending_reference: nil, no_send: nil) ⇒ Object
Methods inherited from MemoryStore
#count_actions, #count_certificates, #count_outputs, #find_actions, #find_certificates, #find_outputs, #find_proof, #find_setting, #find_spendable_outputs, #find_transaction, #release_stale_pending!, warn_in_production?
#count_actions, #count_certificates, #count_outputs, #find_actions, #find_certificates, #find_outputs, #find_proof, #find_setting, #find_spendable_outputs, #find_transaction, #release_stale_pending!
Constructor Details
#initialize(dir: nil, logger: nil) ⇒ FileStore
Returns a new instance of FileStore.
31
32
33
34
35
36
37
38
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 31
def initialize(dir: nil, logger: nil)
super()
@dir = dir || ENV.fetch('BSV_WALLET_DIR', DEFAULT_DIR)
@logger = logger || Logger.new($stderr, progname: 'bsv-wallet')
FileUtils.mkdir_p(@dir, mode: 0o700)
check_permissions
load_from_disk
end
|
Instance Attribute Details
#dir ⇒ String
Returns the storage directory path.
41
42
43
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 41
def dir
@dir
end
|
Instance Method Details
#delete_action(txid) ⇒ Object
57
58
59
60
61
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 57
def delete_action(txid)
result = super
save_actions if result
result
end
|
#delete_certificate(type:, serial_number:, certifier:) ⇒ Object
93
94
95
96
97
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 93
def delete_certificate(type:, serial_number:, certifier:)
result = super
save_certificates if result
result
end
|
#delete_output(outpoint) ⇒ Object
69
70
71
72
73
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 69
def delete_output(outpoint)
result = super
save_outputs if result
result
end
|
#lock_utxos(outpoints, reference:, no_send: false) ⇒ Object
81
82
83
84
85
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 81
def lock_utxos(outpoints, reference:, no_send: false)
locked = super
save_outputs unless locked.empty?
locked
end
|
#store_action(action_data) ⇒ Object
— Mutations: delegate to super, then persist —
45
46
47
48
49
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 45
def store_action(action_data)
result = super
save_actions
result
end
|
#store_certificate(cert_data) ⇒ Object
87
88
89
90
91
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 87
def store_certificate(cert_data)
result = super
save_certificates
result
end
|
#store_output(output_data) ⇒ Object
63
64
65
66
67
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 63
def store_output(output_data)
result = super
save_outputs
result
end
|
#store_proof(txid, bump_hex) ⇒ Object
99
100
101
102
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 99
def store_proof(txid, bump_hex)
super
save_proofs
end
|
#store_setting(key, value) ⇒ Object
109
110
111
112
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 109
def store_setting(key, value)
super
save_settings
end
|
#store_transaction(txid, tx_hex) ⇒ Object
104
105
106
107
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 104
def store_transaction(txid, tx_hex)
super
save_transactions
end
|
#update_action_status(txid, new_status) ⇒ Object
51
52
53
54
55
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 51
def update_action_status(txid, new_status)
result = super
save_actions
result
end
|
#update_output_state(outpoint, new_state, pending_reference: nil, no_send: nil) ⇒ Object
75
76
77
78
79
|
# File 'lib/bsv/wallet_interface/file_store.rb', line 75
def update_output_state(outpoint, new_state, pending_reference: nil, no_send: nil)
result = super
save_outputs
result
end
|