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

CYAN  := \033[36m
GREEN := \033[32m
YELLOW:= \033[33m
RESET := \033[0m

help:
	@echo "$(CYAN)XFlow Stack Management:$(RESET)"
	@echo "  $(GREEN)make up$(RESET)             - Запустить стек (в Docker если установлен, иначе локально через Node)"
	@echo "  $(GREEN)make start$(RESET)          - Запустить собранный Nuxt-сервер на Node (порт 3000)"
	@echo "  $(GREEN)make db$(RESET)             - Запустить базы (PostgreSQL + Redis) в Docker"
	@echo "  $(GREEN)make dev$(RESET)            - Поднять DB в Docker + запустить локальный Nuxt"
	@echo "  $(GREEN)make down$(RESET)           - Остановить контейнеры Docker"
	@echo "  $(GREEN)make logs$(RESET)           - Логи Docker-контейнеров"
	@echo "  $(GREEN)make install-docker$(RESET) - Инструкция по установке Docker на Ubuntu"

up:
	@if command -v docker >/dev/null 2>&1; then \
		echo "$(GREEN)Запуск контейнеров через Docker Compose...$(RESET)"; \
		docker compose up -d --build; \
	else \
		echo "$(YELLOW)Docker не установлен в системе.$(RESET)"; \
		echo "$(CYAN)Чтобы установить Docker: sudo apt-get update && sudo apt-get install -y docker.io docker-compose-v2 && sudo usermod -aG docker \$$USER$(RESET)"; \
		echo "$(GREEN)Запускаем XFlow через Node.js на порту 3000...$(RESET)"; \
		$(MAKE) start; \
	fi

start:
	@PORT=3000 node /home/alexives/Desktop/StudioProjects/XFlow/apps/web/.output/server/index.mjs

db:
	docker compose up -d db redis
	@echo "$(GREEN)PostgreSQL (5432) и Redis (6379) запущены!$(RESET)"

dev: db
	DATABASE_URL="postgresql://xflow:xflow_pass@localhost:5432/xflow" npm --prefix apps/web run prisma db push || true
	DATABASE_URL="postgresql://xflow:xflow_pass@localhost:5432/xflow" npm --prefix apps/web run dev

down:
	@if command -v docker >/dev/null 2>&1; then docker compose down; fi

restart:
	@if command -v docker >/dev/null 2>&1; then docker compose restart; else $(MAKE) start; fi

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 выполните:$(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)"
