Refactor and implement queueing messages

This commit is contained in:
2025-02-12 18:45:21 +00:00
parent 213df9176e
commit 018d2f87c7
23 changed files with 804 additions and 338 deletions

54
core/lib/deferred.py Normal file
View File

@@ -0,0 +1,54 @@
# Deferred processing library
from core.util import logs
from pydantic import BaseModel
from typing import Annotated
from uuid import UUID
from pydantic import ValidationError
from core.models import QueuedMessage, Message
from core.clients import signal
from core.lib.prompts.functions import delete_messages
from asgiref.sync import sync_to_async
log = logs.get_logger("deferred")
class DeferredRequest(BaseModel):
type: str
method: str
user_id: int
message_id: Annotated[str, UUID]
async def process_deferred(data: dict):
try:
validated_data = DeferredRequest(**data)
log.info(f"Validated Data: {validated_data}")
# Process the validated data
except ValidationError as e:
log.info(f"Validation Error: {e}")
return
method = validated_data.method
user_id = validated_data.user_id
message_id = validated_data.message_id
try:
message = await sync_to_async(QueuedMessage.objects.get)(
user_id=user_id,
id=message_id,
)
log.info(f"Got {message}")
except QueuedMessage.DoesNotExist:
log.info(f"Didn't get message from {message_id}")
return
if message.session.identifier.service == "signal":
log.info(f"Is sisngla")
if method == "accept_message":
await signal.send_message(message)
else:
log.warning(f"Method not yet supported: {method}")
return
else:
log.warning(f"Protocol not supported: {message.session.identifier.service}")
return