mirror of
https://github.com/lnbits/lnbits.git
synced 2025-09-27 12:26:19 +02:00
@@ -4,7 +4,7 @@ from sqlalchemy.exc import OperationalError # type: ignore
|
|||||||
async def m000_create_migrations_table(db):
|
async def m000_create_migrations_table(db):
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"""
|
"""
|
||||||
CREATE TABLE dbversions (
|
CREATE TABLE IF NOT EXISTS dbversions (
|
||||||
db TEXT PRIMARY KEY,
|
db TEXT PRIMARY KEY,
|
||||||
version INT NOT NULL
|
version INT NOT NULL
|
||||||
)
|
)
|
||||||
@@ -18,7 +18,7 @@ async def m001_initial(db):
|
|||||||
"""
|
"""
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"""
|
"""
|
||||||
CREATE TABLE accounts (
|
CREATE TABLE IF NOT EXISTS accounts (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
email TEXT,
|
email TEXT,
|
||||||
pass TEXT
|
pass TEXT
|
||||||
@@ -27,7 +27,7 @@ async def m001_initial(db):
|
|||||||
)
|
)
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"""
|
"""
|
||||||
CREATE TABLE extensions (
|
CREATE TABLE IF NOT EXISTS extensions (
|
||||||
"user" TEXT NOT NULL,
|
"user" TEXT NOT NULL,
|
||||||
extension TEXT NOT NULL,
|
extension TEXT NOT NULL,
|
||||||
active BOOLEAN DEFAULT false,
|
active BOOLEAN DEFAULT false,
|
||||||
@@ -38,7 +38,7 @@ async def m001_initial(db):
|
|||||||
)
|
)
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"""
|
"""
|
||||||
CREATE TABLE wallets (
|
CREATE TABLE IF NOT EXISTS wallets (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
"user" TEXT NOT NULL,
|
"user" TEXT NOT NULL,
|
||||||
@@ -49,7 +49,7 @@ async def m001_initial(db):
|
|||||||
)
|
)
|
||||||
await db.execute(
|
await db.execute(
|
||||||
f"""
|
f"""
|
||||||
CREATE TABLE apipayments (
|
CREATE TABLE IF NOT EXISTS apipayments (
|
||||||
payhash TEXT NOT NULL,
|
payhash TEXT NOT NULL,
|
||||||
amount INTEGER NOT NULL,
|
amount INTEGER NOT NULL,
|
||||||
fee INTEGER NOT NULL DEFAULT 0,
|
fee INTEGER NOT NULL DEFAULT 0,
|
||||||
@@ -64,7 +64,7 @@ async def m001_initial(db):
|
|||||||
|
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"""
|
"""
|
||||||
CREATE VIEW balances AS
|
CREATE VIEW IF NOT EXISTS balances AS
|
||||||
SELECT wallet, COALESCE(SUM(s), 0) AS balance FROM (
|
SELECT wallet, COALESCE(SUM(s), 0) AS balance FROM (
|
||||||
SELECT wallet, SUM(amount) AS s -- incoming
|
SELECT wallet, SUM(amount) AS s -- incoming
|
||||||
FROM apipayments
|
FROM apipayments
|
||||||
@@ -144,7 +144,7 @@ async def m004_ensure_fees_are_always_negative(db):
|
|||||||
await db.execute("DROP VIEW balances")
|
await db.execute("DROP VIEW balances")
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"""
|
"""
|
||||||
CREATE VIEW balances AS
|
CREATE VIEW IF NOT EXISTS balances AS
|
||||||
SELECT wallet, COALESCE(SUM(s), 0) AS balance FROM (
|
SELECT wallet, COALESCE(SUM(s), 0) AS balance FROM (
|
||||||
SELECT wallet, SUM(amount) AS s -- incoming
|
SELECT wallet, SUM(amount) AS s -- incoming
|
||||||
FROM apipayments
|
FROM apipayments
|
||||||
@@ -168,7 +168,7 @@ async def m005_balance_check_balance_notify(db):
|
|||||||
|
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"""
|
"""
|
||||||
CREATE TABLE balance_check (
|
CREATE TABLE IF NOT EXISTS balance_check (
|
||||||
wallet TEXT NOT NULL REFERENCES wallets (id),
|
wallet TEXT NOT NULL REFERENCES wallets (id),
|
||||||
service TEXT NOT NULL,
|
service TEXT NOT NULL,
|
||||||
url TEXT NOT NULL,
|
url TEXT NOT NULL,
|
||||||
@@ -180,7 +180,7 @@ async def m005_balance_check_balance_notify(db):
|
|||||||
|
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"""
|
"""
|
||||||
CREATE TABLE balance_notify (
|
CREATE TABLE IF NOT EXISTS balance_notify (
|
||||||
wallet TEXT NOT NULL REFERENCES wallets (id),
|
wallet TEXT NOT NULL REFERENCES wallets (id),
|
||||||
url TEXT NOT NULL,
|
url TEXT NOT NULL,
|
||||||
|
|
||||||
|
@@ -88,7 +88,7 @@ async def m003_changed(db):
|
|||||||
|
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"""
|
"""
|
||||||
CREATE TABLE lnticket.form (
|
CREATE TABLE IF NOT EXISTS lnticket.form (
|
||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
wallet TEXT NOT NULL,
|
wallet TEXT NOT NULL,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
import json
|
|
||||||
from http import HTTPStatus
|
from http import HTTPStatus
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
@@ -10,7 +9,6 @@ from starlette.requests import Request
|
|||||||
from starlette.responses import HTMLResponse # type: ignore
|
from starlette.responses import HTMLResponse # type: ignore
|
||||||
|
|
||||||
from lnbits.decorators import WalletTypeInfo, get_key_type
|
from lnbits.decorators import WalletTypeInfo, get_key_type
|
||||||
from lnbits.requestvars import g
|
|
||||||
from lnbits.utils.exchange_rates import currencies
|
from lnbits.utils.exchange_rates import currencies
|
||||||
|
|
||||||
from . import offlineshop_ext
|
from . import offlineshop_ext
|
||||||
@@ -27,11 +25,10 @@ from .models import ShopCounter
|
|||||||
|
|
||||||
@offlineshop_ext.get("/api/v1/currencies")
|
@offlineshop_ext.get("/api/v1/currencies")
|
||||||
async def api_list_currencies_available():
|
async def api_list_currencies_available():
|
||||||
return json.dumps(list(currencies.keys()))
|
return list(currencies.keys())
|
||||||
|
|
||||||
|
|
||||||
@offlineshop_ext.get("/api/v1/offlineshop")
|
@offlineshop_ext.get("/api/v1/offlineshop")
|
||||||
# @api_check_wallet_key("invoice")
|
|
||||||
async def api_shop_from_wallet(
|
async def api_shop_from_wallet(
|
||||||
r: Request, wallet: WalletTypeInfo = Depends(get_key_type)
|
r: Request, wallet: WalletTypeInfo = Depends(get_key_type)
|
||||||
):
|
):
|
||||||
@@ -60,7 +57,6 @@ class CreateItemsData(BaseModel):
|
|||||||
|
|
||||||
@offlineshop_ext.post("/api/v1/offlineshop/items")
|
@offlineshop_ext.post("/api/v1/offlineshop/items")
|
||||||
@offlineshop_ext.put("/api/v1/offlineshop/items/{item_id}")
|
@offlineshop_ext.put("/api/v1/offlineshop/items/{item_id}")
|
||||||
# @api_check_wallet_key("invoice")
|
|
||||||
async def api_add_or_update_item(
|
async def api_add_or_update_item(
|
||||||
data: CreateItemsData, item_id=None, wallet: WalletTypeInfo = Depends(get_key_type)
|
data: CreateItemsData, item_id=None, wallet: WalletTypeInfo = Depends(get_key_type)
|
||||||
):
|
):
|
||||||
@@ -83,7 +79,6 @@ async def api_add_or_update_item(
|
|||||||
|
|
||||||
|
|
||||||
@offlineshop_ext.delete("/api/v1/offlineshop/items/{item_id}")
|
@offlineshop_ext.delete("/api/v1/offlineshop/items/{item_id}")
|
||||||
# @api_check_wallet_key("invoice")
|
|
||||||
async def api_delete_item(item_id, wallet: WalletTypeInfo = Depends(get_key_type)):
|
async def api_delete_item(item_id, wallet: WalletTypeInfo = Depends(get_key_type)):
|
||||||
shop = await get_or_create_shop_by_wallet(wallet.wallet.id)
|
shop = await get_or_create_shop_by_wallet(wallet.wallet.id)
|
||||||
await delete_item_from_shop(shop.id, item_id)
|
await delete_item_from_shop(shop.id, item_id)
|
||||||
@@ -96,7 +91,6 @@ class CreateMethodData(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
@offlineshop_ext.put("/api/v1/offlineshop/method")
|
@offlineshop_ext.put("/api/v1/offlineshop/method")
|
||||||
# @api_check_wallet_key("invoice")
|
|
||||||
async def api_set_method(
|
async def api_set_method(
|
||||||
data: CreateMethodData, wallet: WalletTypeInfo = Depends(get_key_type)
|
data: CreateMethodData, wallet: WalletTypeInfo = Depends(get_key_type)
|
||||||
):
|
):
|
||||||
|
@@ -38,7 +38,7 @@ async def on_invoice_paid(payment: Payment) -> None:
|
|||||||
domain = await get_domain(subdomain.domain)
|
domain = await get_domain(subdomain.domain)
|
||||||
|
|
||||||
### Create subdomain
|
### Create subdomain
|
||||||
cf_response = cloudflare_create_subdomain(
|
cf_response = await cloudflare_create_subdomain(
|
||||||
domain=domain,
|
domain=domain,
|
||||||
subdomain=subdomain.subdomain,
|
subdomain=subdomain.subdomain,
|
||||||
record_type=subdomain.record_type,
|
record_type=subdomain.record_type,
|
||||||
|
@@ -417,7 +417,7 @@
|
|||||||
LNbits.api
|
LNbits.api
|
||||||
.request(
|
.request(
|
||||||
'DELETE',
|
'DELETE',
|
||||||
'/subdomain/api/v1/subdomains/' + subdomainId,
|
'/subdomains/api/v1/subdomains/' + subdomainId,
|
||||||
_.findWhere(self.g.user.wallets, {id: subdomains.wallet}).inkey
|
_.findWhere(self.g.user.wallets, {id: subdomains.wallet}).inkey
|
||||||
)
|
)
|
||||||
.then(function (response) {
|
.then(function (response) {
|
||||||
|
@@ -124,7 +124,7 @@ async def api_subdomain_make_subdomain(domain_id, data: CreateSubdomain):
|
|||||||
ip=data.ip,
|
ip=data.ip,
|
||||||
)
|
)
|
||||||
if cf_response["success"] == True:
|
if cf_response["success"] == True:
|
||||||
cloudflare_deletesubdomain(domain=domain, domain_id=cf_response["result"]["id"])
|
await cloudflare_deletesubdomain(domain=domain, domain_id=cf_response["result"]["id"])
|
||||||
else:
|
else:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
status_code=HTTPStatus.BAD_REQUEST,
|
status_code=HTTPStatus.BAD_REQUEST,
|
||||||
|
@@ -56,7 +56,10 @@ async def get_withdraw_link(link_id: str, num=0) -> Optional[WithdrawLink]:
|
|||||||
if not row:
|
if not row:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return WithdrawLink(**row) if row else None
|
link = dict(**row)
|
||||||
|
link["number"] = num
|
||||||
|
|
||||||
|
return WithdrawLink.parse_obj(link)
|
||||||
|
|
||||||
|
|
||||||
async def get_withdraw_link_by_hash(unique_hash: str, num=0) -> Optional[WithdrawLink]:
|
async def get_withdraw_link_by_hash(unique_hash: str, num=0) -> Optional[WithdrawLink]:
|
||||||
@@ -65,7 +68,11 @@ async def get_withdraw_link_by_hash(unique_hash: str, num=0) -> Optional[Withdra
|
|||||||
)
|
)
|
||||||
if not row:
|
if not row:
|
||||||
return None
|
return None
|
||||||
return WithdrawLink(**row) if row else None
|
|
||||||
|
link = dict(**row)
|
||||||
|
link["number"] = num
|
||||||
|
|
||||||
|
return WithdrawLink.parse_obj(link)
|
||||||
|
|
||||||
|
|
||||||
async def get_withdraw_links(wallet_ids: Union[str, List[str]]) -> List[WithdrawLink]:
|
async def get_withdraw_links(wallet_ids: Union[str, List[str]]) -> List[WithdrawLink]:
|
||||||
|
Reference in New Issue
Block a user