diff --git a/models.py b/models.py index be2a39b..2c9f412 100644 --- a/models.py +++ b/models.py @@ -1,12 +1,11 @@ import json -from datetime import datetime -from typing import Optional +from datetime import datetime, timezone from fastapi import Query, Request from lnbits.helpers import normalize_path from lnurl import encode as lnurl_encode from lnurl.types import LnurlPayMetadata -from pydantic import BaseModel +from pydantic import BaseModel, Field from .helpers import parse_nostr_private_key from .nostr.key import PrivateKey @@ -26,19 +25,19 @@ class LnurlpSettings(BaseModel): class CreatePayLinkData(BaseModel): description: str - wallet: Optional[str] = None + wallet: str | None = None min: float = Query(1, ge=0.01) max: float = Query(1, ge=0.01) - currency: str = Query(None) comment_chars: int = Query(0, ge=0, le=799) - webhook_url: str = Query(None) - webhook_headers: str = Query(None) - webhook_body: str = Query(None) - success_text: str = Query(None) - success_url: str = Query(None) - fiat_base_multiplier: int = Query(100, ge=1) - username: str = Query(None) - zaps: Optional[bool] = Query(False) + 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) @@ -47,22 +46,22 @@ class PayLink(BaseModel): wallet: str description: str min: float + max: float served_meta: int served_pr: int - username: Optional[str] - zaps: Optional[bool] - domain: Optional[str] - webhook_url: Optional[str] - webhook_headers: Optional[str] - webhook_body: Optional[str] - success_text: Optional[str] - success_url: Optional[str] - currency: Optional[str] comment_chars: int - max: float - fiat_base_multiplier: int - created_at: datetime - updated_at: datetime + 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 + domain: str | 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 @@ -73,7 +72,6 @@ class PayLink(BaseModel): if url.netloc.endswith(".onion"): # change url string scheme to http url_str = url_str.replace("https://", "http://") - return lnurl_encode(url_str) @property