mirror of
https://github.com/lnbits/lnbits.git
synced 2025-09-28 21:02:31 +02:00
Merge pull request #1317 from lnbits/revert-1309-revert-1298-revert-1277-revert-1255-fix/lnurlp_id_uuid
Revert "Revert "Revert "Revert "add UUID as id instead of sequential integer""""
This commit is contained in:
@@ -1,19 +1,18 @@
|
|||||||
from typing import List, Optional, Union
|
from typing import List, Optional, Union
|
||||||
|
|
||||||
from lnbits.db import SQLITE
|
from lnbits.helpers import urlsafe_short_hash
|
||||||
|
|
||||||
from . import db
|
from . import db
|
||||||
from .models import CreatePayLinkData, PayLink
|
from .models import CreatePayLinkData, PayLink
|
||||||
|
|
||||||
|
|
||||||
async def create_pay_link(data: CreatePayLinkData, wallet_id: str) -> PayLink:
|
async def create_pay_link(data: CreatePayLinkData, wallet_id: str) -> PayLink:
|
||||||
|
link_id = urlsafe_short_hash()[:6]
|
||||||
|
|
||||||
returning = "" if db.type == SQLITE else "RETURNING ID"
|
result = await db.execute(
|
||||||
method = db.execute if db.type == SQLITE else db.fetchone
|
|
||||||
|
|
||||||
result = await (method)(
|
|
||||||
f"""
|
f"""
|
||||||
INSERT INTO lnurlp.pay_links (
|
INSERT INTO lnurlp.pay_links (
|
||||||
|
id,
|
||||||
wallet,
|
wallet,
|
||||||
description,
|
description,
|
||||||
min,
|
min,
|
||||||
@@ -29,10 +28,10 @@ async def create_pay_link(data: CreatePayLinkData, wallet_id: str) -> PayLink:
|
|||||||
currency,
|
currency,
|
||||||
fiat_base_multiplier
|
fiat_base_multiplier
|
||||||
)
|
)
|
||||||
VALUES (?, ?, ?, ?, 0, 0, ?, ?, ?, ?, ?, ?, ?, ?)
|
VALUES (?, ?, ?, ?, ?, 0, 0, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
{returning}
|
|
||||||
""",
|
""",
|
||||||
(
|
(
|
||||||
|
link_id,
|
||||||
wallet_id,
|
wallet_id,
|
||||||
data.description,
|
data.description,
|
||||||
data.min,
|
data.min,
|
||||||
@@ -47,17 +46,13 @@ async def create_pay_link(data: CreatePayLinkData, wallet_id: str) -> PayLink:
|
|||||||
data.fiat_base_multiplier,
|
data.fiat_base_multiplier,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
if db.type == SQLITE:
|
|
||||||
link_id = result._result_proxy.lastrowid
|
|
||||||
else:
|
|
||||||
link_id = result[0]
|
|
||||||
|
|
||||||
link = await get_pay_link(link_id)
|
link = await get_pay_link(link_id)
|
||||||
assert link, "Newly created link couldn't be retrieved"
|
assert link, "Newly created link couldn't be retrieved"
|
||||||
return link
|
return link
|
||||||
|
|
||||||
|
|
||||||
async def get_pay_link(link_id: int) -> Optional[PayLink]:
|
async def get_pay_link(link_id: str) -> Optional[PayLink]:
|
||||||
row = await db.fetchone("SELECT * FROM lnurlp.pay_links WHERE id = ?", (link_id,))
|
row = await db.fetchone("SELECT * FROM lnurlp.pay_links WHERE id = ?", (link_id,))
|
||||||
return PayLink.from_row(row) if row else None
|
return PayLink.from_row(row) if row else None
|
||||||
|
|
||||||
|
@@ -68,3 +68,81 @@ async def m005_webhook_headers_and_body(db):
|
|||||||
"""
|
"""
|
||||||
await db.execute("ALTER TABLE lnurlp.pay_links ADD COLUMN webhook_headers TEXT;")
|
await db.execute("ALTER TABLE lnurlp.pay_links ADD COLUMN webhook_headers TEXT;")
|
||||||
await db.execute("ALTER TABLE lnurlp.pay_links ADD COLUMN webhook_body TEXT;")
|
await db.execute("ALTER TABLE lnurlp.pay_links ADD COLUMN webhook_body TEXT;")
|
||||||
|
|
||||||
|
|
||||||
|
async def m006_redux(db):
|
||||||
|
"""
|
||||||
|
Migrate ID column type to string for UUIDs and migrate existing data
|
||||||
|
"""
|
||||||
|
# we can simply change the column type for postgres
|
||||||
|
if db.type != "SQLITE":
|
||||||
|
await db.execute("ALTER TABLE lnurlp.pay_links ALTER COLUMN id TYPE TEXT;")
|
||||||
|
else:
|
||||||
|
# but we have to do this for sqlite
|
||||||
|
await db.execute("ALTER TABLE lnurlp.pay_links RENAME TO pay_links_old")
|
||||||
|
await db.execute(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE lnurlp.pay_links (
|
||||||
|
id TEXT PRIMARY KEY,
|
||||||
|
wallet TEXT NOT NULL,
|
||||||
|
description TEXT NOT NULL,
|
||||||
|
min {db.big_int} NOT NULL,
|
||||||
|
max {db.big_int},
|
||||||
|
currency TEXT,
|
||||||
|
fiat_base_multiplier INTEGER DEFAULT 1,
|
||||||
|
served_meta INTEGER NOT NULL,
|
||||||
|
served_pr INTEGER NOT NULL,
|
||||||
|
webhook_url TEXT,
|
||||||
|
success_text TEXT,
|
||||||
|
success_url TEXT,
|
||||||
|
comment_chars INTEGER DEFAULT 0,
|
||||||
|
webhook_headers TEXT,
|
||||||
|
webhook_body TEXT
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
for row in [
|
||||||
|
list(row) for row in await db.fetchall("SELECT * FROM lnurlp.pay_links_old")
|
||||||
|
]:
|
||||||
|
await db.execute(
|
||||||
|
"""
|
||||||
|
INSERT INTO lnurlp.pay_links (
|
||||||
|
id,
|
||||||
|
wallet,
|
||||||
|
description,
|
||||||
|
min,
|
||||||
|
served_meta,
|
||||||
|
served_pr,
|
||||||
|
webhook_url,
|
||||||
|
success_text,
|
||||||
|
success_url,
|
||||||
|
currency,
|
||||||
|
comment_chars,
|
||||||
|
max,
|
||||||
|
fiat_base_multiplier,
|
||||||
|
webhook_headers,
|
||||||
|
webhook_body
|
||||||
|
)
|
||||||
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
|
""",
|
||||||
|
(
|
||||||
|
row[0],
|
||||||
|
row[1],
|
||||||
|
row[2],
|
||||||
|
row[3],
|
||||||
|
row[4],
|
||||||
|
row[5],
|
||||||
|
row[6],
|
||||||
|
row[7],
|
||||||
|
row[8],
|
||||||
|
row[9],
|
||||||
|
row[10],
|
||||||
|
row[11],
|
||||||
|
row[12],
|
||||||
|
row[13],
|
||||||
|
row[14],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
await db.execute("DROP TABLE lnurlp.pay_links_old")
|
||||||
|
@@ -26,7 +26,7 @@ class CreatePayLinkData(BaseModel):
|
|||||||
|
|
||||||
|
|
||||||
class PayLink(BaseModel):
|
class PayLink(BaseModel):
|
||||||
id: int
|
id: str
|
||||||
wallet: str
|
wallet: str
|
||||||
description: str
|
description: str
|
||||||
min: float
|
min: float
|
||||||
|
@@ -12,7 +12,7 @@ from .models import CreateWithdrawData, HashCheck, WithdrawLink
|
|||||||
async def create_withdraw_link(
|
async def create_withdraw_link(
|
||||||
data: CreateWithdrawData, wallet_id: str
|
data: CreateWithdrawData, wallet_id: str
|
||||||
) -> WithdrawLink:
|
) -> WithdrawLink:
|
||||||
link_id = urlsafe_short_hash()
|
link_id = urlsafe_short_hash()[:6]
|
||||||
available_links = ",".join([str(i) for i in range(data.uses)])
|
available_links = ",".join([str(i) for i in range(data.uses)])
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"""
|
"""
|
||||||
|
Reference in New Issue
Block a user