feat: clean-up when relay deleted

This commit is contained in:
Vlad Stan 2023-02-08 09:29:14 +02:00
parent 6527d04977
commit b098dc5d77
2 changed files with 9 additions and 1 deletions

View file

@ -128,8 +128,14 @@ async def delete_events(relay_id: str, filter: NostrFilter):
query = f"""DELETE from nostrrelay.events WHERE {" AND ".join(where)}""" query = f"""DELETE from nostrrelay.events WHERE {" AND ".join(where)}"""
await db.execute(query, tuple(values)) await db.execute(query, tuple(values))
#todo: delete tags
async def delete_all_events(relay_id: str):
query = "DELETE from nostrrelay.events WHERE relay_id = ?"
await db.execute(query, (relay_id,))
# todo: delete tags
async def create_event_tags( async def create_event_tags(
relay_id: str, event_id: str, tag_name: str, tag_value: str, extra_values: Optional[str] relay_id: str, event_id: str, tag_name: str, tag_value: str, extra_values: Optional[str]
): ):
@ -147,7 +153,6 @@ async def create_event_tags(
(relay_id, event_id, tag_name, tag_value, extra_values), (relay_id, event_id, tag_name, tag_value, extra_values),
) )
async def get_event_tags( async def get_event_tags(
relay_id: str, event_id: str relay_id: str, event_id: str
) -> List[List[str]]: ) -> List[List[str]]:

View file

@ -19,6 +19,7 @@ from . import client_manager, nostrrelay_ext
from .client_manager import NostrClientConnection from .client_manager import NostrClientConnection
from .crud import ( from .crud import (
create_relay, create_relay,
delete_all_events,
delete_relay, delete_relay,
get_public_relay, get_public_relay,
get_relay, get_relay,
@ -138,7 +139,9 @@ async def api_get_relay(relay_id: str, wallet: WalletTypeInfo = Depends(require_
@nostrrelay_ext.delete("/api/v1/relay/{relay_id}") @nostrrelay_ext.delete("/api/v1/relay/{relay_id}")
async def api_delete_relay(relay_id: str, wallet: WalletTypeInfo = Depends(require_admin_key)): async def api_delete_relay(relay_id: str, wallet: WalletTypeInfo = Depends(require_admin_key)):
try: try:
await client_manager.toggle_relay(relay_id, False)
await delete_relay(wallet.wallet.user, relay_id) await delete_relay(wallet.wallet.user, relay_id)
await delete_all_events(relay_id)
except Exception as ex: except Exception as ex:
logger.warning(ex) logger.warning(ex)
raise HTTPException( raise HTTPException(