Skip to content

Commit

Permalink
Further optimize getConversationMessageStats
Browse files Browse the repository at this point in the history
  • Loading branch information
indutny-signal committed Jan 18, 2023
1 parent 1c22fe6 commit efc54e4
Showing 1 changed file with 24 additions and 15 deletions.
39 changes: 24 additions & 15 deletions ts/sql/Server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2735,35 +2735,44 @@ function getLastConversationPreview({
conversationId: string;
includeStoryReplies: boolean;
}): MessageType | undefined {
type Row = Readonly<{
json: string;
received_at: number;
sent_at: number;
}>;

const db = getInstance();
const row = prepare(
db,
`
SELECT json FROM messages

const queryTemplate = (extraClause: string): string => {
return `
SELECT json, received_at, sent_at FROM messages
INDEXED BY messages_preview
WHERE
conversationId IS $conversationId AND
shouldAffectPreview IS 1 AND
isGroupLeaveEventFromOther IS 0 AND
${includeStoryReplies ? '' : 'storyId IS NULL AND'}
(
expiresAt IS NULL
OR
expiresAt > $now
)
${extraClause}
ORDER BY received_at DESC, sent_at DESC
LIMIT 1
`;
};

const row: Row | undefined = prepare(
db,
`
SELECT * FROM (${queryTemplate('expiresAt IS NULL')})
UNION ALL
SELECT * FROM (${queryTemplate('expiresAt > $now')})
ORDER BY received_at DESC, sent_at DESC
LIMIT 1;
`
`
).get({
conversationId,
now: Date.now(),
});

if (!row) {
return undefined;
}

return jsonToObject(row.json);
return row ? jsonToObject(row.json) : undefined;
}

async function getConversationMessageStats({
Expand Down

0 comments on commit efc54e4

Please sign in to comment.