.PHONY: up down api worker backend web migrate sqlc test test-api check-web vet seed seed-woo mock-woo health setup cutover-rehearsal build

# Start local Postgres only (:5433 — pairs with host npm run setup / npm run dev)
up:
	docker compose up -d

# Stop local Postgres
down:
	docker compose down

# One-shot: .env + Postgres + goose migrate (cross-platform via Node)
setup:
	node scripts/setup.mjs

# Run Go API (config.Load reads monorepo-root .env; or: .\scripts\run-api.ps1)
api:
	cd apps/api && go run ./cmd/api

# Background job worker (processing + Woo claim + billing; required for GET /readyz)
worker:
	cd apps/api && go run ./cmd/worker

# API + worker together (readyz/jobs). Prefer: npm run dev:backend (or npm run dev for +web)
backend:
	npm run dev:backend

# Run SvelteKit web (Vite proxies /api → :28471; port 28472)
web:
	cd apps/web && npm install && npm run dev

# Apply goose migrations and regenerate sqlc (any OS: npm run migrate)
migrate:
	node scripts/migrate.mjs

# Seed local demo user (any OS: npm run seed)
seed:
	node scripts/seed-local.mjs

# Seed WooCommerce demo orders/reviews/audience campaign (no live Woo required)
seed-woo:
	cd apps/api && go run ./cmd/seed-woo-demo

# Local WooCommerce REST fixtures for live client proofs (see docs/live-woo-test.md)
mock-woo:
	cd apps/api && go run ./cmd/mock-woo -addr 127.0.0.1:19090

# Quick health probes (API :28471; /readyz needs worker)
health:
	node scripts/health.mjs

# Local cutover rehearsal: deploy-check + list-* + orphan dry-run (no Clerk/SMTP/Stripe/-confirm)
cutover-rehearsal:
	node scripts/cutover-local-rehearsal.mjs

# Regenerate sqlc only
sqlc:
	cd apps/api && sqlc generate

# Unit tests (API) — no live DB required for default suite
test: test-api

test-api:
	cd apps/api && go test ./...

vet:
	cd apps/api && go vet ./...

# Type-check SvelteKit (install deps first if needed)
check-web:
	cd apps/web && npm run check

# Low-memory production build (web then Go api+worker binaries; ~4GB-safe defaults)
build:
	node scripts/build.mjs
