codedematrix/datacollection
0
1COMPOSE = docker compose -f docker-compose.prod.yml2COMPOSE_DEV = docker compose3BACKEND = $(COMPOSE) exec backend4BACKUP_DIR = ./backups5 6.PHONY: up down restart logs logs-backend logs-frontend logs-nginx \7 migrate seed createsuperuser refresh-due-states \8 backup restore shell-backend shell-db \9 dev dev-down build10 11# ── Production ────────────────────────────────────────────────────────────────12 13up:14 $(COMPOSE) up -d15 16down:17 $(COMPOSE) down18 19restart:20 $(COMPOSE) restart21 22build:23 $(COMPOSE) up -d --build24 25logs:26 $(COMPOSE) logs -f --tail=10027 28logs-backend:29 $(COMPOSE) logs -f --tail=100 backend30 31logs-frontend:32 $(COMPOSE) logs -f --tail=100 frontend33 34logs-nginx:35 $(COMPOSE) logs -f --tail=100 nginx36 37# ── Database ──────────────────────────────────────────────────────────────────38 39migrate:40 $(BACKEND) python manage.py migrate --run-syncdb41 42seed:43 $(BACKEND) python manage.py loaddata fixtures/ghana_regions.json44 $(BACKEND) python manage.py loaddata fixtures/email_templates.json45 46createsuperuser:47 $(BACKEND) python manage.py createsuperuser48 49refresh-due-states:50 $(BACKEND) python manage.py refresh_due_states51 52# ── Backups ───────────────────────────────────────────────────────────────────53 54backup:55 @mkdir -p $(BACKUP_DIR)56 @TIMESTAMP=$$(date +%Y-%m-%d_%H-%M); \57 FILENAME=$(BACKUP_DIR)/nca_db_$$TIMESTAMP.sql.gz; \58 $(COMPOSE) exec -T db pg_dump -U nca nca_dc | gzip > $$FILENAME; \59 echo "Backup written to $$FILENAME"60 61restore:62ifndef FILE63 $(error Usage: make restore FILE=backups/nca_db_YYYY-MM-DD_HH-MM.sql.gz)64endif65 @echo "Restoring from $(FILE) — this will DROP the existing database."66 @read -p "Type 'yes' to confirm: " CONFIRM && [ "$$CONFIRM" = "yes" ]67 $(COMPOSE) exec -T db psql -U nca -c "DROP DATABASE IF EXISTS nca_dc;"68 $(COMPOSE) exec -T db psql -U nca -c "CREATE DATABASE nca_dc;"69 gunzip -c $(FILE) | $(COMPOSE) exec -T db psql -U nca nca_dc70 @echo "Restore complete."71 72# ── Shells ────────────────────────────────────────────────────────────────────73 74shell-backend:75 $(BACKEND) python manage.py shell76 77shell-db:78 $(COMPOSE) exec db psql -U nca nca_dc79 80# ── Development ───────────────────────────────────────────────────────────────81 82dev:83 $(COMPOSE_DEV) up -d84 85dev-down:86 $(COMPOSE_DEV) down87 88dev-migrate:89 $(COMPOSE_DEV) exec backend python manage.py migrate90 91dev-seed:92 $(COMPOSE_DEV) exec backend python manage.py loaddata fixtures/ghana_regions.json93 $(COMPOSE_DEV) exec backend python manage.py loaddata fixtures/email_templates.json94 95dev-createsuperuser:96 $(COMPOSE_DEV) exec backend python manage.py createsuperuser97 