from __future__ import annotations

import os
from typing import Any

from services.api.cloud_api import CloudPetApi


REQUIRED_CLOUD_RUNTIME_ENV = (
    "SUPABASE_URL",
    "SUPABASE_SERVICE_ROLE_KEY",
    "ALIYUN_OSS_ENDPOINT",
    "ALIYUN_OSS_BUCKET",
    "ALIYUN_OSS_REGION",
    "ALIYUN_OSS_ACCESS_KEY_ID",
    "ALIYUN_OSS_ACCESS_KEY_SECRET",
    "OPENAI_API_KEY",
    "STRIPE_SECRET_KEY",
    "STRIPE_WEBHOOK_SECRET",
    "STRIPE_PRICE_ID_SIXXIE_MONTHLY_LAUNCH",
)


def validate_cloud_runtime_env(env: dict[str, str] | None = None) -> dict[str, Any]:
    values = env if env is not None else os.environ
    missing = [name for name in REQUIRED_CLOUD_RUNTIME_ENV if not str(values.get(name, "")).strip()]
    if missing:
        raise ValueError("Missing cloud runtime configuration: " + ", ".join(missing))
    return {
        "ok": True,
        "required": list(REQUIRED_CLOUD_RUNTIME_ENV),
    }


def create_cloud_api_from_env() -> CloudPetApi:
    validate_cloud_runtime_env()
    return CloudPetApi.from_env()


def create_cloud_app() -> dict[str, Any]:
    api = create_cloud_api_from_env()
    return {
        "api": api,
        "health": api.health(),
    }
