-include .env
export

.PHONY: sync-event-types sync-activity-definitions test migrate sync-all \
        dev-up dev-down railiance-up railiance-down \
        start-worker start-api start-event-router help

sync-activity-definitions:  ## Sync ActivityDefinition files into DB
	uv run python -m activity_core.sync_activity_definitions

sync-event-types:  ## Sync event type YAML files into DB
	uv run python scripts/sync_event_types.py

test:  ## Run test suite
	uv run pytest tests/ -v

# ── Database ──────────────────────────────────────────────────────────────────

migrate:  ## Apply all pending Alembic migrations
	uv run alembic upgrade head

sync-all: sync-event-types sync-activity-definitions  ## Sync event types and activity definitions

# ── Infrastructure ─────────────────────────────────────────────────────────────

dev-up:  ## Start full dev stack (Temporal + PG + ES + NATS)
	docker compose -f docker-compose.dev.yml up -d

dev-down:  ## Stop and remove dev stack containers
	docker compose -f docker-compose.dev.yml down

railiance-up:  ## Build image and start full railiance stack (no Elasticsearch)
	docker compose -f docker-compose.railiance.yml up -d --build

railiance-down:  ## Stop and remove railiance stack containers
	docker compose -f docker-compose.railiance.yml down

# ── Local dev processes ───────────────────────────────────────────────────────

start-worker:  ## Start Temporal worker (reads env from .env if present)
	uv run python -m activity_core.worker

start-api:  ## Start FastAPI server on :8010 with hot reload
	uv run uvicorn activity_core.api:app --host 0.0.0.0 --port 8010 --reload

start-event-router:  ## Start NATS event router
	uv run python -m activity_core.event_router

# ── Help ──────────────────────────────────────────────────────────────────────

help:  ## Show this help message
	@grep -Eh '^[a-zA-Z_-]+:.*?##' $(MAKEFILE_LIST) | \
		awk 'BEGIN {FS = ":.*?## "}; {printf "  \033[36m%-24s\033[0m %s\n", $$1, $$2}' | \
		sort
