mirror of
https://github.com/djdevin/recflare.git
synced 2026-09-08 14:41:28 -07:00
26 lines
1.3 KiB
SQL
26 lines
1.3 KiB
SQL
-- Weekly-challenge progress, owned by the `econ` worker. One row per (account,
|
|
-- challenge): the client evaluates a challenge's rule tree locally and posts its verdict
|
|
-- to `/api/challenge/v2/updateProgress`, which upserts here; `/api/challenge/v2/getCurrent`
|
|
-- reads the rows back to stamp each challenge's per-player `Complete`.
|
|
--
|
|
-- Only the completion flag is stored. The `Config` rule tree posted alongside it is the
|
|
-- challenge's definition (static/weekly-challenge.json, identical for every player) plus
|
|
-- the client's running count in `cc`; the server evaluates none of it, so a per-player copy
|
|
-- would just be a staler duplicate of the catalog.
|
|
--
|
|
-- `challenge_map_id` is the rotation the report belongs to. It is not part of the key, but
|
|
-- it scopes reads and resets the row when a challenge id comes back in a later rotation:
|
|
-- ids are only unique within one. Kept in sync with CHALLENGE_STATUS_SCHEMA_DDL in
|
|
-- src/challenge-db.ts.
|
|
|
|
CREATE TABLE IF NOT EXISTS challenge_status (
|
|
account_id INTEGER NOT NULL,
|
|
challenge_id INTEGER NOT NULL,
|
|
challenge_map_id INTEGER NOT NULL,
|
|
complete INTEGER NOT NULL,
|
|
updated_at TEXT NOT NULL,
|
|
PRIMARY KEY (account_id, challenge_id)
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_challenge_status_account_map ON challenge_status (account_id, challenge_map_id);
|