import os

import modal


from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

transport = AIOHTTPTransport(
    url="https://studio-api.suno.ai/graphql/",
    headers={"Authorization": "Bearer 8cd22e877fe04ce294a5a69e6f8885e6"},
)

aws_secret = modal.Secret.from_name("studio-aws")

STUB_NAME = "smoke_test"

image = modal.Image.debian_slim(python_version="3.10").pip_install("gql").pip_install("pagerduty-api")
stub = modal.Stub(STUB_NAME, image=image)


@stub.function(
    schedule=modal.Period(minutes=30),
    secret=modal.Secret.from_name("pager-duty-secret"),
)
async def check_hang_percent():
    import pagerduty_api

    service_key = os.environ["SERVICE_KEY"]

    alert = pagerduty_api.Alert(service_key=service_key)

    client = Client(transport=transport, fetch_schema_from_transport=False)

    query = gql(
        """
        {
            generationHangPercent
        }
        """
    )
    result = await client.execute_async(query)
    percent = result["generationHangPercent"]
    if percent > 0.5:
        print("BOT HANGING! Percent of hung generations: ", percent)
        alert.trigger(
            description="Bot is Hanging",
        )
    print(result["generationHangPercent"])


@stub.local_entrypoint()
async def main():
    check_hang_percent.call()
