# Makefile for DNSBlock

# Variables
DOCKER_COMPOSE = docker-compose
DB_CONTAINER = dnsblock-db
APP_CONTAINER = dnsblock-app
MYSQL_CMD = docker exec -i $(DB_CONTAINER) mysql -uroot -p"$$(grep DB_ROOT_PASSWORD .env | cut -d '=' -f2)" "$$(grep DB_NAME .env | cut -d '=' -f2)" --default-character-set=utf8mb4

# Colors
GREEN=\033[0;32m
NC=\033[0m # No Color

.PHONY: help setup up down restart logs shell import reset

help:
	@echo "Sistema de Gerenciamento DNSBlock"
	@echo "Comandos disponíveis:"
	@echo "  make setup    - Configura o arquivo .env inicial"
	@echo "  make up       - Inicia os containers em background"
	@echo "  make down     - Para e remove os containers"
	@echo "  make restart  - Reinicia os containers"
	@echo "  make logs     - Exibe logs dos containers"
	@echo "  make shell    - Abre um shell no container da aplicação"
	@echo "  make import   - Importa o schema e seeds do banco de dados (Corrige Encoding)"
	@echo "  make reset    - [PERIGO] Reseta tudo: down, apaga dados, up e importa"

setup:
	@if [ ! -f .env ]; then \
		cp .env.example .env; \
		echo "$(GREEN).env criado a partir do exemplo. Edite-o com suas configurações!$(NC)"; \
	else \
		echo "Arquivo .env já existe."; \
	fi

up:
	@echo "$(GREEN)Iniciando containers...$(NC)"
	$(DOCKER_COMPOSE) up -d

down:
	@echo "$(GREEN)Parando containers...$(NC)"
	$(DOCKER_COMPOSE) down

restart: down up

logs:
	$(DOCKER_COMPOSE) logs -f

shell:
	docker exec -it $(APP_CONTAINER) bash

import:
	@echo "$(GREEN)Importando banco de dados com correção de encoding (UTF-8)...$(NC)"
	@# Aguarda o banco estar pronto (simples sleep, idealmente seria um wait-for-it)
	@sleep 5
	@$(MYSQL_CMD) < database/schema.sql
	@$(MYSQL_CMD) < database/seeds.sql
	@echo "$(GREEN)Importação concluída com sucesso!$(NC)"

reset:
	@echo "$(GREEN)Resetando ambiente...$(NC)"
	$(DOCKER_COMPOSE) down
	sudo rm -rf mysql_data
	$(DOCKER_COMPOSE) up -d
	@echo "Aguardando inicialização do banco de dados..."
	@sleep 10
	make import

backup:
	@echo "$(GREEN)Gerando backup do banco de dados...$(NC)"
	@mkdir -p backups
	@docker exec $(DB_CONTAINER) mysqldump -u root -p"$$(grep DB_ROOT_PASSWORD .env | cut -d '=' -f2)" --all-databases > backups/backup_$$(date +%Y%m%d_%H%M%S).sql
	@echo "$(GREEN)Backup salvo em backups/backup_$$(date +%Y%m%d_%H%M%S).sql$(NC)"

restore:
	@if [ -z "$(FILE)" ]; then \
		echo "Erro: Especifique o arquivo de backup com FILE=caminho/do/arquivo.sql"; \
		exit 1; \
	fi
	@echo "$(GREEN)Restaurando banco de dados a partir de $(FILE)...$(NC)"
	@docker exec -i $(DB_CONTAINER) mysql -u root -p"$$(grep DB_ROOT_PASSWORD .env | cut -d '=' -f2)" < $(FILE)
	@echo "$(GREEN)Restauração concluída!$(NC)"
