fix possible duplicate lnaddress when update pay link (#8)

Co-authored-by: dni  <office@dnilabs.com>
This commit is contained in:
Benjamin Phạm-Bachelart 2023-09-24 20:21:31 +02:00 committed by GitHub
commit 7d32a36d51
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

18
crud.py
View file

@ -10,18 +10,6 @@ from .services import check_lnaddress_format
# from loguru import logger # from loguru import logger
async def check_lnaddress_update(username: str, id: str) -> bool:
# check no duplicates for lnaddress when updating an username
row = await db.fetchall(
"SELECT username FROM lnurlp.pay_links WHERE username = ? AND id = ?",
(username, id),
)
if row:
raise Exception("Username already exists. Try a different one.")
else:
return True
async def check_lnaddress_not_exists(username: str) -> bool: async def check_lnaddress_not_exists(username: str) -> bool:
# check if lnaddress username exists in the database when creating a new entry # check if lnaddress username exists in the database when creating a new entry
row = await db.fetchall( row = await db.fetchall(
@ -117,9 +105,9 @@ async def get_pay_links(wallet_ids: Union[str, List[str]]) -> List[PayLink]:
async def update_pay_link(link_id: str, **kwargs) -> Optional[PayLink]: async def update_pay_link(link_id: str, **kwargs) -> Optional[PayLink]:
if "lnaddress" in kwargs: if len(kwargs["username"]) > 0:
await check_lnaddress_format(kwargs["lnaddress"]) await check_lnaddress_format(kwargs["username"])
await check_lnaddress_update(kwargs["lnaddress"], link_id) await check_lnaddress_not_exists(kwargs["username"])
q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()]) q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()])
await db.execute( await db.execute(