Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F3352386
D4835.id15655.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
32 KB
Referenced Files
None
Subscribers
None
D4835.id15655.diff
View Options
diff --git a/keyserver/src/creators/message-creator.js b/keyserver/src/creators/message-creator.js
--- a/keyserver/src/creators/message-creator.js
+++ b/keyserver/src/creators/message-creator.js
@@ -26,7 +26,6 @@
appendSQLArray,
mergeOrConditions,
} from '../database/database';
-import { getDBType } from '../database/db-config';
import { fetchMessageInfoForLocalID } from '../fetchers/message-fetchers';
import { fetchOtherSessionsForViewer } from '../fetchers/session-fetchers';
import { fetchServerThreadInfos } from '../fetchers/thread-fetchers';
@@ -301,15 +300,14 @@
`);
const perUserInfo = new Map<string, UserThreadInfo>();
- const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+ const [result] = await dbQuery(query);
for (const row of result) {
const userID = row.user.toString();
const threadID = row.thread.toString();
const deviceToken = row.device_token;
const focusedUser = !!row.focused_user;
const { platform } = row;
- const versions =
- dbType === 'mysql5.7' ? row.versions : JSON.parse(row.versions);
+ const versions = JSON.parse(row.versions);
let thisUserInfo = perUserInfo.get(userID);
if (!thisUserInfo) {
thisUserInfo = {
@@ -326,10 +324,7 @@
const isSubthreadMember = row[`subthread${subthread}_role`] > 0;
const rawSubthreadPermissions =
row[`subthread${subthread}_permissions`];
- const subthreadPermissions =
- dbType === 'mysql5.7'
- ? rawSubthreadPermissions
- : JSON.parse(rawSubthreadPermissions);
+ const subthreadPermissions = JSON.parse(rawSubthreadPermissions);
const canSeeSubthread = permissionLookup(
subthreadPermissions,
threadPermissions.KNOW_OF,
diff --git a/keyserver/src/creators/session-creator.js b/keyserver/src/creators/session-creator.js
--- a/keyserver/src/creators/session-creator.js
+++ b/keyserver/src/creators/session-creator.js
@@ -3,7 +3,6 @@
import type { CalendarQuery } from 'lib/types/entry-types';
import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
import type { Viewer } from '../session/viewer';
async function createSession(
@@ -25,23 +24,11 @@
INSERT INTO sessions (id, user, cookie, query,
creation_time, last_update, last_validated)
VALUES ${[row]}
- `;
- const dbType = await getDBType();
- if (dbType === 'mysql5.7') {
- query.append(SQL`
- ON DUPLICATE KEY UPDATE
- query = VALUES(query),
- last_update = VALUES(last_update),
- last_validated = VALUES(last_validated)
- `);
- } else {
- query.append(SQL`
ON DUPLICATE KEY UPDATE
query = VALUE(query),
last_update = VALUE(last_update),
last_validated = VALUE(last_validated)
- `);
- }
+ `;
await dbQuery(query);
viewer.setSessionInfo({
lastValidated: time,
diff --git a/keyserver/src/fetchers/entry-fetchers.js b/keyserver/src/fetchers/entry-fetchers.js
--- a/keyserver/src/fetchers/entry-fetchers.js
+++ b/keyserver/src/fetchers/entry-fetchers.js
@@ -29,7 +29,6 @@
mergeAndConditions,
mergeOrConditions,
} from '../database/database';
-import { getDBType } from '../database/db-config';
import type { SQLStatementType } from '../database/types';
import type { Viewer } from '../session/viewer';
import { creationString } from '../utils/idempotent';
@@ -155,7 +154,7 @@
LEFT JOIN memberships m ON m.thread = t.id AND m.user = ${viewerID}
WHERE e.id = ${entryID}
`;
- const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+ const [result] = await dbQuery(query);
if (result.length === 0) {
return false;
@@ -173,8 +172,7 @@
return false;
}
- const permissions =
- dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions);
+ const permissions = JSON.parse(row.permissions);
return permissionLookup(permissions, permission);
}
diff --git a/keyserver/src/fetchers/report-fetchers.js b/keyserver/src/fetchers/report-fetchers.js
--- a/keyserver/src/fetchers/report-fetchers.js
+++ b/keyserver/src/fetchers/report-fetchers.js
@@ -11,7 +11,6 @@
import { values } from 'lib/utils/objects';
import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
import type { Viewer } from '../session/viewer';
async function fetchErrorReportInfos(
@@ -31,13 +30,13 @@
query.append(SQL`WHERE r.id < ${request.cursor} `);
}
query.append(SQL`ORDER BY r.id DESC`);
- const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+ const [result] = await dbQuery(query);
const reports = [];
const userInfos = {};
for (const row of result) {
const viewerID = row.user.toString();
- const report = dbType === 'mysql5.7' ? row.report : JSON.parse(row.report);
+ const report = JSON.parse(row.report);
let { platformDetails } = report;
if (!platformDetails) {
platformDetails = {
@@ -76,13 +75,13 @@
FROM reports
WHERE id = ${id} AND type = ${reportTypes.ERROR}
`;
- const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+ const [result] = await dbQuery(query);
if (result.length === 0) {
throw new ServerError('invalid_parameters');
}
const row = result[0];
- const report = dbType === 'mysql5.7' ? row.report : JSON.parse(row.report);
+ const report = JSON.parse(row.report);
const _persist = report.preloadedState._persist
? report.preloadedState._persist
: {};
diff --git a/keyserver/src/fetchers/role-fetchers.js b/keyserver/src/fetchers/role-fetchers.js
--- a/keyserver/src/fetchers/role-fetchers.js
+++ b/keyserver/src/fetchers/role-fetchers.js
@@ -3,7 +3,6 @@
import type { RoleInfo } from 'lib/types/thread-types';
import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
async function fetchRoles(threadID: string): Promise<RoleInfo[]> {
const query = SQL`
@@ -12,15 +11,14 @@
LEFT JOIN threads t ON t.id = r.thread
WHERE r.thread = ${threadID}
`;
- const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+ const [result] = await dbQuery(query);
const roles = [];
for (const row of result) {
roles.push({
id: row.id.toString(),
name: row.name,
- permissions:
- dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
+ permissions: JSON.parse(row.permissions),
isDefault: Boolean(row.is_default),
});
}
diff --git a/keyserver/src/fetchers/session-fetchers.js b/keyserver/src/fetchers/session-fetchers.js
--- a/keyserver/src/fetchers/session-fetchers.js
+++ b/keyserver/src/fetchers/session-fetchers.js
@@ -3,7 +3,6 @@
import type { CalendarQuery } from 'lib/types/entry-types';
import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
import type { Viewer } from '../session/viewer';
type CalendarSessionResult = {
@@ -21,13 +20,13 @@
WHERE m.thread = ${threadID} AND m.role > 0
AND s.query IS NOT NULL
`;
- const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+ const [result] = await dbQuery(query);
const filters = [];
for (const row of result) {
filters.push({
userID: row.user.toString(),
session: row.id.toString(),
- calendarQuery: dbType === 'mysql5.7' ? row.query : JSON.parse(row.query),
+ calendarQuery: JSON.parse(row.query),
});
}
return filters;
diff --git a/keyserver/src/fetchers/thread-fetchers.js b/keyserver/src/fetchers/thread-fetchers.js
--- a/keyserver/src/fetchers/thread-fetchers.js
+++ b/keyserver/src/fetchers/thread-fetchers.js
@@ -16,7 +16,6 @@
import { ServerError } from 'lib/utils/errors';
import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
import type { SQLStatementType } from '../database/types';
import type { Viewer } from '../session/viewer';
@@ -48,7 +47,7 @@
`
.append(whereClause)
.append(SQL` ORDER BY m.user ASC`);
- const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+ const [result] = await dbQuery(query);
const threadInfos = {};
for (const row of result) {
@@ -83,27 +82,21 @@
threadInfos[threadID].roles[role] = {
id: role,
name: row.role_name,
- permissions:
- dbType === 'mysql5.7'
- ? row.role_permissions
- : JSON.parse(row.role_permissions),
+ permissions: JSON.parse(row.role_permissions),
isDefault: role === row.default_role.toString(),
};
}
if (row.user) {
const userID = row.user.toString();
const allPermissions = getAllThreadPermissions(
- dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
+ JSON.parse(row.permissions),
threadID,
);
threadInfos[threadID].members.push({
id: userID,
permissions: allPermissions,
role: row.role ? role : null,
- subscription:
- dbType === 'mysql5.7'
- ? row.subscription
- : JSON.parse(row.subscription),
+ subscription: JSON.parse(row.subscription),
unread: row.role ? !!row.unread : null,
isSender: !!row.sender,
});
diff --git a/keyserver/src/fetchers/thread-permission-fetchers.js b/keyserver/src/fetchers/thread-permission-fetchers.js
--- a/keyserver/src/fetchers/thread-permission-fetchers.js
+++ b/keyserver/src/fetchers/thread-permission-fetchers.js
@@ -19,7 +19,6 @@
} from 'lib/types/thread-types';
import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
import type { Viewer } from '../session/viewer';
import { fetchThreadInfos } from './thread-fetchers';
import { fetchKnownUserInfos } from './user-fetchers';
@@ -39,13 +38,13 @@
FROM memberships
WHERE thread = ${threadID} AND user = ${viewerID}
`;
- const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+ const [result] = await dbQuery(query);
if (result.length === 0) {
return null;
}
const row = result[0];
- return dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions);
+ return JSON.parse(row.permissions);
}
function checkThreadPermission(
@@ -120,9 +119,8 @@
}
}
- const [[result], dbType, disabledThreadIDs] = await Promise.all([
+ const [[result], disabledThreadIDs] = await Promise.all([
dbQuery(query),
- getDBType(),
checkThreadsFrozen(viewer, permissionsToCheck, threadIDs),
]);
@@ -130,8 +128,7 @@
.map(row => ({
...row,
threadID: row.threadID.toString(),
- permissions:
- dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
+ permissions: JSON.parse(row.permissions),
}))
.filter(
row =>
@@ -243,13 +240,9 @@
FROM memberships
WHERE thread = ${params.parentThreadID} AND user IN (${allCandidates})
`;
- const [[result], dbType] = await Promise.all([
- dbQuery(parentPermissionsQuery),
- getDBType(),
- ]);
+ const [result] = await dbQuery(parentPermissionsQuery);
for (const row of result) {
- parentPermissions[row.user.toString()] =
- dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions);
+ parentPermissions[row.user.toString()] = JSON.parse(row.permissions);
}
return parentPermissions;
})();
diff --git a/keyserver/src/push/rescind.js b/keyserver/src/push/rescind.js
--- a/keyserver/src/push/rescind.js
+++ b/keyserver/src/push/rescind.js
@@ -9,7 +9,6 @@
import createIDs from '../creators/id-creator';
import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
import type { SQLStatementType } from '../database/types';
import { getAPNsNotificationTopic } from './providers';
import { apnPush, fcmPush } from './utils';
@@ -37,18 +36,14 @@
`);
fetchQuery.append(notifCondition);
fetchQuery.append(SQL` GROUP BY n.id, m.user`);
- const [[fetchResult], dbType] = await Promise.all([
- dbQuery(fetchQuery),
- getDBType(),
- ]);
+ const [fetchResult] = await dbQuery(fetchQuery);
const deliveryPromises = {};
const notifInfo = {};
const rescindedIDs = [];
const receivingDeviceTokens = [];
for (const row of fetchResult) {
- const rawDelivery =
- dbType === 'mysql5.7' ? row.delivery : JSON.parse(row.delivery);
+ const rawDelivery = JSON.parse(row.delivery);
const deliveries = Array.isArray(rawDelivery) ? rawDelivery : [rawDelivery];
const id = row.id.toString();
const threadID = row.thread.toString();
diff --git a/keyserver/src/push/send.js b/keyserver/src/push/send.js
--- a/keyserver/src/push/send.js
+++ b/keyserver/src/push/send.js
@@ -34,7 +34,6 @@
import createIDs from '../creators/id-creator';
import { createUpdates } from '../creators/update-creator';
import { dbQuery, SQL, mergeOrConditions } from '../database/database';
-import { getDBType } from '../database/db-config';
import type { CollapsableNotifInfo } from '../fetchers/message-fetchers';
import { fetchCollapsableNotifs } from '../fetchers/message-fetchers';
import { fetchServerThreadInfos } from '../fetchers/thread-fetchers';
@@ -770,26 +769,17 @@
SQL`AND device_token NOT IN (${excludeDeviceTokens}) `,
);
}
- const [
- unreadCounts,
- [deviceTokenResult],
- [dbID],
- dbType,
- ] = await Promise.all([
+ const [unreadCounts, [deviceTokenResult], [dbID]] = await Promise.all([
getUnreadCounts([userID]),
dbQuery(deviceTokenQuery),
createIDs('notifications', 1),
- getDBType(),
]);
const unreadCount = unreadCounts[userID];
const devices = deviceTokenResult.map(row => ({
deviceType: row.platform,
deviceToken: row.device_token,
- codeVersion:
- dbType === 'mysql5.7'
- ? row.versions?.codeVersion
- : JSON.parse(row.versions)?.codeVersion,
+ codeVersion: JSON.parse(row.versions)?.codeVersion,
}));
const byDeviceType = getDevicesByDeviceType(devices);
diff --git a/keyserver/src/session/cookies.js b/keyserver/src/session/cookies.js
--- a/keyserver/src/session/cookies.js
+++ b/keyserver/src/session/cookies.js
@@ -27,7 +27,6 @@
import createIDs from '../creators/id-creator';
import { createSession } from '../creators/session-creator';
import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
import { deleteCookie } from '../deleters/cookie-deleters';
import { handleAsyncPromise } from '../responders/handlers';
import { clearDeviceToken } from '../updaters/device-token-updaters';
@@ -90,9 +89,8 @@
FROM cookies
WHERE id = ${cookieID} AND user IS NOT NULL
`;
- const [[result], dbType, allSessionInfo] = await Promise.all([
+ const [[result], allSessionInfo] = await Promise.all([
dbQuery(query),
- getDBType(),
fetchSessionInfo(sessionParameterInfo, cookieID),
]);
if (result.length === 0) {
@@ -113,10 +111,7 @@
const cookieRow = result[0];
let platformDetails = null;
if (cookieRow.versions) {
- const versions =
- dbType === 'mysql5.7'
- ? cookieRow.versions
- : JSON.parse(cookieRow.versions);
+ const versions = JSON.parse(cookieRow.versions);
platformDetails = {
platform: cookieRow.platform,
codeVersion: versions.codeVersion,
@@ -182,9 +177,8 @@
FROM cookies
WHERE id = ${cookieID} AND user IS NULL
`;
- const [[result], dbType, allSessionInfo] = await Promise.all([
+ const [[result], allSessionInfo] = await Promise.all([
dbQuery(query),
- getDBType(),
fetchSessionInfo(sessionParameterInfo, cookieID),
]);
if (result.length === 0) {
@@ -205,10 +199,7 @@
const cookieRow = result[0];
let platformDetails = null;
if (cookieRow.platform && cookieRow.versions) {
- const versions =
- dbType === 'mysql5.7'
- ? cookieRow.versions
- : JSON.parse(cookieRow.versions);
+ const versions = JSON.parse(cookieRow.versions);
platformDetails = {
platform: cookieRow.platform,
codeVersion: versions.codeVersion,
@@ -272,7 +263,7 @@
FROM sessions
WHERE id = ${session} AND cookie = ${cookieID}
`;
- const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+ const [result] = await dbQuery(query);
if (result.length === 0) {
return null;
}
@@ -280,8 +271,7 @@
sessionID,
lastValidated: result[0].last_validated,
lastUpdate: result[0].last_update,
- calendarQuery:
- dbType === 'mysql5.7' ? result[0].query : JSON.parse(result[0].query),
+ calendarQuery: JSON.parse(result[0].query),
};
}
diff --git a/keyserver/src/updaters/account-updaters.js b/keyserver/src/updaters/account-updaters.js
--- a/keyserver/src/updaters/account-updaters.js
+++ b/keyserver/src/updaters/account-updaters.js
@@ -14,7 +14,6 @@
import { createUpdates } from '../creators/update-creator';
import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
import type { Viewer } from '../session/viewer';
async function accountUpdater(
@@ -98,18 +97,8 @@
const createOrUpdateSettingsQuery = SQL`
INSERT INTO settings (user, name, data)
VALUES ${[[viewer.id, request.name, request.data]]}
- `;
- const dbType = await getDBType();
- if (dbType === 'mysql5.7') {
- createOrUpdateSettingsQuery.append(SQL`
- ON DUPLICATE KEY UPDATE data = VALUES(data)
- `);
- } else {
- createOrUpdateSettingsQuery.append(SQL`
ON DUPLICATE KEY UPDATE data = VALUE(data)
- `);
- }
-
+ `;
await dbQuery(createOrUpdateSettingsQuery);
}
diff --git a/keyserver/src/updaters/activity-updaters.js b/keyserver/src/updaters/activity-updaters.js
--- a/keyserver/src/updaters/activity-updaters.js
+++ b/keyserver/src/updaters/activity-updaters.js
@@ -18,7 +18,6 @@
import { createUpdates } from '../creators/update-creator';
import { dbQuery, SQL, mergeOrConditions } from '../database/database';
-import { getDBType } from '../database/db-config';
import type { SQLStatementType } from '../database/types';
import { deleteActivityForViewerSession } from '../deleters/activity-deleters';
import {
@@ -272,17 +271,8 @@
const query = SQL`
INSERT INTO focused (user, session, thread, time)
VALUES ${focusedInsertRows}
- `;
- const dbType = await getDBType();
- if (dbType === 'mysql5.7') {
- query.append(SQL`
- ON DUPLICATE KEY UPDATE time = VALUES(time)
- `);
- } else {
- query.append(SQL`
ON DUPLICATE KEY UPDATE time = VALUE(time)
- `);
- }
+ `;
await dbQuery(query);
}
diff --git a/keyserver/src/updaters/relationship-updaters.js b/keyserver/src/updaters/relationship-updaters.js
--- a/keyserver/src/updaters/relationship-updaters.js
+++ b/keyserver/src/updaters/relationship-updaters.js
@@ -22,7 +22,6 @@
import { createThread } from '../creators/thread-creator';
import { createUpdates } from '../creators/update-creator';
import { dbQuery, SQL, mergeOrConditions } from '../database/database';
-import { getDBType } from '../database/db-config';
import { fetchFriendRequestRelationshipOperations } from '../fetchers/relationship-fetchers';
import { fetchUserInfos } from '../fetchers/user-fetchers';
import type { Viewer } from '../session/viewer';
@@ -38,10 +37,7 @@
}
const uniqueUserIDs = [...new Set(request.userIDs)];
- const [users, dbType] = await Promise.all([
- fetchUserInfos(uniqueUserIDs),
- getDBType(),
- ]);
+ const users = await fetchUserInfos(uniqueUserIDs);
let errors = {};
const userIDs: string[] = [];
@@ -125,16 +121,8 @@
const directedInsertQuery = SQL`
INSERT INTO relationships_directed (user1, user2, status)
VALUES ${directedInsertRows}
- `;
- if (dbType === 'mysql5.7') {
- directedInsertQuery.append(SQL`
- ON DUPLICATE KEY UPDATE status = VALUES(status)
- `);
- } else {
- directedInsertQuery.append(SQL`
ON DUPLICATE KEY UPDATE status = VALUE(status)
- `);
- }
+ `;
promises.push(dbQuery(directedInsertQuery));
}
if (directedDeleteIDs.length) {
@@ -186,16 +174,8 @@
const directedInsertQuery = SQL`
INSERT INTO relationships_directed (user1, user2, status)
VALUES ${directedRows}
- `;
- if (dbType === 'mysql5.7') {
- directedInsertQuery.append(SQL`
- ON DUPLICATE KEY UPDATE status = VALUES(status)
- `);
- } else {
- directedInsertQuery.append(SQL`
ON DUPLICATE KEY UPDATE status = VALUE(status)
- `);
- }
+ `;
const directedDeleteQuery = SQL`
DELETE FROM relationships_directed
WHERE status = ${directedStatus.PENDING_FRIEND} AND
@@ -262,24 +242,12 @@
INSERT INTO relationships_undirected (user1, user2, status)
VALUES ${rows}
`;
-
- const dbType = await getDBType();
if (greatest) {
- if (dbType === 'mysql5.7') {
- query.append(
- SQL`ON DUPLICATE KEY UPDATE status = GREATEST(status, VALUES(status))`,
- );
- } else {
- query.append(
- SQL`ON DUPLICATE KEY UPDATE status = GREATEST(status, VALUE(status))`,
- );
- }
+ query.append(
+ SQL`ON DUPLICATE KEY UPDATE status = GREATEST(status, VALUE(status))`,
+ );
} else {
- if (dbType === 'mysql5.7') {
- query.append(SQL`ON DUPLICATE KEY UPDATE status = VALUES(status)`);
- } else {
- query.append(SQL`ON DUPLICATE KEY UPDATE status = VALUE(status)`);
- }
+ query.append(SQL`ON DUPLICATE KEY UPDATE status = VALUE(status)`);
}
await dbQuery(query);
}
@@ -310,10 +278,7 @@
}
selectQuery.append(mergeOrConditions(conditions));
- const [[result], dbType] = await Promise.all([
- dbQuery(selectQuery),
- getDBType(),
- ]);
+ const [result] = await dbQuery(selectQuery);
const existingStatuses = new Map();
for (const row of result) {
existingStatuses.set(`${row.user1}|${row.user2}`, row.status);
@@ -332,16 +297,8 @@
const insertQuery = SQL`
INSERT INTO relationships_undirected (user1, user2, status)
VALUES ${insertRows}
- `;
- if (dbType === 'mysql5.7') {
- insertQuery.append(SQL`
- ON DUPLICATE KEY UPDATE status = GREATEST(status, VALUES(status))
- `);
- } else {
- insertQuery.append(SQL`
ON DUPLICATE KEY UPDATE status = GREATEST(status, VALUE(status))
- `);
- }
+ `;
await dbQuery(insertQuery);
return updateDatasForUserPairs(
diff --git a/keyserver/src/updaters/thread-permission-updaters.js b/keyserver/src/updaters/thread-permission-updaters.js
--- a/keyserver/src/updaters/thread-permission-updaters.js
+++ b/keyserver/src/updaters/thread-permission-updaters.js
@@ -30,7 +30,6 @@
type UpdatesForCurrentSession,
} from '../creators/update-creator';
import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
import {
fetchServerThreadInfos,
rawThreadInfosFromServerThreadInfos,
@@ -117,13 +116,11 @@
WHERE t.id = ${threadID} AND cm.user IN (${userIDs})
`;
const [
- dbType,
[membershipResults],
[parentMembershipResults],
containingMembershipResults,
roleThreadResult,
] = await Promise.all([
- getDBType(),
dbQuery(membershipQuery),
dbQuery(parentMembershipQuery),
(async () => {
@@ -151,12 +148,8 @@
const userID = row.user.toString();
existingMembershipInfo.set(userID, {
oldRole: row.role.toString(),
- oldPermissions:
- dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
- oldPermissionsForChildren:
- dbType === 'mysql5.7'
- ? row.permissions_for_children
- : JSON.parse(row.permissions_for_children),
+ oldPermissions: JSON.parse(row.permissions),
+ oldPermissionsForChildren: JSON.parse(row.permissions_for_children),
});
}
@@ -167,10 +160,7 @@
continue;
}
ancestorMembershipInfo.set(userID, {
- permissionsFromParent:
- dbType === 'mysql5.7'
- ? row.permissions_from_parent
- : JSON.parse(row.permissions_from_parent),
+ permissionsFromParent: JSON.parse(row.permissions_from_parent),
});
}
for (const row of containingMembershipResults) {
@@ -362,7 +352,7 @@
INNER JOIN roles r ON r.thread = t.id AND r.id = ${role}
WHERE t.id = ${threadID}
`;
- const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+ const [result] = await dbQuery(query);
if (result.length === 0) {
throw new ServerError('internal_error');
}
@@ -375,8 +365,7 @@
? row.parent_thread_id.toString()
: null,
hasContainingThreadID: row.containing_thread_id !== null,
- rolePermissions:
- dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
+ rolePermissions: JSON.parse(row.permissions),
};
} else {
const query = SQL`
@@ -386,7 +375,7 @@
INNER JOIN roles r ON r.thread = t.id AND r.id = t.default_role
WHERE t.id = ${threadID}
`;
- const [[result], dbType] = await Promise.all([dbQuery(query), getDBType()]);
+ const [result] = await dbQuery(query);
if (result.length === 0) {
throw new ServerError('internal_error');
}
@@ -399,8 +388,7 @@
? row.parent_thread_id.toString()
: null,
hasContainingThreadID: row.containing_thread_id !== null,
- rolePermissions:
- dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
+ rolePermissions: JSON.parse(row.permissions),
};
}
}
@@ -585,30 +573,27 @@
const threadIDs = ancestors.map(ancestor => ancestor.threadID);
const rows = [];
- const queriesPromise = (async () => {
- while (threadIDs.length > 0) {
- const batch = threadIDs.splice(0, fetchDescendantsBatchSize);
- const query = SQL`
- SELECT t.id, m.user, t.type, t.depth, t.parent_thread_id,
- t.containing_thread_id, r.permissions AS role_permissions, m.permissions,
- m.permissions_for_children, m.role,
- pm.permissions_for_children AS permissions_from_parent,
- cm.role AS containing_role
- FROM threads t
- INNER JOIN memberships m ON m.thread = t.id
- LEFT JOIN memberships pm
- ON pm.thread = t.parent_thread_id AND pm.user = m.user
- LEFT JOIN memberships cm
- ON cm.thread = t.containing_thread_id AND cm.user = m.user
- LEFT JOIN roles r ON r.id = m.role
- WHERE t.parent_thread_id IN (${batch})
- OR t.containing_thread_id IN (${batch})
- `;
- const [results] = await dbQuery(query);
- pushAll(rows, results);
- }
- })();
- const [dbType] = await Promise.all([getDBType(), queriesPromise]);
+ while (threadIDs.length > 0) {
+ const batch = threadIDs.splice(0, fetchDescendantsBatchSize);
+ const query = SQL`
+ SELECT t.id, m.user, t.type, t.depth, t.parent_thread_id,
+ t.containing_thread_id, r.permissions AS role_permissions, m.permissions,
+ m.permissions_for_children, m.role,
+ pm.permissions_for_children AS permissions_from_parent,
+ cm.role AS containing_role
+ FROM threads t
+ INNER JOIN memberships m ON m.thread = t.id
+ LEFT JOIN memberships pm
+ ON pm.thread = t.parent_thread_id AND pm.user = m.user
+ LEFT JOIN memberships cm
+ ON cm.thread = t.containing_thread_id AND cm.user = m.user
+ LEFT JOIN roles r ON r.id = m.role
+ WHERE t.parent_thread_id IN (${batch})
+ OR t.containing_thread_id IN (${batch})
+ `;
+ const [results] = await dbQuery(query);
+ pushAll(rows, results);
+ }
const descendantThreadInfos: Map<string, DescendantInfo> = new Map();
for (const row of rows) {
@@ -631,20 +616,10 @@
const userID = row.user.toString();
descendantThreadInfo.users.set(userID, {
curRole: row.role.toString(),
- curRolePermissions:
- dbType === 'mysql5.7'
- ? row.role_permissions
- : JSON.parse(row.role_permissions),
- curPermissions:
- dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
- curPermissionsForChildren:
- dbType === 'mysql5.7'
- ? row.permissions_for_children
- : JSON.parse(row.permissions_for_children),
- curPermissionsFromParent:
- dbType === 'mysql5.7'
- ? row.permissions_from_parent
- : JSON.parse(row.permissions_from_parent),
+ curRolePermissions: JSON.parse(row.role_permissions),
+ curPermissions: JSON.parse(row.permissions),
+ curPermissionsForChildren: JSON.parse(row.permissions_for_children),
+ curPermissionsFromParent: JSON.parse(row.permissions_from_parent),
curMemberOfContainingThread: row.containing_role > 0,
});
}
@@ -749,12 +724,10 @@
WHERE t.id = ${threadID}
`;
const [
- dbType,
[threadResults],
[membershipResults],
[parentMembershipResults],
] = await Promise.all([
- getDBType(),
dbQuery(threadQuery),
dbQuery(membershipQuery),
dbQuery(parentMembershipQuery),
@@ -777,16 +750,9 @@
const userID = row.user.toString();
membershipInfo.set(userID, {
role: row.role.toString(),
- permissions:
- dbType === 'mysql5.7' ? row.permissions : JSON.parse(row.permissions),
- permissionsForChildren:
- dbType === 'mysql5.7'
- ? row.permissions_for_children
- : JSON.parse(row.permissions_for_children),
- rolePermissions:
- dbType === 'mysql5.7'
- ? row.role_permissions
- : JSON.parse(row.role_permissions),
+ permissions: JSON.parse(row.permissions),
+ permissionsForChildren: JSON.parse(row.permissions_for_children),
+ rolePermissions: JSON.parse(row.role_permissions),
memberOfContainingThread: !!(
row.containing_role && row.containing_role > 0
),
@@ -794,10 +760,7 @@
}
for (const row of parentMembershipResults) {
const userID = row.user.toString();
- const permissionsFromParent =
- dbType === 'mysql5.7'
- ? row.permissions_from_parent
- : JSON.parse(row.permissions_from_parent);
+ const permissionsFromParent = JSON.parse(row.permissions_from_parent);
const membership = membershipInfo.get(userID);
if (membership) {
membership.permissionsFromParent = permissionsFromParent;
@@ -955,29 +918,12 @@
// column and this is an INSERT, but we don't want to require people to have
// to know the current `subscription` when they're just using this function to
// update the permissions of an existing membership row.
- const dbType = await getDBType();
while (insertRows.length > 0) {
const batch = insertRows.splice(0, membershipInsertBatchSize);
const query = SQL`
INSERT INTO memberships (user, thread, role, creation_time, subscription,
permissions, permissions_for_children, last_message, last_read_message)
VALUES ${batch}
- `;
- if (dbType === 'mysql5.7') {
- query.append(SQL`
- ON DUPLICATE KEY UPDATE
- subscription = IF(
- (role <= 0 AND VALUES(role) > 0)
- OR (role > 0 AND VALUES(role) <= 0),
- VALUES(subscription),
- subscription
- ),
- role = VALUES(role),
- permissions = VALUES(permissions),
- permissions_for_children = VALUES(permissions_for_children)
- `);
- } else {
- query.append(SQL`
ON DUPLICATE KEY UPDATE
subscription = IF(
(role <= 0 AND VALUE(role) > 0)
@@ -988,8 +934,7 @@
role = VALUE(role),
permissions = VALUE(permissions),
permissions_for_children = VALUE(permissions_for_children)
- `);
- }
+ `;
await dbQuery(query);
}
}
diff --git a/keyserver/src/updaters/thread-updaters.js b/keyserver/src/updaters/thread-updaters.js
--- a/keyserver/src/updaters/thread-updaters.js
+++ b/keyserver/src/updaters/thread-updaters.js
@@ -31,7 +31,6 @@
import { getRolePermissionBlobs } from '../creators/role-creator';
import { createUpdates } from '../creators/update-creator';
import { dbQuery, SQL } from '../database/database';
-import { getDBType } from '../database/db-config';
import { fetchEntryInfos } from '../fetchers/entry-fetchers';
import { fetchMessageInfos } from '../fetchers/message-fetchers';
import {
@@ -532,15 +531,9 @@
LEFT JOIN roles r ON r.id = t.default_role
WHERE t.id = ${request.threadID}
`;
- const [[result], dbType] = await Promise.all([
- dbQuery(rolePermissionsQuery),
- getDBType(),
- ]);
+ const [result] = await dbQuery(rolePermissionsQuery);
if (result.length > 0) {
- rolePermissions =
- dbType === 'mysql5.7'
- ? result[0].permissions
- : JSON.parse(result[0].permissions);
+ rolePermissions = JSON.parse(result[0].permissions);
}
}
if (!rolePermissions) {
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Nov 24, 5:41 AM (20 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2574164
Default Alt Text
D4835.id15655.diff (32 KB)
Attached To
Mode
D4835: [keyserver] Get rid of all MySQL-specific query logic
Attached
Detach File
Event Timeline
Log In to Comment