Major refactor

This commit is contained in:
2026-04-03 23:04:51 -04:00
parent e7f337c735
commit 35d07e8df1
124 changed files with 4929 additions and 2429 deletions

View File

@@ -4,26 +4,6 @@ CREATE TABLE IF NOT EXISTS guilds (
owner_id BIGINT,
volume INTEGER NOT NULL
);
CREATE TABLE IF NOT EXISTS messages (
id TEXT PRIMARY KEY NOT NULL,
guild_id BIGINT NOT NULL,
channel_id BIGINT NOT NULL,
author_id BIGINT NOT NULL,
created BIGINT NOT NULL,
model TEXT NOT NULL,
request TEXT NOT NULL,
response TEXT NOT NULL,
request_tags TEXT[] NOT NULL,
response_tags TEXT[] NOT NULL
);
CREATE TABLE IF NOT EXISTS api_keys (
key TEXT PRIMARY KEY NOT NULL,
user_id BIGINT NOT NULL,
user_name TEXT NOT NULL,
access_mask INT,
created_at TIMESTAMPTZ NOT NULL,
last_used_at TIMESTAMPTZ
);
CREATE TABLE IF NOT EXISTS dice_track (
id UUID PRIMARY KEY NOT NULL DEFAULT gen_random_uuid(),
guild_id BIGINT NOT NULL,
@@ -85,3 +65,66 @@ CREATE TABLE IF NOT EXISTS conditions (
CREATE TABLE IF NOT EXISTS bestiary (
id INTEGER GENERATED ALWAYS AS IDENTITY
);
-- ============================================================
-- Auth / Users
-- ============================================================
-- Stores Discord user info, upserted on every successful OAuth login
CREATE TABLE IF NOT EXISTS users (
id BIGINT PRIMARY KEY NOT NULL,
username TEXT NOT NULL,
avatar TEXT,
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
);
-- ============================================================
-- Grid maps: unbounded canvas, CSPRNG TEXT ids, auth-aware
-- ============================================================
CREATE TABLE IF NOT EXISTS grid_maps (
id TEXT PRIMARY KEY NOT NULL,
name TEXT NOT NULL,
is_public BOOLEAN NOT NULL DEFAULT FALSE,
owner_id BIGINT NOT NULL REFERENCES users(id),
colors TEXT[] NOT NULL DEFAULT ARRAY[
'#6b7280',
'#92400e',
'#15803d',
'#1d4ed8',
'#7c3aed',
'#dc2626',
'#ca8a04',
'#0f172a',
'#f9fafb'
],
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
);
-- Per-map role assignments; owner is auto-inserted on map creation
CREATE TABLE IF NOT EXISTS map_permissions (
map_id TEXT NOT NULL REFERENCES grid_maps(id) ON DELETE CASCADE,
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
role TEXT NOT NULL CHECK (role IN ('owner', 'editor', 'viewer')),
PRIMARY KEY (map_id, user_id)
);
-- Composite primary key replaces the old UUID id column
CREATE TABLE IF NOT EXISTS grid_cells (
map_id TEXT NOT NULL REFERENCES grid_maps(id) ON DELETE CASCADE,
x INTEGER NOT NULL,
y INTEGER NOT NULL,
color TEXT NOT NULL DEFAULT '#808080',
PRIMARY KEY (map_id, x, y)
);
CREATE TABLE IF NOT EXISTS grid_tokens (
id TEXT PRIMARY KEY NOT NULL,
map_id TEXT NOT NULL REFERENCES grid_maps(id) ON DELETE CASCADE,
x INTEGER NOT NULL,
y INTEGER NOT NULL,
label TEXT NOT NULL,
color TEXT NOT NULL DEFAULT '#4444FF'
);