-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
36 lines (28 loc) · 1.47 KB
/
Copy pathMakefile
File metadata and controls
36 lines (28 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# -----------------------------------------------------------------------------
# sql-analytics-toolkit — convenience targets
# -----------------------------------------------------------------------------
COMPOSE := $(shell if docker compose version >/dev/null 2>&1; then echo "docker compose"; else echo "docker-compose"; fi)
CONTAINER := sql_analytics_db
PSQL := docker exec -i $(CONTAINER) psql -U analytics -d shop -v ON_ERROR_STOP=1
QUERY ?= queries/06_rfm_segmentation.sql
.PHONY: up down load demo psql clean help
help: ## Show this help
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-8s\033[0m %s\n", $$1, $$2}'
up: ## Start Postgres (auto-loads schema on first run)
$(COMPOSE) up -d
@echo "Waiting for health..."
@until [ "$$(docker inspect -f '{{.State.Health.Status}}' $(CONTAINER) 2>/dev/null)" = "healthy" ]; do sleep 1; done
@echo "Database ready on localhost:5433 (db=shop user=analytics)"
down: ## Stop the containers (keeps the volume)
$(COMPOSE) down
load: ## Re-run all schema files against the running database
@for f in schema/01_schema.sql schema/02_seed.sql schema/03_views.sql; do \
echo ">> $$f"; $(PSQL) < $$f; \
done
demo: ## Run a demo query (override with: make demo QUERY=queries/02_top_n_per_group.sql)
$(PSQL) < $(QUERY)
psql: ## Open an interactive psql shell
docker exec -it $(CONTAINER) psql -U analytics -d shop
clean: ## Stop and remove containers AND the data volume
$(COMPOSE) down -v