.PHONY: install run dev migrate migration downgrade test lint worker proto grpc-server cli

install:
	uv sync

run:
	uv run fastapi run main.py --host 0.0.0.0 --port 8000

dev:
	uv run fastapi dev main.py --host 0.0.0.0 --port 8000

migration:
	uv run alembic revision --autogenerate -m "$(m)"

migrate:
	uv run alembic upgrade head

downgrade:
	uv run alembic downgrade -1

test:
	uv run pytest -v

lint:
	uv run ruff check .

worker:
	uv run celery -A core.queue.celery worker --loglevel=info

# CLI de administração (quinto adaptador de protocolo) — ex.:
# `make cli args="user:list"`. Comandos de scaffolding (make:*, new, init,
# serve) são do pacote `waiross` instalado globalmente: `waiross make:usecase ...`.
cli:
	uv run python -m routes.cli.main $(args)

# Gera os stubs Python (users_pb2.py, users_pb2_grpc.py) a partir do
# users.proto. Requer `uv sync --extra grpc`.
proto:
	uv run python -m grpc_tools.protoc \
		-I routes/grpc/proto \
		--python_out=routes/grpc/proto \
		--grpc_python_out=routes/grpc/proto \
		routes/grpc/proto/users.proto

# Sobe o servidor gRPC (processo separado do FastAPI).
# Rode `make proto` antes, na primeira vez.
grpc-server:
	uv run python -m routes.grpc.server
