.PHONY: help up down restart logs logs-app logs-db ps db dev db-push db-shell clean install-docker

# Цвета для вывода справки
CYAN  := \033[36m
GREEN := \033[32m
RESET := \033[0m

help:
	@echo "$(CYAN)XFlow Full Stack Management:$(RESET)"
	@echo "  $(GREEN)make up$(RESET)             - Собрать и запустить полный стек в Docker (App + DB + Redis)"
	@echo "  $(GREEN)make db$(RESET)             - Запустить ТОЛЬКО базы данных (PostgreSQL + Redis) в фоне"
	@echo "  $(GREEN)make dev$(RESET)            - Поднять DB в Docker + запустить локальный Nuxt с горячей перезагрузкой"
	@echo "  $(GREEN)make down$(RESET)           - Остановить все контейнеры"
	@echo "  $(GREEN)make restart$(RESET)        - Перезапустить контейнеры"
	@echo "  $(GREEN)make logs$(RESET)           - Логи всех сервисов (следить в реальном времени)"
	@echo "  $(GREEN)make logs-app$(RESET)       - Логи веб-приложения Nuxt"
	@echo "  $(GREEN)make logs-db$(RESET)        - Логи базы данных PostgreSQL"
	@echo "  $(GREEN)make ps$(RESET)             - Список работающих контейнеров и портов"
	@echo "  $(GREEN)make db-push$(RESET)        - Применить схему Prisma к локальной БД"
	@echo "  $(GREEN)make db-shell$(RESET)       - Войти в консоль psql базы данных"
	@echo "  $(GREEN)make clean$(RESET)          - Остановить стек и удалить тома с данными (очистка)"
	@echo "  $(GREEN)make install-docker$(RESET) - Команда для установки Docker и Compose на Ubuntu/Debian"

up:
	docker compose up -d --build

db:
	docker compose up -d db redis
	@echo "$(GREEN)PostgreSQL (порт 5432) и Redis (порт 6379) готовы к работе!$(RESET)"

dev: db
	@echo "$(CYAN)Применяем схему Prisma...$(RESET)"
	DATABASE_URL="postgresql://xflow:xflow_pass@localhost:5432/xflow" npm --prefix apps/web run prisma db push || true
	@echo "$(GREEN)Запускаем Nuxt Dev Server...$(RESET)"
	DATABASE_URL="postgresql://xflow:xflow_pass@localhost:5432/xflow" npm --prefix apps/web run dev

down:
	docker compose down

restart:
	docker compose restart

logs:
	docker compose logs -f

logs-app:
	docker compose logs -f app

logs-db:
	docker compose logs -f db

ps:
	docker compose ps

db-push:
	DATABASE_URL="postgresql://xflow:xflow_pass@localhost:5432/xflow" npx --prefix apps/web prisma db push

db-shell:
	docker compose exec db psql -U xflow -d xflow

clean:
	docker compose down -v --remove-orphans

install-docker:
	@echo "$(CYAN)Для установки Docker на вашей Linux системе выполните:$(RESET)"
	@echo "sudo apt-get update && sudo apt-get install -y docker.io docker-compose-v2"
	@echo "sudo usermod -aG docker $$USER"
	@echo "$(CYAN)После этого перезайдите в сессию (newgrp docker или перелогиньтесь).$(RESET)"
