From 7a6450f0327e52db8691bc17ce9f2307ae821883 Mon Sep 17 00:00:00 2001 From: callebtc <93376500+callebtc@users.noreply.github.com> Date: Fri, 2 Dec 2022 18:51:18 +0100 Subject: [PATCH] add expiry to Payment model --- lnbits/core/models.py | 15 +++++++++++++++ lnbits/tasks.py | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lnbits/core/models.py b/lnbits/core/models.py index 216acafd..a61fbb02 100644 --- a/lnbits/core/models.py +++ b/lnbits/core/models.py @@ -1,6 +1,8 @@ import hashlib import hmac import json +import time +import datetime from sqlite3 import Row from typing import Dict, List, NamedTuple, Optional @@ -83,6 +85,7 @@ class Payment(BaseModel): bolt11: str preimage: str payment_hash: str + expiry: int extra: Optional[Dict] = {} wallet_id: str webhook: Optional[str] @@ -101,6 +104,7 @@ class Payment(BaseModel): fee=row["fee"], memo=row["memo"], time=row["time"], + expiry=row["expiry"], wallet_id=row["wallet"], webhook=row["webhook"], webhook_status=row["webhook_status"], @@ -128,6 +132,10 @@ class Payment(BaseModel): def is_out(self) -> bool: return self.amount < 0 + @property + def is_expired(self) -> bool: + return self.expiry < time.time() + @property def is_uncheckable(self) -> bool: return self.checking_id.startswith("internal_") @@ -170,6 +178,13 @@ class Payment(BaseModel): logger.debug(f"Status: {status}") + if self.is_in and self.is_expired: + expiration_date = datetime.datetime.fromtimestamp(self.expiry) + logger.debug( + f"Deleting expired incoming payment {self.checking_id}: expired {expiration_date}" + ) + await self.delete(conn) + if self.is_out and status.failed: logger.warning( f"Deleting outgoing failed payment {self.checking_id}: {status}" diff --git a/lnbits/tasks.py b/lnbits/tasks.py index fd2af809..e7f6a6be 100644 --- a/lnbits/tasks.py +++ b/lnbits/tasks.py @@ -15,7 +15,7 @@ from lnbits.core.crud import ( get_standalone_payment, ) from lnbits.core.services import redeem_lnurl_withdraw - +from lnbits.settings import WALLET from .core import db