mirror of
https://github.com/djdevin/recflare.git
synced 2026-09-08 14:41:28 -07:00
move presence to d1
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
-- Player presence — the room instance a player is currently in, plus the status
|
||||
-- fields the match heartbeat echoes back. Stored as a JSON blob in `data` with
|
||||
-- generated (virtual) columns for the fields we query on, the same pattern as the
|
||||
-- rooms/room_instance tables. One row per account (unique `account_id`); writes
|
||||
-- upsert via INSERT OR REPLACE. Rows carry an absolute `expires_at` (epoch
|
||||
-- seconds) — reads filter expired rows out and a cleanup pass purges them.
|
||||
-- Generated from packages/domain/src/presence-db.ts (PRESENCE_SCHEMA_DDL) — keep
|
||||
-- in sync. Written by the match/auth workers, read by match/rooms.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS presence (
|
||||
data TEXT NOT NULL,
|
||||
account_id INTEGER GENERATED ALWAYS AS (json_extract(data, '$.accountId')) VIRTUAL,
|
||||
room_instance_id INTEGER GENERATED ALWAYS AS (json_extract(data, '$.roomInstance.roomInstanceId')) VIRTUAL,
|
||||
room_id INTEGER GENERATED ALWAYS AS (json_extract(data, '$.roomInstance.roomId')) VIRTUAL,
|
||||
expires_at INTEGER GENERATED ALWAYS AS (json_extract(data, '$.expiresAt')) VIRTUAL
|
||||
);
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_presence_account ON presence (account_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_presence_room_instance ON presence (room_instance_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_presence_expires ON presence (expires_at);
|
||||
Reference in New Issue
Block a user