diff --git a/lnbits/extensions/nostrnip5/crud.py b/lnbits/extensions/nostrnip5/crud.py index eff99074..9a8a074a 100644 --- a/lnbits/extensions/nostrnip5/crud.py +++ b/lnbits/extensions/nostrnip5/crud.py @@ -3,12 +3,7 @@ from typing import List, Optional, Union from lnbits.helpers import urlsafe_short_hash from . import db -from .models import ( - CreateDomainData, - Domain, - Address, - CreateAddressData, -) +from .models import Address, CreateAddressData, CreateDomainData, Domain async def get_domain(domain_id: str) -> Optional[Domain]: @@ -17,12 +12,14 @@ async def get_domain(domain_id: str) -> Optional[Domain]: ) return Domain.from_row(row) if row else None + async def get_domain_by_name(domain: str) -> Optional[Domain]: row = await db.fetchone( "SELECT * FROM nostrnip5.domains WHERE domain = ?", (domain,) ) return Domain.from_row(row) if row else None + async def get_domains(wallet_ids: Union[str, List[str]]) -> List[Domain]: if isinstance(wallet_ids, str): wallet_ids = [wallet_ids] @@ -34,18 +31,31 @@ async def get_domains(wallet_ids: Union[str, List[str]]) -> List[Domain]: return [Domain.from_row(row) for row in rows] + async def get_address(domain_id: str, address_id: str) -> Optional[Address]: row = await db.fetchone( - "SELECT * FROM nostrnip5.addresses WHERE domain_id = ? AND id = ?", (domain_id,address_id,) + "SELECT * FROM nostrnip5.addresses WHERE domain_id = ? AND id = ?", + ( + domain_id, + address_id, + ), ) return Address.from_row(row) if row else None -async def get_address_by_local_part(domain_id: str, local_part: str) -> Optional[Address]: + +async def get_address_by_local_part( + domain_id: str, local_part: str +) -> Optional[Address]: row = await db.fetchone( - "SELECT * FROM nostrnip5.addresses WHERE domain_id = ? AND local_part = ?", (domain_id,local_part,) + "SELECT * FROM nostrnip5.addresses WHERE domain_id = ? AND local_part = ?", + ( + domain_id, + local_part, + ), ) return Address.from_row(row) if row else None + async def get_addresses(domain_id: str) -> List[Address]: rows = await db.fetchall( f"SELECT * FROM nostrnip5.addresses WHERE domain_id = ?", (domain_id,) @@ -53,6 +63,7 @@ async def get_addresses(domain_id: str) -> List[Address]: return [Address.from_row(row) for row in rows] + async def get_all_addresses(wallet_ids: Union[str, List[str]]) -> List[Address]: if isinstance(wallet_ids, str): wallet_ids = [wallet_ids] @@ -64,12 +75,13 @@ async def get_all_addresses(wallet_ids: Union[str, List[str]]) -> List[Address]: FROM nostrnip5.addresses a JOIN nostrnip5.domains d ON d.id = a.domain_id WHERE d.wallet IN ({q}) - """, - (*wallet_ids,) + """, + (*wallet_ids,), ) return [Address.from_row(row) for row in rows] + async def activate_domain(domain_id: str, address_id: str) -> Address: await db.execute( """ @@ -88,37 +100,34 @@ async def activate_domain(domain_id: str, address_id: str) -> Address: assert address, "Newly updated address couldn't be retrieved" return address + async def delete_domain(domain_id) -> bool: await db.execute( """ DELETE FROM nostrnip5.addresses WHERE domain_id = ? """, - ( - domain_id, - ), + (domain_id,), ) await db.execute( """ DELETE FROM nostrnip5.domains WHERE id = ? """, - ( - domain_id, - ), + (domain_id,), ) return True + async def delete_address(address_id) -> bool: await db.execute( """ DELETE FROM nostrnip5.addresses WHERE id = ? """, - ( - address_id, - ), + (address_id,), ) + async def create_address_internal(domain_id: str, data: CreateAddressData) -> Address: address_id = urlsafe_short_hash() @@ -140,6 +149,7 @@ async def create_address_internal(domain_id: str, data: CreateAddressData) -> Ad assert address, "Newly created address couldn't be retrieved" return address + async def create_domain_internal(wallet_id: str, data: CreateDomainData) -> Domain: domain_id = urlsafe_short_hash() @@ -148,15 +158,9 @@ async def create_domain_internal(wallet_id: str, data: CreateDomainData) -> Doma INSERT INTO nostrnip5.domains (id, wallet, currency, amount, domain) VALUES (?, ?, ?, ?, ?) """, - ( - domain_id, - wallet_id, - data.currency, - int(data.amount * 100), - data.domain - ), + (domain_id, wallet_id, data.currency, int(data.amount * 100), data.domain), ) domain = await get_domain(domain_id) assert domain, "Newly created domain couldn't be retrieved" - return domain \ No newline at end of file + return domain diff --git a/lnbits/extensions/nostrnip5/migrations.py b/lnbits/extensions/nostrnip5/migrations.py index f1ce4ca9..8e81a1a4 100644 --- a/lnbits/extensions/nostrnip5/migrations.py +++ b/lnbits/extensions/nostrnip5/migrations.py @@ -32,4 +32,4 @@ async def m001_initial_invoices(db): FOREIGN KEY(domain_id) REFERENCES {db.references_schema}domains(id) ); """ - ) \ No newline at end of file + ) diff --git a/lnbits/extensions/nostrnip5/models.py b/lnbits/extensions/nostrnip5/models.py index 31010639..604b88b1 100644 --- a/lnbits/extensions/nostrnip5/models.py +++ b/lnbits/extensions/nostrnip5/models.py @@ -5,18 +5,21 @@ from typing import List, Optional from fastapi.param_functions import Query from pydantic import BaseModel + class CreateAddressData(BaseModel): domain_id: str local_part: str pubkey: str active: bool = False + class CreateDomainData(BaseModel): wallet: str currency: str amount: float = Query(..., ge=0.01) domain: str + class Domain(BaseModel): id: str wallet: str @@ -29,6 +32,7 @@ class Domain(BaseModel): def from_row(cls, row: Row) -> "Domain": return cls(**dict(row)) + class Address(BaseModel): id: str domain_id: str @@ -39,4 +43,4 @@ class Address(BaseModel): @classmethod def from_row(cls, row: Row) -> "Address": - return cls(**dict(row)) \ No newline at end of file + return cls(**dict(row)) diff --git a/lnbits/extensions/nostrnip5/tasks.py b/lnbits/extensions/nostrnip5/tasks.py index d27682c4..48c2aa9a 100644 --- a/lnbits/extensions/nostrnip5/tasks.py +++ b/lnbits/extensions/nostrnip5/tasks.py @@ -5,10 +5,7 @@ from lnbits.core.models import Payment from lnbits.helpers import urlsafe_short_hash from lnbits.tasks import internal_invoice_queue, register_invoice_listener -from .crud import ( - get_domain, - activate_domain, -) +from .crud import activate_domain, get_domain async def wait_for_paid_invoices(): diff --git a/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html b/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html index c40342a7..760ad944 100644 --- a/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html +++ b/lnbits/extensions/nostrnip5/templates/nostrnip5/index.html @@ -78,7 +78,9 @@
You can use this page to get NIP-5 verified on the nostr protocol under the {{ domain.domain }} domain.
-The current price is {{ "{:0,.2f}".format(domain.amount / 100) }} {{ domain.currency }} for a lifetime account.
++ You can use this page to get NIP-5 verified on the nostr protocol under + the {{ domain.domain }} domain. +
++ The current price is + {{ "{:0,.2f}".format(domain.amount / 100) }} {{ domain.currency }} + for a lifetime account. +
After submitting payment, your address will be
@@ -43,9 +51,7 @@ block page %} type="submit" >Create Address -