Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/database/migration-config.js
Show First 20 Lines • Show All 278 Lines • ▼ Show 20 Lines | const migrations: $ReadOnlyMap<number, () => Promise<void>> = new Map([ | ||||
], | ], | ||||
[23, updateRolesAndPermissionsForAllThreads], | [23, updateRolesAndPermissionsForAllThreads], | ||||
[24, updateRolesAndPermissionsForAllThreads], | [24, updateRolesAndPermissionsForAllThreads], | ||||
[ | [ | ||||
25, | 25, | ||||
async () => { | async () => { | ||||
await dbQuery( | await dbQuery( | ||||
SQL` | SQL` | ||||
CREATE TABLE IF NOT EXISTS message_search ( | CREATE TABLE IF NOT EXISTS message_search ( | ||||
original_message_id bigint(20) NOT NULL, | original_message_id bigint(20) NOT NULL, | ||||
message_id bigint(20) NOT NULL, | message_id bigint(20) NOT NULL, | ||||
processed_content mediumtext COLLATE utf8mb4_bin | processed_content mediumtext COLLATE utf8mb4_bin | ||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin; | ||||
ALTER TABLE message_search | ALTER TABLE message_search | ||||
ADD PRIMARY KEY (original_message_id), | ADD PRIMARY KEY (original_message_id), | ||||
ADD FULLTEXT INDEX processed_content (processed_content); | ADD FULLTEXT INDEX processed_content (processed_content); | ||||
`, | `, | ||||
{ multipleStatements: true }, | { multipleStatements: true }, | ||||
); | ); | ||||
}, | }, | ||||
], | ], | ||||
[26, processMessagesInDBForSearch], | [26, processMessagesInDBForSearch], | ||||
[ | [ | ||||
27, | 27, | ||||
▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | [ | ||||
async () => { | async () => { | ||||
await dbQuery(SQL` | await dbQuery(SQL` | ||||
UPDATE messages | UPDATE messages | ||||
SET target_message = JSON_VALUE(content, "$.sourceMessageID") | SET target_message = JSON_VALUE(content, "$.sourceMessageID") | ||||
WHERE type = ${messageTypes.SIDEBAR_SOURCE}; | WHERE type = ${messageTypes.SIDEBAR_SOURCE}; | ||||
`); | `); | ||||
}, | }, | ||||
], | ], | ||||
[ | |||||
33, | |||||
async () => { | |||||
await dbQuery( | |||||
SQL` | |||||
CREATE TABLE IF NOT EXISTS olm_sessions ( | |||||
cookie_id bigint(20) NOT NULL, | |||||
is_content tinyint(1) NOT NULL, | |||||
version bigint(20) NOT NULL, | |||||
pickled_olm_session text | |||||
CHARACTER SET latin1 | |||||
COLLATE latin1_bin NOT NULL | |||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin; | |||||
ALTER TABLE olm_sessions | |||||
ADD PRIMARY KEY (cookie_id, is_content); | |||||
`, | |||||
{ multipleStatements: true }, | |||||
); | |||||
}, | |||||
], | |||||
]); | ]); | ||||
const newDatabaseVersion: number = Math.max(...migrations.keys()); | const newDatabaseVersion: number = Math.max(...migrations.keys()); | ||||
async function writeJSONToFile(data: any, filePath: string): Promise<void> { | async function writeJSONToFile(data: any, filePath: string): Promise<void> { | ||||
console.warn(`updating ${filePath} to ${JSON.stringify(data)}`); | console.warn(`updating ${filePath} to ${JSON.stringify(data)}`); | ||||
const fileHandle = await fs.promises.open(filePath, 'w'); | const fileHandle = await fs.promises.open(filePath, 'w'); | ||||
await fileHandle.writeFile(JSON.stringify(data, null, ' '), 'utf8'); | await fileHandle.writeFile(JSON.stringify(data, null, ' '), 'utf8'); | ||||
await fileHandle.close(); | await fileHandle.close(); | ||||
▲ Show 20 Lines • Show All 89 Lines • Show Last 20 Lines |