.PHONY: setup up down install migrate seed fresh logs shell test

# ─── Initial setup (run once) ──────────────────────────────────────────────
setup:
	@echo "🚀 Setting up BPDLH LOS..."
	cp -n .env.example .env || true
	docker compose build --no-cache
	docker compose up -d postgres redis minio
	@echo "⏳ Waiting for PostgreSQL to be ready..."
	@sleep 8
	docker compose run --rm php composer install --no-interaction
	docker compose run --rm php php artisan key:generate
	docker compose run --rm php php artisan migrate --seed
	docker compose run --rm php php artisan storage:link
	docker compose run --rm php php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
	docker compose run --rm php php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="activitylog-migrations"
	docker compose run --rm php php artisan migrate
	docker compose up -d
	@echo "✅ Setup selesai! Buka http://localhost"

# ─── Start/Stop ────────────────────────────────────────────────────────────
up:
	docker compose up -d
	@echo "✅ Running at http://localhost | MinIO Console: http://localhost:9001"

down:
	docker compose down

# ─── Development ───────────────────────────────────────────────────────────
install:
	docker compose run --rm php composer install

migrate:
	docker compose run --rm php php artisan migrate

seed:
	docker compose run --rm php php artisan db:seed

fresh:
	docker compose run --rm php php artisan migrate:fresh --seed

# ─── Utilities ─────────────────────────────────────────────────────────────
logs:
	docker compose logs -f

shell:
	docker compose exec php bash

artisan:
	docker compose run --rm php php artisan $(filter-out $@,$(MAKECMDGOALS))

test:
	docker compose run --rm php php artisan test

pint:
	docker compose run --rm php ./vendor/bin/pint

# ─── Catch-all for artisan arguments ───────────────────────────────────────
%:
	@:
