Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F3398550
D9961.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
D9961.diff
View Options
diff --git a/keyserver/src/database/migration-config.js b/keyserver/src/database/migration-config.js
--- a/keyserver/src/database/migration-config.js
+++ b/keyserver/src/database/migration-config.js
@@ -5,6 +5,7 @@
import bots from 'lib/facts/bots.js';
import genesis from 'lib/facts/genesis.js';
import { policyTypes } from 'lib/facts/policies.js';
+import { specialRoles } from 'lib/permissions/special-roles.js';
import { messageTypes } from 'lib/types/message-types-enum.js';
import { threadPermissions } from 'lib/types/thread-permission-types.js';
import { threadTypes } from 'lib/types/thread-types-enum.js';
@@ -672,6 +673,25 @@
ADD COLUMN blob_holder char(36) CHARSET latin1
`),
],
+ [
+ 54,
+ async () => {
+ await dbQuery(
+ SQL`
+ ALTER TABLE roles
+ ADD COLUMN IF NOT EXISTS special_role
+ tinyint(2) UNSIGNED DEFAULT NULL,
+ DROP KEY IF EXISTS thread,
+ ADD KEY IF NOT EXISTS thread_special_role (thread, special_role);
+
+ UPDATE roles r
+ JOIN threads t ON r.id = t.default_role
+ SET r.special_role = ${specialRoles.DEFAULT_ROLE};
+ `,
+ { multipleStatements: true },
+ );
+ },
+ ],
]);
const newDatabaseVersion: number = Math.max(...migrations.keys());
diff --git a/keyserver/src/database/setup-db.js b/keyserver/src/database/setup-db.js
--- a/keyserver/src/database/setup-db.js
+++ b/keyserver/src/database/setup-db.js
@@ -135,7 +135,8 @@
thread bigint(20) NOT NULL,
name varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL,
permissions json NOT NULL,
- creation_time bigint(20) NOT NULL
+ creation_time bigint(20) NOT NULL,
+ special_role tinyint(2) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE sessions (
@@ -341,7 +342,7 @@
ALTER TABLE roles
ADD PRIMARY KEY (id),
- ADD KEY thread (thread),
+ ADD KEY thread_special_role (thread, special_role),
ADD UNIQUE KEY thread_name (thread, name);
ALTER TABLE sessions
diff --git a/lib/permissions/special-roles.js b/lib/permissions/special-roles.js
new file mode 100644
--- /dev/null
+++ b/lib/permissions/special-roles.js
@@ -0,0 +1,5 @@
+// @flow
+
+export const specialRoles = Object.freeze({
+ DEFAULT_ROLE: 1,
+});
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Dec 2, 11:24 PM (21 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2609266
Default Alt Text
D9961.diff (2 KB)
Attached To
Mode
D9961: [keyserver/lib] Introduce a specialRoles enum and special_role column in MariaDB
Attached
Detach File
Event Timeline
Log In to Comment