lnurlp/models.py
2025-08-21 17:15:17 +02:00

64 lines
1.8 KiB
Python

from datetime import datetime, timezone
from fastapi import Query
from pydantic import BaseModel, Field
from .helpers import parse_nostr_private_key
from .nostr.key import PrivateKey
class LnurlpSettings(BaseModel):
nostr_private_key: str
@property
def private_key(self) -> PrivateKey:
return parse_nostr_private_key(self.nostr_private_key)
@property
def public_key(self) -> str:
return self.private_key.public_key.hex()
class CreatePayLinkData(BaseModel):
description: str
wallet: str | None = None
min: float = Query(1, ge=0.01)
max: float = Query(1, ge=0.01)
comment_chars: int = Query(0, ge=0, le=799)
currency: str | None = Query(None)
webhook_url: str | None = Query(None)
webhook_headers: str | None = Query(None)
webhook_body: str | None = Query(None)
success_text: str | None = Query(None)
success_url: str | None = Query(None)
fiat_base_multiplier: int | None = Query(100, ge=1)
username: str | None = Query(None)
zaps: bool | None = Query(False)
disposable: bool | None = Query(True)
class PayLink(BaseModel):
id: str
wallet: str
description: str
min: float
max: float
served_meta: int
served_pr: int
comment_chars: int
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
username: str | None = None
zaps: bool | None = None
webhook_url: str | None = None
webhook_headers: str | None = None
webhook_body: str | None = None
success_text: str | None = None
success_url: str | None = None
currency: str | None = None
fiat_base_multiplier: int | None = None
disposable: bool
# TODO deprecated, unused in the code, should be deleted from db.
domain: str | None = None