mirror of
https://github.com/djdevin/recflare.git
synced 2026-09-08 14:41:28 -07:00
f871736839
GET/PUT /api/players/v1/playerPhotoTaggingSetting, ported from the reference's PlayerDB.Get/SetPlayerPhotoTaggingSetting. Backed by the shared player-settings KV bag (owned by the `playersettings` worker) under a `PlayerPhotoTaggingSetting` key rather than its own table. The setting is served as the enum ORDINAL (0 Anyone / 1 Friends / 2 NoOne) — the reference registers no JsonStringEnumConverter, so the client decodes a number. Unset reads back 0; the PUT answers a bare true, or false when the body carries no recognizable setting, as the reference's bool does. The write merges into the player's settings map and seeds the `playersettings` defaults when there is none yet, so writing this key can't cost a player the seeding that worker's first read would have done. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
79 lines
2.5 KiB
JSON
79 lines
2.5 KiB
JSON
{
|
|
"$schema": "node_modules/wrangler/config-schema.json",
|
|
"name": "api",
|
|
"main": "src/api.app.ts",
|
|
"compatibility_date": "2026-06-16",
|
|
"compatibility_flags": ["nodejs_compat"],
|
|
// Shared `recflare` DB. Created manually with `wrangler d1 create recflare`; its
|
|
// id lives in RECFLARE_D1 (see .env) and the "local" placeholder below is
|
|
// spliced out at deploy time. The `api` worker owns the `relationships` table
|
|
// (schema/migration here); its own migrations_table keeps history separate from
|
|
// the other workers' migrations on the shared database.
|
|
"d1_databases": [
|
|
{
|
|
"binding": "DB",
|
|
"database_name": "recflare",
|
|
"database_id": "local",
|
|
"migrations_dir": "migrations",
|
|
"migrations_table": "d1_migrations_api"
|
|
}
|
|
],
|
|
// Image bucket shared with the `img` worker (which serves objects back by key).
|
|
// Saved-image uploads are written here. The `recflare-cdn` bucket (owned by the
|
|
// `cdn` worker, written by `storage`) is bound read-only alongside it, to hash an
|
|
// invention's uploaded data blob for its `BlobHash`.
|
|
"r2_buckets": [
|
|
{
|
|
"binding": "IMAGES",
|
|
"bucket_name": "recflare-img"
|
|
},
|
|
{
|
|
"binding": "CDN_ASSETS",
|
|
"bucket_name": "recflare-cdn"
|
|
}
|
|
],
|
|
// Per-player settings bag, shared with the `playersettings` worker (which owns it
|
|
// and serves the same map at `/playersettings`). Same binding name and same "local"
|
|
// id placeholder as that worker's config, so both point at one namespace.
|
|
"kv_namespaces": [
|
|
{
|
|
"binding": "RECFLARE_PLAYER_SETTINGS",
|
|
"id": "local"
|
|
}
|
|
],
|
|
// Cross-worker binding to the SignalR notifications hub DO (owned/migrated by
|
|
// the `notify` worker). We only invoke its RPC methods; no migration here.
|
|
"durable_objects": {
|
|
"bindings": [
|
|
{
|
|
"name": "RECFLARE_NOTIFICATIONS_HUB",
|
|
"class_name": "NotificationsHub",
|
|
"script_name": "notify"
|
|
}
|
|
]
|
|
},
|
|
"logpush": false,
|
|
// Shared Secrets Store holding the HS256 JWT signing key. Every worker binds the
|
|
// same store as JWT_SECRET so tokens signed by `auth` verify here. The "local"
|
|
// store_id placeholder is replaced with RECFLARE_SECRETS_STORE at deploy time.
|
|
"secrets_store_secrets": [
|
|
{
|
|
"binding": "JWT_SECRET",
|
|
"store_id": "local",
|
|
"secret_name": "JWT_SECRET"
|
|
}
|
|
],
|
|
"upload_source_maps": true,
|
|
"observability": {
|
|
"logs": {
|
|
"enabled": true,
|
|
"head_sampling_rate": 1 // 100%
|
|
}
|
|
},
|
|
"vars": {
|
|
"ENVIRONMENT": "development", // overridden during deployment
|
|
"SENTRY_RELEASE": "unknown", // overridden during deployment
|
|
"DOMAIN": "rec.example.com" // base domain; overridden during deployment
|
|
}
|
|
}
|