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

install:
	uv sync

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

dev:
	uv run fastapi dev app/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 app tests

worker:
	uv run celery -A app.infrastructure.queue.celery_app worker --loglevel=info

# CLI de administração (quinto adaptador de protocolo) — ex.: `make cli args="user:list"`.
cli:
	uv run waiross $(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 app/presentation/grpc \
		--python_out=app/presentation/grpc \
		--grpc_python_out=app/presentation/grpc \
		app/presentation/grpc/users.proto

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