Skip to content

Commit

Permalink
feat: reset path memory in mpay
Browse files Browse the repository at this point in the history
  • Loading branch information
michael1011 committed Nov 2, 2023
1 parent bd9de0e commit 1cb8cb2
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
31 changes: 31 additions & 0 deletions tools/plugins/mpay/data/reset.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import json

from pyln.client import Plugin
from sqlalchemy import delete
from sqlalchemy.orm import Session

from plugins.mpay.db.db import Database
from plugins.mpay.db.models import Attempt, Hop, Payment


class Reset:
_pl: Plugin
_db: Database

def __init__(self, pl: Plugin, db: Database) -> None:
self._pl = pl
self._db = db

def reset_all(self) -> dict[str, int]:
res: dict[str, int] = {}

with Session(self._db.engine) as e:
res["hops"] = e.execute(delete(Hop)).rowcount
res["attempts"] = e.execute(delete(Attempt)).rowcount
res["payments"] = e.execute(delete(Payment)).rowcount

e.commit()

self._pl.log(f"Reset path memory: {json.dumps(res)}")

return res
11 changes: 11 additions & 0 deletions tools/plugins/mpay/mpay.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from plugins.mpay.config import Config, register_options
from plugins.mpay.consts import PLUGIN_NAME, VERSION
from plugins.mpay.data.payments import Payments
from plugins.mpay.data.reset import Reset
from plugins.mpay.data.route_stats import RouteStatsFetcher
from plugins.mpay.db.db import Database
from plugins.mpay.errors import Errors
Expand All @@ -26,6 +27,7 @@
register_options(pl)

db = Database(pl)
reset = Reset(pl, db)
payments_fetcher = Payments(pl, db)
route_stats_fetcher = RouteStatsFetcher(pl, db)

Expand Down Expand Up @@ -136,4 +138,13 @@ def mpay_list(request: Request, bolt11: str = "", payment_hash: str = "") -> dic
return {"payments": payments}


@pl.async_method(
method_name="mpay-resetpm",
category=PLUGIN_NAME,
)
@thread_method(executor=executor)
def mpay_reset(request: Request) -> dict[str, Any]:
return {"deleted": reset.reset_all()}


pl.run()

0 comments on commit 1cb8cb2

Please sign in to comment.