Load Quest Data
Loads quest definitions from GRADIENTBANG_QUEST_DATA_DIR (data/quests/ by default) into Supabase.
Parameters
Ask the user for:
- Mode:
upsert(default) orforce(deletes all existing quest data first) - Dry run: whether to validate only without writing (default: no)
Steps
1. Source environment variables
set -a && source .env.supabase && set +a
2. Run the quest loader
Upsert mode (default — updates existing quests, inserts new ones):
uv run -m gradientbang.scripts.load_quests_to_supabase
Force mode (wipes all quest definitions and reloads from scratch):
uv run -m gradientbang.scripts.load_quests_to_supabase --force
Dry run (validate JSON files without writing to database):
uv run -m gradientbang.scripts.load_quests_to_supabase --dry-run
3. Verify
Confirm the output shows "Success!" and check the stats summary for expected quest/step/subscription counts.
Important notes
- Each
.jsonfile inGRADIENTBANG_QUEST_DATA_DIRrepresents one quest chain. The loader picks up all*.jsonfiles in the directory. - The loader upserts by quest
code, so it's safe to re-run after editing quest data. --forcedeletes ALL quest definitions (cascades to steps and subscriptions) before reloading. Player quest progress (player_quests,player_quest_steps) is NOT affected — but orphaned progress rows will reference deleted step IDs.- If you get a PostgREST schema cache error, run:
docker exec supabase_db_gb-world-server psql -U postgres -d postgres -c "NOTIFY pgrst, 'reload schema'"then retry.