Add message schema version section to internal settings

This commit is contained in:
trevor-signal 2025-06-02 17:20:06 -04:00 committed by GitHub
commit 46bf933e72
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 197 additions and 9 deletions

View file

@ -186,6 +186,7 @@ import type {
MessageAttachmentDBType,
MessageTypeUnhydrated,
ServerMessageSearchResultType,
MessageCountBySchemaVersionType,
} from './Interface';
import {
AttachmentDownloadSource,
@ -436,6 +437,8 @@ export const DataReader: ServerReadableInterface = {
getBackupCdnObjectMetadata,
getSizeOfPendingBackupAttachmentDownloadJobs,
getAttachmentReferencesForMessages,
getMessageCountBySchemaVersion,
getMessageSampleForSchemaVersion,
// Server-only
getKnownMessageAttachments,
@ -8463,6 +8466,37 @@ function getUnreadEditedMessagesAndMarkRead(
})();
}
function getMessageCountBySchemaVersion(
db: ReadableDB
): MessageCountBySchemaVersionType {
const [query, params] = sql`
SELECT schemaVersion, COUNT(1) as count from messages
GROUP BY schemaVersion;
`;
const rows = db
.prepare(query)
.all<{ schemaVersion: number; count: number }>(params);
return rows.sort((a, b) => a.schemaVersion - b.schemaVersion);
}
function getMessageSampleForSchemaVersion(
db: ReadableDB,
version: number
): Array<MessageAttributesType> {
return db.transaction(() => {
const [query, params] = sql`
SELECT * from messages
WHERE schemaVersion = ${version}
ORDER BY RANDOM()
LIMIT 2;
`;
const rows = db.prepare(query).all<MessageTypeUnhydrated>(params);
return hydrateMessages(db, rows);
})();
}
function disableMessageInsertTriggers(db: WritableDB): void {
db.transaction(() => {
createOrUpdateItem(db, {