#!/bin/bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "$0")/../.." && pwd)" ENV_FILE="$ROOT_DIR/.env" ENV_LOADER="$ROOT_DIR/infra/scripts/lib/env.sh" usage() { echo "Usage: $0 {migrate|init-data|sync-notifications|bootstrap}" echo "" echo "Commands:" echo " migrate Run database migrations only" echo " init-data Initialize seed data only" echo " sync-notifications Sync static notification configs to DB" echo " bootstrap Run migrations + init-data + sync-notifications" echo "" echo "Note: Requires redis service running (docker compose up -d redis)" exit 1 } if [ ! -f "$ENV_FILE" ]; then echo "Error: env file not found at $ENV_FILE" >&2 exit 1 fi # shellcheck disable=SC1090 . "$ENV_LOADER" load_env_file "$ENV_FILE" load_env_file "$ROOT_DIR/.env.local" cd "$ROOT_DIR" case "${1:-}" in migrate) echo "=== Running Migrations ===" PYTHONPATH=backend/src uv run python -m core.runtime.cli migrate ;; init-data) echo "=== Running Init Data ===" PYTHONPATH=backend/src uv run python -m core.runtime.cli init-data ;; sync-notifications) shift echo "=== Running Sync Notifications ===" PYTHONPATH=backend/src uv run python -m core.runtime.cli sync-notifications "$@" ;; bootstrap) echo "=== Running Bootstrap ===" PYTHONPATH=backend/src uv run python -m core.runtime.cli bootstrap ;; *) usage ;; esac