.PHONY: clean uv_dev dev test_unit lint fmt docker_unit_lint docker_up docker_event docker_down

clean: ## Clean env
	rm -rf .venv
	rm -rf src/common

env uv_dev:  ## Prepare environment
	uv sync --locked

dev: uv_dev ## Run local for development
	uv run python dev.py

test_unit: uv_dev ## Run unit tests
	uv run python -m pytest

lint: uv_dev ## Run code linters
	uv run ty check src tests config.py
	uv run ruff check src tests config.py
	uv run ruff format src tests config.py --diff

fmt: uv_dev ## Run code formatters
	uv run ty check src tests config.py
	uv run ruff check src tests config.py --fix
	uv run ruff format src tests config.py

docker_unit_lint:  # Run lint and unit tests in Docker
	docker compose up \
		--build \
		--exit-code-from lint-and-test \
		--remove-orphans \
		lint-and-test

docker_up:  # Start the lambda in a local docker container
	docker compose up function

docker_event:  # Send event.json to the local lambda docker container
	curl --request POST --url http://localhost:9000/2015-03-31/functions/function/invocations --header 'Content-Type: application/json' --data @event.json

docker_down:  # End the lambda container
	docker compose down function
