# ==============================================================
# 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
DOCKER           := sudo /usr/local/bin/docker

.PHONY: help check-ssh start stop restart status logs logs-f shell-pb pb-admin

# ----------------------------------------------------------
# Hilfe
# ----------------------------------------------------------
help:
	@echo ""
	@echo "  Checkflo — verfügbare Befehle:"
	@echo ""
	@echo "  make start       PocketBase starten"
	@echo "  make stop        PocketBase stoppen"
	@echo "  make restart     PocketBase neu starten"
	@echo "  make status      Container-Status anzeigen"
	@echo ""
	@echo "  make logs        Letzte 100 Zeilen"
	@echo "  make logs-f      Live-Log-Stream"
	@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

# ----------------------------------------------------------
# START
# ----------------------------------------------------------
start: check-ssh
	@ssh $(DS_HOST) "cd $(DS_PATH) && $(DOCKER) compose up -d"
	@echo "  ✓ PocketBase 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=$(CONTAINER_PB) \
		--format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"

# ----------------------------------------------------------
# LOGS
# ----------------------------------------------------------
logs: check-ssh
	@ssh $(DS_HOST) "$(DOCKER) logs $(CONTAINER_PB) --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
