.PHONY: db-up db-down db-reset verify

PGUSER := sowdb
PGDATABASE := sowdb_test
PSQL := docker compose exec -T postgres psql -U $(PGUSER) -d $(PGDATABASE) -v ON_ERROR_STOP=1

## Start the throwaway Postgres used for local development/demo/integration tests.
db-up:
	docker compose up -d
	@until docker compose exec -T postgres pg_isready -U $(PGUSER) -d $(PGDATABASE) >/dev/null 2>&1; do sleep 1; done

db-down:
	docker compose down

## Wipe and reload the demo schema (examples/blog.sql), ready for a fresh demo/run.
db-reset: db-up
	@$(PSQL) -q -c "DROP SCHEMA public CASCADE; CREATE SCHEMA public;"
	@$(PSQL) -q < examples/blog.sql

## Print row counts and check for orphaned foreign keys (posts without a matching user).
verify:
	@$(PSQL) -t -A -c "SELECT 'users:  ' || count(*) FROM users;"
	@$(PSQL) -t -A -c "SELECT 'posts:  ' || count(*) FROM posts;"
	@$(PSQL) -t -A -c "SELECT 'orphaned posts (no matching user): ' || count(*) FROM posts p LEFT JOIN users u ON p.user_id = u.id WHERE u.id IS NULL;"
