mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 21:15:32 +09:00
fix(search): filter message dates on createdAt instead of the id string (#1656)
This commit is contained in:
1 parent
578fd61d93
commit
fb718e7e5b
2 files changed
+8
-2
No files matched your search
@@ -14,6 +14,7 @@ import type {
|
||||
SearchableUser,
|
||||
UserSearchFilters,
|
||||
} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||
import {snowflakeToDate} from '@fluxer/snowflake/src/Snowflake';
|
||||
import type {MeilisearchClient} from './MeilisearchClient';
|
||||
import {
|
||||
compactMeiliFilters,
|
||||
@@ -45,6 +46,10 @@ interface MeilisearchAdapterOptions {
|
||||
client: MeilisearchClient;
|
||||
}
|
||||
|
||||
function snowflakeSeconds(snowflake: string): number {
|
||||
return Math.floor(snowflakeToDate(BigInt(snowflake)).getTime() / 1000);
|
||||
}
|
||||
|
||||
function buildMessageFilters(filters: MessageSearchFilters): Array<MeilisearchFilter | undefined> {
|
||||
const clauses: Array<MeilisearchFilter | undefined> = [];
|
||||
if (filters.guildId) clauses.push(meiliTermFilter('guildId', filters.guildId));
|
||||
@@ -109,8 +114,8 @@ function buildMessageFilters(filters: MessageSearchFilters): Array<MeilisearchFi
|
||||
if (filters.excludeAttachmentExtensions && filters.excludeAttachmentExtensions.length > 0) {
|
||||
clauses.push(...meiliExcludeAny('attachmentExtensions', filters.excludeAttachmentExtensions));
|
||||
}
|
||||
if (filters.maxId != null) clauses.push(meiliRangeFilter('id', {lt: filters.maxId}));
|
||||
if (filters.minId != null) clauses.push(meiliRangeFilter('id', {gt: filters.minId}));
|
||||
if (filters.maxId != null) clauses.push(meiliRangeFilter('createdAt', {lt: snowflakeSeconds(filters.maxId)}));
|
||||
if (filters.minId != null) clauses.push(meiliRangeFilter('createdAt', {gt: snowflakeSeconds(filters.minId)}));
|
||||
return compactMeiliFilters(clauses);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ export const MEILISEARCH_INDEX_DEFINITIONS: Record<FluxerSearchIndexName, Meilis
|
||||
searchableAttributes: ['content', 'embedContent'],
|
||||
filterableAttributes: [
|
||||
'id',
|
||||
'createdAt',
|
||||
'channelId',
|
||||
'guildId',
|
||||
'authorId',
|
||||
|
||||
Reference in new issue
Block a user