import aio_pika

from rvpc.settings import rmq_settings


async def publish_event(value):
    conn = await aio_pika.connect_robust(rmq_settings.broker_url)

    try:
        channel = await conn.channel()
        exchange = await channel.declare_exchange(
            "card_count", aio_pika.ExchangeType.FANOUT, durable=True
        )

        await exchange.publish(
            aio_pika.Message(body=value.encode()), routing_key=""
        )
    finally:
        await conn.close()
