86 lines
3.0 KiB
Makefile

# ============================================================
# Makefile - Gestion de la base Ptits Pas (Postgres + pgAdmin)
# Compatible macOS, Linux, Windows (Git Bash)
# ============================================================
# Détection de l'OS
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin) # macOS
OPEN_CMD = open
else ifeq ($(UNAME_S),Linux) # Linux
OPEN_CMD = xdg-open
else # Windows (Git Bash / Cygwin)
OPEN_CMD = start
endif
# Paramètres
PG_CONTAINER = ptitspas-postgres-standalone
PG_USER = admin
PG_DB = ptitpas_db
VERIFY_SQL = /tests/sql/verify.sql
IMPORT_SQL = /docker-entrypoint-initdb.d/07_import.sql
# ============================================================
# Cibles principales
# ============================================================
reset:
@echo "🗑️ Réinitialisation de la base..."
docker compose -f docker-compose.dev.yml down -v
docker compose -f docker-compose.dev.yml up -d
@echo "✅ Base de données réinitialisée."
import:
@echo "⏳ Attente que Postgres démarre..."
@until docker exec -i $(PG_CONTAINER) pg_isready -U $(PG_USER) -d $(PG_DB); do \
sleep 2; \
done
@echo "🧹 Nettoyage des CSV avant import (local -> in-place)..."
@python3 scripts/clean_csv.py
@if [ $$? -ne 0 ]; then echo "❌ Erreurs lors du nettoyage des CSV - corrige les fichiers avant import"; exit 1; fi
@echo "📥 Import des données de démo..."
@docker exec -i $(PG_CONTAINER) psql -U $(PG_USER) -d $(PG_DB) -f $(IMPORT_SQL)
@echo "✅ Données importées."
set-dev-admin-pw:
@echo "🔐 Définir mot de passe dev pour admin@ptits-pas.fr (admin123)"
@docker exec -i $(PG_CONTAINER) psql -U $(PG_USER) -d $(PG_DB) -c "UPDATE utilisateurs SET password = crypt('admin123', gen_salt('bf')) WHERE email = 'admin@ptits-pas.fr';"
@echo "✅ Mot de passe admin dev mis à jour."
verify:
@echo "⏳ Attente que Postgres démarre pour vérifier..."
@until docker exec -i $(PG_CONTAINER) pg_isready -U $(PG_USER) -d $(PG_DB); do \
sleep 2; \
done
@echo "🔎 Vérification des données..."
-@docker exec -i $(PG_CONTAINER) psql -U $(PG_USER) -d $(PG_DB) -f $(VERIFY_SQL) | tee verify.log
@if grep -q "ERROR" verify.log; then \
echo "❌ Des erreurs détectées (voir verify.log)"; \
else \
echo "✅ Vérification OK : pas d'erreurs détectées."; \
fi
demo: reset import verify
@echo "🌐 Ouverture de pgAdmin sur http://localhost:8081 ..."
@$(OPEN_CMD) http://localhost:8081
# ============================================================
# Utilitaires
# ============================================================
logs:
docker compose -f docker-compose.dev.yml logs -f
psql:
docker exec -it $(PG_CONTAINER) psql -U $(PG_USER) -d $(PG_DB)
stop:
docker compose -f docker-compose.dev.yml down
sync-enums:
@echo "🔁 Génération de migrations/00_sync_enums.sql depuis les CSV"
@python3 scripts/sync_enums.py > migrations/00_sync_enums.sql
@echo "✅ migrations/00_sync_enums.sql générée. Relis le fichier avant de l'appliquer."