.PHONY: help env pip_dev lint fmt lint_models fmt_models ci_lint_and_test prepare_orphan_tables_delete
.DEFAULT_GOAL := help

# define root project dir
ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))

help:
	@fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'

clean: ## Clean environment
	uv run dbt clean
	rm -rf .venv .cache logs
	find . | grep -E '__pycache__|\.pyc|\.pyo$\' | xargs rm -rf

packages: ## Add additional DBT packages
	uv run dbt deps

env pip_dev: ## Install dev requirements
	uv sync

lint: ## Run sql linter
	uv run sqlfluff lint .

fmt: ## Run sql formatter
	uv run sqlfluff fix .

lint_models: $(path) ## Run sql linter for specified location
	uv run sqlfluff lint $(path)

fmt_models: $(path) ## Run sql formatter for specified location
	uv run sqlfluff fix $(path)

ci_lint_and_test:  ## Run linters and unit tests inside docker
	docker compose run --rm --build lint-and-test

dbt_test:  ## Run only dbt test inside docker
	docker compose run --rm --build dbt-test

prepare_orphan_tables_delete: ## Prepare orphan tables delete
	uv run dbt --quiet run-operation prepare_orphan_tables_delete

invoke_validate_email_domains_lambda:
	docker compose up \
		--exit-code-from invoke-validate-email-domains-lambda \
		--abort-on-container-exit \
		--remove-orphans \
		--build \
		invoke-validate-email-domains-lambda

clean_artist_cache:
	docker compose up \
		--exit-code-from clean-artist-cache \
		--abort-on-container-exit \
		--remove-orphans \
		--build \
		clean-artist-cache

update_disposable_email_domains_seed:
	curl -s https://raw.githubusercontent.com/disposable-email-domains/disposable-email-domains/master/disposable_email_blocklist.conf | { echo "EMAIL_DOMAIN"; cat; } > seeds/event_ingestion/DISPOSABLE_EMAIL_DOMAINS_DBT.csv

backfill_segments:
	uv run python scripts/backfill_segments.py
