5 changed files with 76 additions and 7 deletions
@ -0,0 +1,39 @@ |
|||||
|
#!/usr/bin/env python3 |
||||
|
"""This plugin is used to check that db_write calls are working correctly. |
||||
|
""" |
||||
|
from lightning import Plugin, RpcError |
||||
|
import sqlite3 |
||||
|
|
||||
|
plugin = Plugin() |
||||
|
plugin.sqlite_pre_init_cmds = [] |
||||
|
plugin.initted = False |
||||
|
|
||||
|
|
||||
|
@plugin.init() |
||||
|
def init(configuration, options, plugin): |
||||
|
if not plugin.get_option('dblog-file'): |
||||
|
raise RpcError("No dblog-file specified") |
||||
|
plugin.conn = sqlite3.connect(plugin.get_option('dblog-file'), |
||||
|
isolation_level=None) |
||||
|
plugin.log("replaying pre-init data:") |
||||
|
for c in plugin.sqlite_pre_init_cmds: |
||||
|
plugin.conn.execute(c) |
||||
|
plugin.log("{}".format(c)) |
||||
|
plugin.initted = True |
||||
|
plugin.log("initialized") |
||||
|
|
||||
|
|
||||
|
@plugin.hook('db_write') |
||||
|
def db_write(plugin, writes): |
||||
|
if not plugin.initted: |
||||
|
plugin.log("deferring {} commands".format(len(writes))) |
||||
|
plugin.sqlite_pre_init_cmds += writes |
||||
|
else: |
||||
|
for c in writes: |
||||
|
plugin.conn.execute(c) |
||||
|
plugin.log("{}".format(c)) |
||||
|
return True |
||||
|
|
||||
|
|
||||
|
plugin.add_option('dblog-file', None, 'The db file to create.') |
||||
|
plugin.run() |
Loading…
Reference in new issue