import aio_pika
from fastapi import Request

from rvpc.pydantic_models import LocationStatus


async def capture_message(
    request: Request, loc_status: LocationStatus
) -> None:
    await request.app.state.channel.default_exchange.publish(
        aio_pika.Message(body=loc_status.model_dump_json().encode()),
        routing_key="capture_status",
    )


async def enabled_message(request: Request, loc_name: str) -> None:
    loc_status = LocationStatus(location_name=loc_name, enabled=True)
    await capture_message(request=request, loc_status=loc_status)


async def disabled_message(request: Request, loc_name: str) -> None:
    loc_status = LocationStatus(location_name=loc_name, enabled=False)
    await capture_message(request=request, loc_status=loc_status)
