import json
import pika
from config.settings import settings
from db.connection import get_connection
from db import stt_jobs

def trigger_job(record):
    bid = "1713"  # Extracted from URL pattern
    call_id = record["callid"]
    recording_url = record["fileurl"]
    metadata = {k: v for k, v in record.items() if k not in ("callid", "fileurl")}

    # 1. Insert into DB
    stt_jobs.insert_job(bid=bid, call_id=call_id, recording_url=recording_url, metadata=metadata)

    # 2. Get the Job ID
    with get_connection() as conn:
        with conn.cursor() as cur:
            cur.execute("SELECT id FROM stt_jobs WHERE call_id=%s AND bid=%s ORDER BY id DESC LIMIT 1", (call_id, bid))
            row = cur.fetchone()
            if not row:
                print("Failed to find job in DB")
                return
            job_id = row["id"]

    # 3. Prepare RabbitMQ Message
    job_msg = {
        "job_id": job_id,
        "bid": bid,
        "call_id": call_id,
        "recording_url": recording_url
    }

    # 4. Send to RabbitMQ
    connection = pika.BlockingConnection(
        pika.ConnectionParameters(
            host=settings.rabbitmq_host,
            port=settings.rabbitmq_port,
            credentials=pika.PlainCredentials(settings.rabbitmq_user, settings.rabbitmq_password)
        )
    )
    channel = connection.channel()
    channel.queue_declare(queue=settings.rabbitmq_queue, durable=True)
    channel.basic_publish(
        exchange='',
        routing_key=settings.rabbitmq_queue,
        body=json.dumps(job_msg),
        properties=pika.BasicProperties(delivery_mode=2)
    )
    print(f"Triggered job {job_id} for call {call_id}")
    connection.close()

if __name__ == "__main__":
    record = {"callid":"81780329721773484856","fileurl":"https://recordings.mcube.com/mcubefiles112/classic/2026/03/1713/inbound/81780329721773484856.wav","agentname":"Pradeep Singh","call_starttime":"2026-03-14 16:10:56","groupname":"Book your homes","call_endtime":"2026-03-14 16:11:37","call_status":"ANSWER","agent_callinfo":"7055007130","customer_callinfo":"8178032972","direction":"inbound"}
    trigger_job(record)
