Files
eryao/infra/scripts/dev-migrate.sh
T
qzl c79c773d67 feat(notification): add target_mode enum constraint and merge register-notifications script
- Add NotificationTargetMode enum (new_users/exist_users/all_users/user_ids)
- Create Alembic migrations: drop duplicate indexes, add target_mode column
- Merge register-notifications.sh into dev-migrate.sh sync-notifications subcommand
- Shorten notification config path: static/notification/notifications -> static/notifications
- Update registration flow to dispatch notifications by target_mode
- Add is_first_registration to RegisterBonusResult for first-time user detection
- Remove dead code: link_published_notifications_to_user
- Update welcome_points.yaml to target new_users only
- Add 44 unit tests + 1 integration test, all passing
2026-04-16 17:50:57 +08:00

54 lines
1.4 KiB
Bash
Executable File

#!/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"
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