# ==============================================================
# CHECKFLO — Makefile
# Deploy-Strategie: SSH zur DS, Docker Compose
# ==============================================================

DS_HOST          := ds
DS_IP            := 10.47.11.10
DS_SSH_PORT      := 4711
DS_PATH          := /volume1/docker/checkflo
CONTAINER_PB     := checkflo-pocketbase
CONTAINER_APP    := checkflo-app
DOCKER           := sudo /usr/local/bin/docker

TAR_EXCLUDE := --exclude='.git' \
               --exclude='./app/node_modules' \
               --exclude='./app/.svelte-kit' \
               --exclude='./app/build' \
               --exclude='./.env' \
               --exclude='./.DS_Store'

.PHONY: help check-ssh start stop restart status logs logs-f logs-app \
        shell-pb pb-admin deploy setup-db seed-demo

# ----------------------------------------------------------
# Hilfe
# ----------------------------------------------------------
help:
	@echo ""
	@echo "  Checkflo — verfügbare Befehle:"
	@echo ""
	@echo "  make deploy      App bauen + zur DS übertragen + Container neu starten"
	@echo "  make start       Alle Container starten"
	@echo "  make stop        Alle Container stoppen"
	@echo "  make restart     Alle Container neu starten"
	@echo "  make status      Container-Status anzeigen"
	@echo ""
	@echo "  make logs        PocketBase-Logs (100 Zeilen)"
	@echo "  make logs-app    App-Logs (100 Zeilen)"
	@echo "  make logs-f      PocketBase Live-Log"
	@echo "  make shell-pb    Shell in PocketBase-Container"
	@echo "  make pb-admin    PocketBase Admin-URL anzeigen"
	@echo ""

# ----------------------------------------------------------
# SSH-Prüfung
# ----------------------------------------------------------
check-ssh:
	@if ! nc -z -w3 $(DS_IP) $(DS_SSH_PORT) 2>/dev/null; then \
		echo ""; \
		echo "  ✗ DS nicht erreichbar ($(DS_IP):$(DS_SSH_PORT))"; \
		echo ""; \
		exit 1; \
	fi

# ----------------------------------------------------------
# DEPLOY — Dateien zur DS + Docker rebuild
# ----------------------------------------------------------
deploy: check-ssh
	@echo "→ Sync zu DS..."
	@COPYFILE_DISABLE=1 tar czf - $(TAR_EXCLUDE) . | ssh $(DS_HOST) "tar xzf - -C $(DS_PATH)/"
	@echo "→ Docker rebuild + restart..."
	@ssh $(DS_HOST) " \
		cd $(DS_PATH) && \
		$(DOCKER) compose down && \
		$(DOCKER) compose build app && \
		$(DOCKER) compose up -d"
	@echo "  ✓ Deploy fertig."
	@ssh $(DS_HOST) "$(DOCKER) logs $(CONTAINER_APP) --tail=10"

# ----------------------------------------------------------
# START
# ----------------------------------------------------------
start: check-ssh
	@ssh $(DS_HOST) "cd $(DS_PATH) && $(DOCKER) compose up -d"
	@echo "  ✓ Gestartet."

# ----------------------------------------------------------
# STOP
# ----------------------------------------------------------
stop: check-ssh
	@ssh $(DS_HOST) "cd $(DS_PATH) && $(DOCKER) compose down"
	@echo "  ✓ Gestoppt."

# ----------------------------------------------------------
# RESTART
# ----------------------------------------------------------
restart: check-ssh
	@ssh $(DS_HOST) "cd $(DS_PATH) && $(DOCKER) compose restart"
	@echo "  ✓ Neugestartet."

# ----------------------------------------------------------
# STATUS
# ----------------------------------------------------------
status: check-ssh
	@ssh $(DS_HOST) "$(DOCKER) ps \
		--filter name=checkflo \
		--format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"

# ----------------------------------------------------------
# LOGS
# ----------------------------------------------------------
logs: check-ssh
	@ssh $(DS_HOST) "$(DOCKER) logs $(CONTAINER_PB) --tail=100"

logs-app: check-ssh
	@ssh $(DS_HOST) "$(DOCKER) logs $(CONTAINER_APP) --tail=100"

logs-f: check-ssh
	@ssh $(DS_HOST) "$(DOCKER) logs $(CONTAINER_PB) -f"

# ----------------------------------------------------------
# SHELL in PocketBase
# ----------------------------------------------------------
shell-pb: check-ssh
	@ssh -t $(DS_HOST) "$(DOCKER) exec -it $(CONTAINER_PB) sh"

# ----------------------------------------------------------
# POCKETBASE Admin
# ----------------------------------------------------------
pb-admin:
	@echo "  PocketBase Admin: https://api.checkflo.de/_/"

# ----------------------------------------------------------
# SETUP-DB — Datenmodell in PocketBase anlegen
# ----------------------------------------------------------
setup-db:
	@PB_URL=https://api.checkflo.de \
		PB_EMAIL=$(PB_EMAIL) \
		PB_PASSWORD=$(PB_PASSWORD) \
		./scripts/setup-db.sh

# ----------------------------------------------------------
# SEED-DEMO — Demo-Tenant mit Stationen anlegen
# ----------------------------------------------------------
seed-demo:
	@PB_URL=https://api.checkflo.de \
		PB_EMAIL=$(PB_EMAIL) \
		PB_PASSWORD=$(PB_PASSWORD) \
		./scripts/seed-demo.sh
