lnbits-legend/lnbits/extensions/lnurlpos/crud.py

113 lines
3.2 KiB
Python
Raw Normal View History

2021-10-20 06:49:59 +01:00
from typing import List, Optional, Union
2021-10-20 06:49:59 +01:00
from lnbits.helpers import urlsafe_short_hash
2021-10-20 06:49:59 +01:00
from . import db
from .models import createLnurlpos, lnurlpospayment, lnurlposs
2021-10-20 06:49:59 +01:00
###############lnurlposS##########################
2021-11-12 04:14:55 +00:00
async def create_lnurlpos(data: createLnurlpos,) -> lnurlposs:
2021-10-20 06:49:59 +01:00
lnurlpos_id = urlsafe_short_hash()
lnurlpos_key = urlsafe_short_hash()
await db.execute(
"""
INSERT INTO lnurlpos.lnurlposs (
id,
key,
title,
wallet,
currency
)
VALUES (?, ?, ?, ?, ?)
""",
(lnurlpos_id, lnurlpos_key, data.title, data.wallet, data.currency),
)
return await get_lnurlpos(lnurlpos_id)
async def update_lnurlpos(lnurlpos_id: str, **kwargs) -> Optional[lnurlposs]:
q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()])
await db.execute(
f"UPDATE lnurlpos.lnurlposs SET {q} WHERE id = ?",
(*kwargs.values(), lnurlpos_id),
)
row = await db.fetchone(
"SELECT * FROM lnurlpos.lnurlposs WHERE id = ?", (lnurlpos_id,)
)
2021-11-03 14:41:36 +00:00
return lnurlposs(**row) if row else None
2021-10-20 06:49:59 +01:00
async def get_lnurlpos(lnurlpos_id: str) -> lnurlposs:
row = await db.fetchone(
"SELECT * FROM lnurlpos.lnurlposs WHERE id = ?", (lnurlpos_id,)
)
2021-11-03 14:41:36 +00:00
return lnurlposs(**row) if row else None
2021-10-20 06:49:59 +01:00
async def get_lnurlposs(wallet_ids: Union[str, List[str]]) -> List[lnurlposs]:
wallet_ids = [wallet_ids]
q = ",".join(["?"] * len(wallet_ids[0]))
rows = await db.fetchall(
f"""
SELECT * FROM lnurlpos.lnurlposs WHERE wallet IN ({q})
ORDER BY id
""",
(*wallet_ids,),
)
2021-11-23 11:03:57 +00:00
return [lnurlposs(**row) if row else None for row in rows]
2021-10-20 06:49:59 +01:00
2021-11-26 05:58:20 +00:00
2021-10-20 06:49:59 +01:00
async def delete_lnurlpos(lnurlpos_id: str) -> None:
await db.execute("DELETE FROM lnurlpos.lnurlposs WHERE id = ?", (lnurlpos_id,))
########################lnulpos payments###########################
async def create_lnurlpospayment(
posid: str,
payload: Optional[str] = None,
pin: Optional[str] = None,
2021-10-22 09:24:48 +01:00
payhash: Optional[str] = None,
2021-10-20 06:49:59 +01:00
sats: Optional[int] = 0,
) -> lnurlpospayment:
lnurlpospayment_id = urlsafe_short_hash()
await db.execute(
"""
INSERT INTO lnurlpos.lnurlpospayment (
id,
posid,
payload,
pin,
2021-10-22 09:24:48 +01:00
payhash,
2021-10-20 06:49:59 +01:00
sats
)
2021-10-22 09:24:48 +01:00
VALUES (?, ?, ?, ?, ?, ?)
2021-10-20 06:49:59 +01:00
""",
2021-10-22 09:24:48 +01:00
(lnurlpospayment_id, posid, payload, pin, payhash, sats),
2021-10-20 06:49:59 +01:00
)
return await get_lnurlpospayment(lnurlpospayment_id)
async def update_lnurlpospayment(
lnurlpospayment_id: str, **kwargs
) -> Optional[lnurlpospayment]:
q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()])
await db.execute(
f"UPDATE lnurlpos.lnurlpospayment SET {q} WHERE id = ?",
(*kwargs.values(), lnurlpospayment_id),
)
row = await db.fetchone(
"SELECT * FROM lnurlpos.lnurlpospayment WHERE id = ?", (lnurlpospayment_id,)
)
2021-11-03 14:41:36 +00:00
return lnurlpospayment(**row) if row else None
2021-10-20 06:49:59 +01:00
async def get_lnurlpospayment(lnurlpospayment_id: str) -> lnurlpospayment:
row = await db.fetchone(
"SELECT * FROM lnurlpos.lnurlpospayment WHERE id = ?", (lnurlpospayment_id,)
)
2021-11-03 14:41:36 +00:00
return lnurlpospayment(**row) if row else None