.PHONY: install run run-app run-worker lint fmt test build check

# Akzeptanzkriterium 1: ein Befehl installiert+startet App und Worker.
install: build

build:
	go build ./...

run: build
	@echo "Starte dms-app und dms-worker (Strg+C zum Beenden beider)"
	@trap 'kill 0' EXIT; \
	go run ./cmd/app & \
	go run ./cmd/worker & \
	wait

run-app:
	go run ./cmd/app

run-worker:
	go run ./cmd/worker

# Akzeptanzkriterium 2: Lint-/Format-Checks laufen lokal durch.
lint:
	golangci-lint run ./...

fmt:
	gofmt -l .
	@test -z "$$(gofmt -l .)" || (echo "gofmt-Verstoesse gefunden, siehe oben" && exit 1)

test:
	# -p 1: alle Integrationstest-Pakete teilen sich dieselbe physische
	# Test-Datenbank (TEST_TENANT_DSN); parallele Paketausfuehrung wuerde
	# sich gegenseitig ueberschreiben (dieselbe Konvention wie NEXARCH Core,
	# siehe scripts/run-checks.sh im Core-Modul).
	go test ./... -p 1 -count=1

# Setzt die geteilte Test-Datenbank zurueck, dann build/vet/test in einem
# Rutsch — analog zu NEXARCH Cores scripts/run-checks.sh.
check: build
	NEXARCH_DMS_TEST_DB_PASSWORD="$${NEXARCH_DMS_TEST_DB_PASSWORD:?Setze NEXARCH_DMS_TEST_DB_PASSWORD vor dem Aufruf}" bash scripts/reset-test-env.sh
	go vet ./...
	golangci-lint run ./...
	go test ./... -p 1 -count=1
