mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 02:43:44 +00:00
A new table, permission_grants (MySQL migration 96, SQLite 79), and the IPermissionGrants interface with MySQL, SQLite and TestSQL implementations. A row grants (or with deny, takes away) a dashboard permission, a slash command, a permission category or every command up to a GM level, for one account or one character, with an optional expiry, who granted it and when, and a note. Rows are never deleted: removing one sets revoked_at/revoked_by, so the table is also the history. Nothing reads it yet. Check: both migrations run on a fresh and an existing database; DatabaseParityTests PermissionGrants passes against MariaDB (DLU_TEST_MYSQL_HOST) and SQLite gives the same results. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
18 lines
729 B
SQL
18 lines
729 B
SQL
/* Permissions and slash commands granted to or taken from one account or character. See the MySQL migration. */
|
|
CREATE TABLE IF NOT EXISTS permission_grants (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
target_type TEXT NOT NULL,
|
|
target_id BIGINT NOT NULL,
|
|
kind TEXT NOT NULL,
|
|
name TEXT NOT NULL,
|
|
deny INTEGER NOT NULL DEFAULT 0,
|
|
expires_at BIGINT NOT NULL DEFAULT 0,
|
|
note TEXT NOT NULL DEFAULT '',
|
|
granted_at BIGINT NOT NULL,
|
|
granted_by_id INTEGER NOT NULL DEFAULT 0,
|
|
granted_by TEXT NOT NULL DEFAULT '',
|
|
revoked_at BIGINT NOT NULL DEFAULT 0,
|
|
revoked_by TEXT NOT NULL DEFAULT ''
|
|
);
|
|
CREATE INDEX IF NOT EXISTS permission_grants_target ON permission_grants (target_type, target_id);
|