Files
nutshell/wallet/crud.py
callebtc c409619aea works
2022-09-15 17:50:19 +03:00

80 lines
1.5 KiB
Python

import secrets
from typing import Optional
from core.base import Proof
from core.db import Connection, Database
async def store_proof(
proof: Proof,
db: Database,
conn: Optional[Connection] = None,
):
await (conn or db).execute(
"""
INSERT INTO proofs
(amount, C_x, C_y, secret)
VALUES (?, ?, ?, ?)
""",
(
proof.amount,
str(proof.C.x),
str(proof.C.y),
str(proof.secret),
),
)
async def get_proofs(
db: Database,
conn: Optional[Connection] = None,
):
rows = await (conn or db).fetchall(
"""
SELECT * from proofs
"""
)
return [Proof.from_row(r) for r in rows]
async def invalidate_proof(
proof: Proof,
db: Database,
conn: Optional[Connection] = None,
):
await (conn or db).execute(
f"""
DELETE FROM proofs
WHERE secret = ?
""",
str(proof["secret"]),
)
await (conn or db).execute(
"""
INSERT INTO proofs_used
(amount, C_x, C_y, secret)
VALUES (?, ?, ?, ?)
""",
(
proof.amount,
str(proof.C.x),
str(proof.C.y),
str(proof.secret),
),
)
async def update_proof_reserved(
proof: Proof,
reserved: bool,
db: Database,
conn: Optional[Connection] = None,
):
await (conn or db).execute(
"UPDATE proofs SET reserved = ? WHERE secret = ?",
(reserved, str(proof.secret)),
)