#!/usr/bin/env bash

set -e

cd "$(dirname "$0")/.."

OPENAPI_URL="${OPENAPI_URL:-https://api.fundamental-dev.tech/openapi.json}"
OUTPUT_FILE="src/fundamental/models/generated.py"
TEMP_SPEC=$(mktemp /tmp/openapi-spec.json)

echo "==> Generating Pydantic models from OpenAPI spec"
echo "    Source: $OPENAPI_URL"
echo "    Output: $OUTPUT_FILE"

echo "==> Downloading OpenAPI spec"
curl -sSf "$OPENAPI_URL" -o "$TEMP_SPEC"

uv run datamodel-codegen \
	--input "$TEMP_SPEC" \
	--output "$OUTPUT_FILE" \
	--output-model-type pydantic_v2.BaseModel \
	--target-python-version 3.10 \
	--use-double-quotes \
	--use-standard-collections \
	--use-union-operator \
	--field-constraints \
	--collapse-root-models \
	--capitalize-enum-members \
	--enum-field-as-literal one \
	--use-default-kwarg \
	--output-datetime-class datetime

rm -f "$TEMP_SPEC"

echo "==> Formatting generated code"
uv run ruff format "$OUTPUT_FILE"
uv run ruff check --fix "$OUTPUT_FILE" || true

echo "==> Done! Generated models at $OUTPUT_FILE"
