PROJECT  := logviewer-demo
SERVICES := api-gateway auth-service user-service notification-service worker database cache scheduler
SCALE    := --scale api-gateway=2 --scale auth-service=2 --scale notification-service=2 \
            --scale user-service=2 --scale worker=2 --scale database=1 --scale cache=1 --scale scheduler=1

.PHONY: help up build load deploy status logs restart teardown clean

help:
	@echo "docker-orb test infra"
	@echo ""
	@echo "  make up         Build and start all services (2 replicas for the busy ones)"
	@echo "  make build      Build images only, no start"
	@echo "  make status     docker compose ps"
	@echo "  make logs       Tail logs from all services (Ctrl-C to stop)"
	@echo "  make restart    Recreate every service (picks up code/image changes, re-arms the timeout)"
	@echo "  make teardown   Stop and remove everything (containers, networks)"
	@echo ""
	@echo "  SERVICE=auth-service make logs   # logs for one service"
	@echo ""
	@echo "This stack stops itself automatically after 4 hours (a 'reaper'"
	@echo "service, see docker-compose.yml) so it doesn't run forever unattended."
	@echo "  make logs SERVICE=reaper          # see the countdown / when it fired"
	@echo "  TIMEOUT_SECONDS=7200 make up      # override the duration (here: 2h)"
	@echo ""
	@echo "Then, from anywhere:"
	@echo "  docker-orb -n $(PROJECT) --all-containers --health"

up: build
	@echo "-> Starting stack '$(PROJECT)' ..."
	@docker compose -p $(PROJECT) up -d $(SCALE)

build:
	@echo "-> Building images ..."
	@docker compose -p $(PROJECT) build

# Kept as aliases so this reads the same as kube-orb's infra/Makefile.
load: up
deploy: up

status:
	@docker compose -p $(PROJECT) ps

logs:
ifdef SERVICE
	@docker compose -p $(PROJECT) logs -f $(SERVICE)
else
	@docker compose -p $(PROJECT) logs -f
endif

restart:
	@echo "-> Recreating all services ..."
	@docker compose -p $(PROJECT) up -d --force-recreate $(SCALE)

teardown clean:
	@echo "-> Tearing down stack '$(PROJECT)' ..."
	@docker compose -p $(PROJECT) down -v --remove-orphans
	@echo "-> Done."
