index on db and read spent proofs from db (#370)

* index on db and read spent proofs from db

* add benchmark for testing

* remove benchmark

* add option to disable cached secrets

* disable python 3.9 tests
This commit is contained in:
callebtc
2023-11-26 06:07:38 -03:00
committed by GitHub
parent bff30d493d
commit fa5193cd8f
14 changed files with 253 additions and 164 deletions

View File

@@ -31,7 +31,7 @@ class LedgerCrud:
db: Database,
id: str,
conn: Optional[Connection] = None,
):
) -> Optional[Invoice]:
return await get_lightning_invoice(
db=db,
id=id,
@@ -42,8 +42,23 @@ class LedgerCrud:
self,
db: Database,
conn: Optional[Connection] = None,
):
return await get_secrets_used(db=db, conn=conn)
) -> List[str]:
return await get_secrets_used(
db=db,
conn=conn,
)
async def get_proof_used(
self,
db: Database,
proof: Proof,
conn: Optional[Connection] = None,
) -> Optional[Proof]:
return await get_proof_used(
db=db,
proof=proof,
conn=conn,
)
async def invalidate_proof(
self,
@@ -215,7 +230,7 @@ async def get_promise(
async def get_secrets_used(
db: Database,
conn: Optional[Connection] = None,
):
) -> List[str]:
rows = await (conn or db).fetchall(f"""
SELECT secret from {table_with_schema(db, 'proofs_used')}
""")
@@ -253,6 +268,21 @@ async def get_proofs_pending(
return [Proof(**r) for r in rows]
async def get_proof_used(
db: Database,
proof: Proof,
conn: Optional[Connection] = None,
) -> Optional[Proof]:
row = await (conn or db).fetchone(
f"""
SELECT 1 from {table_with_schema(db, 'proofs_used')}
WHERE secret = ?
""",
(str(proof.secret),),
)
return Proof(**row) if row else None
async def set_proof_pending(
db: Database,
proof: Proof,