From 2bcc01d640ac61113366de9fac4e9ea1f3368291 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Mon, 9 Aug 2021 20:29:37 -0300 Subject: [PATCH] streamalerts: fix db queries so postgres can work. --- lnbits/extensions/streamalerts/crud.py | 58 ++++++++++++++------ lnbits/extensions/streamalerts/migrations.py | 6 +- 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/lnbits/extensions/streamalerts/crud.py b/lnbits/extensions/streamalerts/crud.py index 1a96ee6dd..20f3461ab 100644 --- a/lnbits/extensions/streamalerts/crud.py +++ b/lnbits/extensions/streamalerts/crud.py @@ -54,7 +54,7 @@ async def create_donation( """Create a new Donation""" await db.execute( """ - INSERT INTO Donations ( + INSERT INTO streamalerts."Donations" ( id, wallet, name, @@ -107,7 +107,9 @@ async def post_donation(donation_id: str) -> tuple: ) else: return (jsonify({"message": "Unsopported servicename"}), HTTPStatus.BAD_REQUEST) - await db.execute("UPDATE Donations SET posted = 1 WHERE id = ?", (donation_id,)) + await db.execute( + 'UPDATE streamalerts."Donations" SET posted = 1 WHERE id = ?', (donation_id,) + ) return (jsonify(response.json()), status) @@ -123,7 +125,7 @@ async def create_service( """Create a new Service""" result = await db.execute( """ - INSERT INTO Services ( + INSERT INTO streamalerts."Services" ( twitchuser, client_id, client_secret, @@ -159,15 +161,21 @@ async def get_service(service_id: int, by_state: str = None) -> Optional[Service streamer via typos like 2 -> 3. """ if by_state: - row = await db.fetchone("SELECT * FROM Services WHERE state = ?", (by_state,)) + row = await db.fetchone( + 'SELECT * FROM streamalerts."Services" WHERE state = ?', (by_state,) + ) else: - row = await db.fetchone("SELECT * FROM Services WHERE id = ?", (service_id,)) + row = await db.fetchone( + 'SELECT * FROM streamalerts."Services" WHERE id = ?', (service_id,) + ) return Service.from_row(row) if row else None async def get_services(wallet_id: str) -> Optional[list]: """Return all services belonging assigned to the wallet_id""" - rows = await db.fetchall("SELECT * FROM Services WHERE wallet = ?", (wallet_id,)) + rows = await db.fetchall( + 'SELECT * FROM streamalerts."Services" WHERE wallet = ?', (wallet_id,) + ) return [Service.from_row(row) for row in rows] if rows else None @@ -204,7 +212,7 @@ async def service_add_token(service_id, token): if (await get_service(service_id)).authenticated: return False await db.execute( - "UPDATE Services SET authenticated = 1, token = ? where id = ?", + 'UPDATE streamalerts."Services" SET authenticated = 1, token = ? where id = ?', ( token, service_id, @@ -215,27 +223,35 @@ async def service_add_token(service_id, token): async def delete_service(service_id: int) -> None: """Delete a Service and all corresponding Donations""" - await db.execute("DELETE FROM Services WHERE id = ?", (service_id,)) - rows = await db.fetchall("SELECT * FROM Donations WHERE service = ?", (service_id,)) + await db.execute('DELETE FROM streamalerts."Services" WHERE id = ?', (service_id,)) + rows = await db.fetchall( + 'SELECT * FROM streamalerts."Donations" WHERE service = ?', (service_id,) + ) for row in rows: await delete_donation(row["id"]) async def get_donation(donation_id: str) -> Optional[Donation]: """Return a Donation""" - row = await db.fetchone("SELECT * FROM Donations WHERE id = ?", (donation_id,)) + row = await db.fetchone( + 'SELECT * FROM streamalerts."Donations" WHERE id = ?', (donation_id,) + ) return Donation.from_row(row) if row else None async def get_donations(wallet_id: str) -> Optional[list]: - """Return all Donations assigned to wallet_id""" - rows = await db.fetchall("SELECT * FROM Donations WHERE wallet = ?", (wallet_id,)) + """Return all streamalerts."Donations" assigned to wallet_id""" + rows = await db.fetchall( + 'SELECT * FROM streamalerts."Donations" WHERE wallet = ?', (wallet_id,) + ) return [Donation.from_row(row) for row in rows] if rows else None async def delete_donation(donation_id: str) -> None: """Delete a Donation and its corresponding statspay charge""" - await db.execute("DELETE FROM Donations WHERE id = ?", (donation_id,)) + await db.execute( + 'DELETE FROM streamalerts."Donations" WHERE id = ?', (donation_id,) + ) await delete_charge(donation_id) @@ -243,19 +259,25 @@ async def update_donation(donation_id: str, **kwargs) -> Donation: """Update a Donation""" q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()]) await db.execute( - f"UPDATE Donations SET {q} WHERE id = ?", (*kwargs.values(), donation_id) + f'UPDATE streamalerts."Donations" SET {q} WHERE id = ?', + (*kwargs.values(), donation_id), + ) + row = await db.fetchone( + 'SELECT * FROM streamalerts."Donations" WHERE id = ?', (donation_id,) ) - row = await db.fetchone("SELECT * FROM Donations WHERE id = ?", (donation_id,)) assert row, "Newly updated donation couldn't be retrieved" return Donation(**row) -async def update_service(service_id: str, **kwargs) -> Donation: +async def update_service(service_id: str, **kwargs) -> Service: """Update a service""" q = ", ".join([f"{field[0]} = ?" for field in kwargs.items()]) await db.execute( - f"UPDATE Services SET {q} WHERE id = ?", (*kwargs.values(), service_id) + f'UPDATE streamalerts."Services" SET {q} WHERE id = ?', + (*kwargs.values(), service_id), + ) + row = await db.fetchone( + 'SELECT * FROM streamalerts."Services" WHERE id = ?', (service_id,) ) - row = await db.fetchone("SELECT * FROM Services WHERE id = ?", (service_id,)) assert row, "Newly updated service couldn't be retrieved" return Service(**row) diff --git a/lnbits/extensions/streamalerts/migrations.py b/lnbits/extensions/streamalerts/migrations.py index 772848271..c7ec726da 100644 --- a/lnbits/extensions/streamalerts/migrations.py +++ b/lnbits/extensions/streamalerts/migrations.py @@ -2,7 +2,7 @@ async def m001_initial(db): await db.execute( f""" - CREATE TABLE IF NOT EXISTS Services ( + CREATE TABLE IF NOT EXISTS streamalerts."Services" ( id {db.serial_primary_key}, state TEXT NOT NULL, twitchuser TEXT NOT NULL, @@ -19,7 +19,7 @@ async def m001_initial(db): await db.execute( """ - CREATE TABLE IF NOT EXISTS Donations ( + CREATE TABLE IF NOT EXISTS streamalerts."Donations" ( id TEXT PRIMARY KEY, wallet TEXT NOT NULL, name TEXT NOT NULL, @@ -29,7 +29,7 @@ async def m001_initial(db): amount FLOAT NOT NULL, service INTEGER NOT NULL, posted BOOLEAN NOT NULL, - FOREIGN KEY(service) REFERENCES Services(id) + FOREIGN KEY(service) REFERENCES streamalerts."Services" (id) ); """ )