# Makefile pour IPWatch

.PHONY: help build up down logs restart clean test install-backend install-frontend dev

help: ## Afficher l'aide
	@echo "IPWatch - Commandes disponibles:"
	@echo ""
	@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'

# Docker
build: ## Construire l'image Docker
	docker-compose build

up: ## Démarrer les conteneurs
	docker-compose up -d
	@echo "IPWatch démarré sur http://localhost:8000"

down: ## Arrêter les conteneurs
	docker-compose down

logs: ## Afficher les logs
	docker-compose logs -f

restart: ## Redémarrer les conteneurs
	docker-compose restart

clean: ## Nettoyer conteneurs, images et volumes
	docker-compose down -v
	rm -rf data/*.sqlite logs/*

# Développement
install-backend: ## Installer dépendances backend
	cd backend && pip install -r requirements.txt

install-frontend: ## Installer dépendances frontend
	cd frontend && npm install

dev-backend: ## Lancer le backend en dev
	cd backend && python -m backend.app.main

dev-frontend: ## Lancer le frontend en dev
	cd frontend && npm run dev

dev: ## Lancer backend + frontend en dev (tmux requis)
	@echo "Lancement backend et frontend..."
	@tmux new-session -d -s ipwatch 'cd backend && python -m backend.app.main'
	@tmux split-window -h 'cd frontend && npm run dev'
	@tmux attach-session -t ipwatch

# Tests
test: ## Exécuter les tests backend
	cd backend && pytest -v

test-coverage: ## Tests avec couverture
	cd backend && pytest --cov=app --cov-report=html

# Utilitaires
init: ## Initialiser le projet (install + build)
	make install-backend
	make install-frontend
	make build

setup-config: ## Créer config.yaml depuis template (si absent)
	@if [ ! -f config.yaml ]; then \
		echo "Création de config.yaml..."; \
		cp config.yaml.example config.yaml 2>/dev/null || echo "config.yaml déjà présent"; \
	else \
		echo "config.yaml existe déjà"; \
	fi

db-backup: ## Sauvegarder la base de données
	@mkdir -p backups
	@cp data/db.sqlite backups/db_$$(date +%Y%m%d_%H%M%S).sqlite
	@echo "Sauvegarde créée dans backups/"

db-reset: ## Réinitialiser la base de données
	@echo "⚠️  Suppression de la base de données..."
	rm -f data/db.sqlite
	@echo "Base de données supprimée. Elle sera recréée au prochain démarrage."
