30 lines
772 B
Python
30 lines
772 B
Python
import asyncio
|
|
|
|
import aiosqlite
|
|
|
|
|
|
class DBWrapper:
|
|
"""
|
|
This object handles HeaderBlocks and Blocks stored in DB used by wallet.
|
|
"""
|
|
|
|
db: aiosqlite.Connection
|
|
lock: asyncio.Lock
|
|
|
|
def __init__(self, connection: aiosqlite.Connection):
|
|
self.db = connection
|
|
self.lock = asyncio.Lock()
|
|
|
|
async def begin_transaction(self):
|
|
cursor = await self.db.execute("BEGIN TRANSACTION")
|
|
await cursor.close()
|
|
|
|
async def rollback_transaction(self):
|
|
# Also rolls back the coin store, since both stores must be updated at once
|
|
if self.db.in_transaction:
|
|
cursor = await self.db.execute("ROLLBACK")
|
|
await cursor.close()
|
|
|
|
async def commit_transaction(self):
|
|
await self.db.commit()
|