# Service Makefile - Generated from spaps-server-quickstart
# Replace {{SERVICE_NAME}} with your service name (e.g., consumer_server)

.PHONY: install test lint typecheck format pytest prepush worker beat local-up local-up-watch local-down ensure-venv

PYTEST_WORKERS ?= auto

install:
	@if [ ! -d .venv/bin ]; then python3 -m venv .venv; fi
	. .venv/bin/activate && pip install --upgrade pip && pip install -e '.[test]'
	@if ! ./scripts/setup-hooks.sh; then \
		printf 'WARNING: Failed to install git hooks. Rerun ./scripts/setup-hooks.sh once git is available.\n' >&2; \
	fi

ensure-venv:
	@if [ ! -x .venv/bin/python ]; then \
		$(MAKE) --no-print-directory install; \
	fi

lint: ensure-venv
	. .venv/bin/activate && ruff check src tests

format: ensure-venv
	. .venv/bin/activate && ruff format src tests

typecheck: ensure-venv
	. .venv/bin/activate && mypy src

pytest: ensure-venv
	. .venv/bin/activate && pytest -n $(PYTEST_WORKERS)

test: lint typecheck pytest

prepush:
	./scripts/prepush.sh

worker: ensure-venv
	. .venv/bin/activate && celery -A {{SERVICE_NAME}}.celery_app worker --loglevel=info

beat: ensure-venv
	. .venv/bin/activate && celery -A {{SERVICE_NAME}}.celery_app beat --loglevel=info

# Docker compose local development
local-up: ensure-venv
	./scripts/dev/local-debug-loop.sh

local-up-watch: ensure-venv
	LOCAL_DEBUG_LOOP_WATCH=1 ./scripts/dev/local-debug-loop.sh -w

local-down:
	@if docker compose version >/dev/null 2>&1; then \
		docker compose down --volumes --remove-orphans; \
	elif command -v docker-compose >/dev/null 2>&1; then \
		docker-compose down --volumes --remove-orphans; \
	else \
		printf 'ERROR: docker compose is required to tear down the stack.\\n' >&2; \
		exit 1; \
	fi

# Database management
backup:
	BACKUP_STORAGE_URL=$${BACKUP_STORAGE_URL} ./scripts/backup-db.sh

# Deployment
deploy:
	./deploy/deploy.sh

# Setup for new developers
setup:
	@if [ ! -f .env ]; then cp .env.example .env; fi
	./scripts/setup-hooks.sh || true
