set dotenv-load := false

dev_compose := "docker/docker-compose.dev.yml"
prod_compose := "docker/docker-compose.yml"

# List available recipes
default:
    @just --list

# Full dev setup: services + deps + env + dev server
setup: services install env
    @echo "Ready. Run 'just dev' to start."

# Start dev PostgreSQL + MinIO
services:
    docker compose -f {{dev_compose}} up -d
    @echo "Waiting for services..."
    @sleep 3
    @echo "PostgreSQL: localhost:5435"
    @echo "MinIO API:  localhost:9000"
    @echo "MinIO UI:   localhost:9001 (minioadmin/minioadmin)"

# Stop dev services
services-down:
    docker compose -f {{dev_compose}} down

# Install pnpm dependencies
install:
    pnpm install

# Create .env from example if it doesn't exist
env:
    @[ -f apps/web/.env ] || (cp apps/web/.env.example apps/web/.env && sed -i 's/:5432/:5435/' apps/web/.env && echo "Created apps/web/.env (port adjusted to 5435)")
    @[ -f apps/web/.env ] && echo "apps/web/.env exists"

# Start dev server(s) via Turbo
dev:
    pnpm dev

# Start everything: services + dev server
up: services
    pnpm dev

# Run scraper (import directly to Payload)
scrape:
    pnpm --filter @advdoors/scraper scrape

# Scrape raw data to JSON files (no Payload import)
scrape-raw:
    pnpm --filter @advdoors/scraper scrape:raw

# Process raw scraped data with LLM (OpenRouter)
llm-process:
    pnpm --filter @advdoors/scraper llm:process

# Import processed data into Payload CMS
import-processed:
    pnpm --filter @advdoors/scraper import:processed

# Build all packages
build:
    pnpm turbo build

# Typecheck all packages
typecheck:
    pnpm turbo typecheck

# Lint all packages
lint:
    pnpm turbo lint

# Clean build artifacts
clean:
    pnpm turbo clean
    rm -rf node_modules

# Reset dev database (destructive)
db-reset:
    docker compose -f {{dev_compose}} down -v
    docker compose -f {{dev_compose}} up -d
    @echo "Database and MinIO volumes wiped. Restart dev server to re-create schema."

# Production: build and start all containers
prod-up:
    docker compose -f {{prod_compose}} up -d --build

# Production: stop
prod-down:
    docker compose -f {{prod_compose}} down

# Production: view logs
prod-logs *args:
    docker compose -f {{prod_compose}} logs {{args}}

# Show status of dev services
status:
    docker compose -f {{dev_compose}} ps
