From 8dea1e28f0e9e8fdc7427865fc4aaaeb0127d918 Mon Sep 17 00:00:00 2001 From: Ben Arc Date: Fri, 20 Aug 2021 14:46:08 +0100 Subject: [PATCH] Added pydantic to models --- lnbits/extensions/amilk/models.py | 6 ++++-- lnbits/extensions/bleskomat/models.py | 6 ++++-- lnbits/extensions/captcha/models.py | 5 +++-- lnbits/extensions/copilot/models.py | 5 +++-- lnbits/extensions/diagonalley/models.py | 9 +++++---- lnbits/extensions/jukebox/models.py | 6 +++--- lnbits/extensions/livestream/models.py | 11 ++++++----- lnbits/extensions/lnticket/models.py | 7 +++---- lnbits/extensions/lnurlp/models.py | 8 ++++---- lnbits/extensions/offlineshop/models.py | 10 +++++----- lnbits/extensions/paywall/models.py | 5 +++-- lnbits/extensions/satspay/models.py | 4 ++-- lnbits/extensions/splitpayments/models.py | 5 +++-- lnbits/extensions/streamalerts/models.py | 7 ++++--- lnbits/extensions/subdomains/models.py | 6 +++--- lnbits/extensions/usermanager/models.py | 6 +++--- lnbits/extensions/watchonly/models.py | 8 ++++---- lnbits/extensions/withdraw/models.py | 6 +++--- 18 files changed, 65 insertions(+), 55 deletions(-) diff --git a/lnbits/extensions/amilk/models.py b/lnbits/extensions/amilk/models.py index a2acfa885..7ee6bf901 100644 --- a/lnbits/extensions/amilk/models.py +++ b/lnbits/extensions/amilk/models.py @@ -1,7 +1,9 @@ -from typing import NamedTuple +from sqlite3 import Row +from pydantic import BaseModel +#from typing import NamedTuple -class AMilk(NamedTuple): +class AMilk(BaseModel): id: str wallet: str lnurl: str diff --git a/lnbits/extensions/bleskomat/models.py b/lnbits/extensions/bleskomat/models.py index 216f83c60..9b5e43223 100644 --- a/lnbits/extensions/bleskomat/models.py +++ b/lnbits/extensions/bleskomat/models.py @@ -5,9 +5,11 @@ from lnbits import bolt11 from lnbits.core.services import pay_invoice from . import db from .helpers import get_callback_url, LnurlValidationError +from sqlite3 import Row +from pydantic import BaseModel -class Bleskomat(NamedTuple): +class Bleskomat(BaseModel): id: str wallet: str api_key_id: str @@ -19,7 +21,7 @@ class Bleskomat(NamedTuple): fee: str -class BleskomatLnurl(NamedTuple): +class BleskomatLnurl(BaseModel): id: str bleskomat: str wallet: str diff --git a/lnbits/extensions/captcha/models.py b/lnbits/extensions/captcha/models.py index 3179d5c18..2b98a91e4 100644 --- a/lnbits/extensions/captcha/models.py +++ b/lnbits/extensions/captcha/models.py @@ -1,10 +1,11 @@ import json from sqlite3 import Row -from typing import NamedTuple, Optional +from pydantic import BaseModel +from typing import Optional -class Captcha(NamedTuple): +class Captcha(BaseModel): id: str wallet: str url: str diff --git a/lnbits/extensions/copilot/models.py b/lnbits/extensions/copilot/models.py index 70d70cf5f..7eabaf9b4 100644 --- a/lnbits/extensions/copilot/models.py +++ b/lnbits/extensions/copilot/models.py @@ -5,9 +5,10 @@ from quart import url_for from lnurl import Lnurl, encode as lnurl_encode # type: ignore from lnurl.types import LnurlPayMetadata # type: ignore from lnurl.models import LnurlPaySuccessAction, UrlAction # type: ignore +from sqlite3 import Row +from pydantic import BaseModel - -class Copilots(NamedTuple): +class Copilots(BaseModel): id: str user: str title: str diff --git a/lnbits/extensions/diagonalley/models.py b/lnbits/extensions/diagonalley/models.py index 08e15969b..ab1c592de 100644 --- a/lnbits/extensions/diagonalley/models.py +++ b/lnbits/extensions/diagonalley/models.py @@ -1,7 +1,8 @@ from typing import NamedTuple +from sqlite3 import Row +from pydantic import BaseModel - -class Indexers(NamedTuple): +class Indexers(BaseModel): id: str wallet: str shopname: str @@ -15,7 +16,7 @@ class Indexers(NamedTuple): email: str -class Products(NamedTuple): +class Products(BaseModel): id: str wallet: str product: str @@ -26,7 +27,7 @@ class Products(NamedTuple): quantity: int -class Orders(NamedTuple): +class Orders(BaseModel): id: str productid: str wallet: str diff --git a/lnbits/extensions/jukebox/models.py b/lnbits/extensions/jukebox/models.py index 03c41d674..f09f76555 100644 --- a/lnbits/extensions/jukebox/models.py +++ b/lnbits/extensions/jukebox/models.py @@ -1,8 +1,8 @@ -from typing import NamedTuple from sqlite3 import Row +from pydantic import BaseModel -class Jukebox(NamedTuple): +class Jukebox(BaseModel): id: str user: str title: str @@ -22,7 +22,7 @@ class Jukebox(NamedTuple): return cls(**dict(row)) -class JukeboxPayment(NamedTuple): +class JukeboxPayment(BaseModel): payment_hash: str juke_id: str song_id: str diff --git a/lnbits/extensions/livestream/models.py b/lnbits/extensions/livestream/models.py index bfe829733..7df1f961a 100644 --- a/lnbits/extensions/livestream/models.py +++ b/lnbits/extensions/livestream/models.py @@ -1,12 +1,13 @@ import json from quart import url_for -from typing import NamedTuple, Optional +from typing import Optional from lnurl import Lnurl, encode as lnurl_encode # type: ignore from lnurl.types import LnurlPayMetadata # type: ignore from lnurl.models import LnurlPaySuccessAction, UrlAction # type: ignore +from sqlite3 import Row +from pydantic import BaseModel - -class Livestream(NamedTuple): +class Livestream(BaseModel): id: int wallet: str fee_pct: int @@ -18,7 +19,7 @@ class Livestream(NamedTuple): return lnurl_encode(url) -class Track(NamedTuple): +class Track(BaseModel): id: int download_url: str price_msat: int @@ -74,7 +75,7 @@ class Track(NamedTuple): ) -class Producer(NamedTuple): +class Producer(BaseModel): id: int user: str wallet: str diff --git a/lnbits/extensions/lnticket/models.py b/lnbits/extensions/lnticket/models.py index fdf4a5ffa..1bc8237c7 100644 --- a/lnbits/extensions/lnticket/models.py +++ b/lnbits/extensions/lnticket/models.py @@ -1,7 +1,6 @@ -from typing import NamedTuple +from pydantic import BaseModel - -class Forms(NamedTuple): +class Forms(BaseModel): id: str wallet: str name: str @@ -13,7 +12,7 @@ class Forms(NamedTuple): time: int -class Tickets(NamedTuple): +class Tickets(BaseModel): id: str form: str email: str diff --git a/lnbits/extensions/lnurlp/models.py b/lnbits/extensions/lnurlp/models.py index c08dca03b..f1d4fff1f 100644 --- a/lnbits/extensions/lnurlp/models.py +++ b/lnbits/extensions/lnurlp/models.py @@ -1,13 +1,13 @@ import json from urllib.parse import urlparse, urlunparse, parse_qs, urlencode, ParseResult from quart import url_for -from typing import NamedTuple, Optional, Dict -from sqlite3 import Row +from typing import Optional, Dict from lnbits.lnurl import encode as lnurl_encode # type: ignore from lnurl.types import LnurlPayMetadata # type: ignore +from sqlite3 import Row +from pydantic import BaseModel - -class PayLink(NamedTuple): +class PayLink(BaseModel): id: int wallet: str description: str diff --git a/lnbits/extensions/offlineshop/models.py b/lnbits/extensions/offlineshop/models.py index eb767cdf8..8839f0ddc 100644 --- a/lnbits/extensions/offlineshop/models.py +++ b/lnbits/extensions/offlineshop/models.py @@ -3,17 +3,17 @@ import base64 import hashlib from collections import OrderedDict from quart import url_for -from typing import NamedTuple, Optional, List, Dict +from typing import Optional, List, Dict from lnurl import encode as lnurl_encode # type: ignore from lnurl.types import LnurlPayMetadata # type: ignore from lnurl.models import LnurlPaySuccessAction, UrlAction # type: ignore - +from pydantic import BaseModel from .helpers import totp shop_counters: Dict = {} -class ShopCounter(object): +class ShopCounter(BaseModel): fulfilled_payments: OrderedDict counter: int @@ -54,7 +54,7 @@ class ShopCounter(object): return word -class Shop(NamedTuple): +class Shop(BaseModel): id: int wallet: str method: str @@ -77,7 +77,7 @@ class Shop(NamedTuple): return "" -class Item(NamedTuple): +class Item(BaseModel): shop: int id: int name: str diff --git a/lnbits/extensions/paywall/models.py b/lnbits/extensions/paywall/models.py index d7f2451df..7b64db4c1 100644 --- a/lnbits/extensions/paywall/models.py +++ b/lnbits/extensions/paywall/models.py @@ -1,10 +1,11 @@ import json from sqlite3 import Row -from typing import NamedTuple, Optional +from pydantic import BaseModel +from typing import Optional -class Paywall(NamedTuple): +class Paywall(BaseModel): id: str wallet: str url: str diff --git a/lnbits/extensions/satspay/models.py b/lnbits/extensions/satspay/models.py index a7bfa14f3..3bac7a2bb 100644 --- a/lnbits/extensions/satspay/models.py +++ b/lnbits/extensions/satspay/models.py @@ -1,9 +1,9 @@ from sqlite3 import Row -from typing import NamedTuple +from pydantic import BaseModel import time -class Charges(NamedTuple): +class Charges(BaseModel): id: str user: str description: str diff --git a/lnbits/extensions/splitpayments/models.py b/lnbits/extensions/splitpayments/models.py index 17578f871..e17000594 100644 --- a/lnbits/extensions/splitpayments/models.py +++ b/lnbits/extensions/splitpayments/models.py @@ -1,7 +1,8 @@ -from typing import NamedTuple + +from pydantic import BaseModel -class Target(NamedTuple): +class Target(BaseModel): wallet: str source: str percent: int diff --git a/lnbits/extensions/streamalerts/models.py b/lnbits/extensions/streamalerts/models.py index 20923ebbe..81e47386e 100644 --- a/lnbits/extensions/streamalerts/models.py +++ b/lnbits/extensions/streamalerts/models.py @@ -1,8 +1,9 @@ from sqlite3 import Row -from typing import NamedTuple, Optional +from pydantic import BaseModel +from typing import Optional -class Donation(NamedTuple): +class Donation(BaseModel): """A Donation simply contains all the necessary information about a user's donation to a streamer """ @@ -22,7 +23,7 @@ class Donation(NamedTuple): return cls(**dict(row)) -class Service(NamedTuple): +class Service(BaseModel): """A Service represents an integration with a third-party API Currently, Streamlabs is the only supported Service. diff --git a/lnbits/extensions/subdomains/models.py b/lnbits/extensions/subdomains/models.py index a519311e5..0f2648d25 100644 --- a/lnbits/extensions/subdomains/models.py +++ b/lnbits/extensions/subdomains/models.py @@ -1,7 +1,7 @@ -from typing import NamedTuple +from pydantic import BaseModel -class Domains(NamedTuple): +class Domains(BaseModel): id: str wallet: str domain: str @@ -15,7 +15,7 @@ class Domains(NamedTuple): allowed_record_types: str -class Subdomains(NamedTuple): +class Subdomains(BaseModel): id: str wallet: str domain: str diff --git a/lnbits/extensions/usermanager/models.py b/lnbits/extensions/usermanager/models.py index 97eaaea8c..484721197 100644 --- a/lnbits/extensions/usermanager/models.py +++ b/lnbits/extensions/usermanager/models.py @@ -1,8 +1,8 @@ -from typing import NamedTuple from sqlite3 import Row +from pydantic import BaseModel -class Users(NamedTuple): +class Users(BaseModel): id: str name: str admin: str @@ -10,7 +10,7 @@ class Users(NamedTuple): password: str -class Wallets(NamedTuple): +class Wallets(BaseModel): id: str admin: str name: str diff --git a/lnbits/extensions/watchonly/models.py b/lnbits/extensions/watchonly/models.py index b9faa6019..cc63283b8 100644 --- a/lnbits/extensions/watchonly/models.py +++ b/lnbits/extensions/watchonly/models.py @@ -1,8 +1,8 @@ from sqlite3 import Row -from typing import NamedTuple +from pydantic import BaseModel -class Wallets(NamedTuple): +class Wallets(BaseModel): id: str user: str masterpub: str @@ -15,7 +15,7 @@ class Wallets(NamedTuple): return cls(**dict(row)) -class Mempool(NamedTuple): +class Mempool(BaseModel): user: str endpoint: str @@ -24,7 +24,7 @@ class Mempool(NamedTuple): return cls(**dict(row)) -class Addresses(NamedTuple): +class Addresses(BaseModel): id: str address: str wallet: str diff --git a/lnbits/extensions/withdraw/models.py b/lnbits/extensions/withdraw/models.py index b7a989706..da32ee7d0 100644 --- a/lnbits/extensions/withdraw/models.py +++ b/lnbits/extensions/withdraw/models.py @@ -1,11 +1,11 @@ from quart import url_for from lnurl import Lnurl, LnurlWithdrawResponse, encode as lnurl_encode # type: ignore from sqlite3 import Row -from typing import NamedTuple +from pydantic import BaseModel import shortuuid # type: ignore -class WithdrawLink(NamedTuple): +class WithdrawLink(BaseModel): id: str wallet: str title: str @@ -67,7 +67,7 @@ class WithdrawLink(NamedTuple): ) -class HashCheck(NamedTuple): +class HashCheck(BaseModel): id: str lnurl_id: str