redis & listening works!!
This commit is contained in:
@ -2,8 +2,10 @@ from fastapi import Depends, HTTPException, status
|
||||
from typing import Annotated
|
||||
from sqlalchemy.orm import Session
|
||||
from uuid import UUID
|
||||
import redis
|
||||
import asyncio
|
||||
|
||||
from ...dependencies import get_db
|
||||
from ...dependencies import get_db, get_pubsub
|
||||
from ...db import models
|
||||
|
||||
from ..auth import services as auth_services
|
||||
@ -50,6 +52,9 @@ def get_detailed_queue(
|
||||
participants=schemas.ParticipantInfo(
|
||||
total=q.users.count(),
|
||||
remaining=q.users.filter(models.QueueUser.passed == False).count(),
|
||||
users_list=q.users.filter(models.QueueUser.passed == False).order_by(
|
||||
models.QueueUser.position.asc()
|
||||
),
|
||||
),
|
||||
)
|
||||
raise HTTPException(
|
||||
@ -82,3 +87,18 @@ def join_queue(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail="Not Found",
|
||||
)
|
||||
|
||||
|
||||
async def set_queue_listener(
|
||||
queue_id: UUID,
|
||||
db: Annotated[Session, Depends(get_db)],
|
||||
ps: Annotated[redis.client.PubSub, Depends(get_pubsub)],
|
||||
) -> schemas.QueueDetail:
|
||||
await ps.subscribe(str(queue_id))
|
||||
async for m in ps.listen():
|
||||
print(m, flush=True)
|
||||
if m.get("data", None) == b"updated":
|
||||
print("UPDATED", flush=True)
|
||||
break
|
||||
new_queue = get_detailed_queue(queue_id=queue_id, db=db)
|
||||
return new_queue
|
||||
|
||||
Reference in New Issue
Block a user