mirror of
https://github.com/djdevin/recflare.git
synced 2026-09-09 15:11:29 -07:00
1.5 KiB
1.5 KiB
playersettings
Player-settings worker served on the playersettings subdomain.
GET /— service status{ "service": "playersettings", "status": "ok" }.GET /playersettings—[Authorize]. The player's settings as{ PlayerId, Key, Value }, read from the per-player KV map. On a player's first read it seeds (and persists) the default settings.PUT /playersettings—[Authorize]. Accepts a form-urlencodedkey=…&value=…(or a JSON{key,value}/ array) and upserts it into the player's settings, keyed by thesubclaim of the Bearer JWT. Returns200. Persisted in Workers KV (RECFLARE_PLAYER_SETTINGS, keyplayer:<id>).DELETE /playersettings—[Authorize]. Removes a setting from the player's map. The client sends a bare form-urlencodedkey=PlayerShoppingBagId(novalue); a JSON body and a?key=query param are also read. Deleting a key that isn't stored is a no-op200, not a404.
A full settings PUT would replace the player's entire settings set on each call; we merge instead, so a single-key PUT (e.g.
key=PlayerSessionCount) doesn't wipe the others.
Emptying the map with DELETE puts the player back to a first read: the next
GETre-seeds the defaults.
KV namespace
wrangler kv namespace create RECFLARE_PLAYER_SETTINGS # then put the id in .env under RECFLARE_KV (see .env.example)
Development
Run in dev mode
pnpm dev
Run tests
pnpm test
Deploy
pnpm turbo deploy