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,
|
SearchableUser,
|
||||||
UserSearchFilters,
|
UserSearchFilters,
|
||||||
} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
} from '@fluxer/schema/src/contracts/search/SearchDocumentTypes';
|
||||||
|
import {snowflakeToDate} from '@fluxer/snowflake/src/Snowflake';
|
||||||
import type {MeilisearchClient} from './MeilisearchClient';
|
import type {MeilisearchClient} from './MeilisearchClient';
|
||||||
import {
|
import {
|
||||||
compactMeiliFilters,
|
compactMeiliFilters,
|
||||||
@@ -45,6 +46,10 @@ interface MeilisearchAdapterOptions {
|
|||||||
client: MeilisearchClient;
|
client: MeilisearchClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function snowflakeSeconds(snowflake: string): number {
|
||||||
|
return Math.floor(snowflakeToDate(BigInt(snowflake)).getTime() / 1000);
|
||||||
|
}
|
||||||
|
|
||||||
function buildMessageFilters(filters: MessageSearchFilters): Array<MeilisearchFilter | undefined> {
|
function buildMessageFilters(filters: MessageSearchFilters): Array<MeilisearchFilter | undefined> {
|
||||||
const clauses: Array<MeilisearchFilter | undefined> = [];
|
const clauses: Array<MeilisearchFilter | undefined> = [];
|
||||||
if (filters.guildId) clauses.push(meiliTermFilter('guildId', filters.guildId));
|
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) {
|
if (filters.excludeAttachmentExtensions && filters.excludeAttachmentExtensions.length > 0) {
|
||||||
clauses.push(...meiliExcludeAny('attachmentExtensions', filters.excludeAttachmentExtensions));
|
clauses.push(...meiliExcludeAny('attachmentExtensions', filters.excludeAttachmentExtensions));
|
||||||
}
|
}
|
||||||
if (filters.maxId != null) clauses.push(meiliRangeFilter('id', {lt: filters.maxId}));
|
if (filters.maxId != null) clauses.push(meiliRangeFilter('createdAt', {lt: snowflakeSeconds(filters.maxId)}));
|
||||||
if (filters.minId != null) clauses.push(meiliRangeFilter('id', {gt: filters.minId}));
|
if (filters.minId != null) clauses.push(meiliRangeFilter('createdAt', {gt: snowflakeSeconds(filters.minId)}));
|
||||||
return compactMeiliFilters(clauses);
|
return compactMeiliFilters(clauses);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ export const MEILISEARCH_INDEX_DEFINITIONS: Record<FluxerSearchIndexName, Meilis
|
|||||||
searchableAttributes: ['content', 'embedContent'],
|
searchableAttributes: ['content', 'embedContent'],
|
||||||
filterableAttributes: [
|
filterableAttributes: [
|
||||||
'id',
|
'id',
|
||||||
|
'createdAt',
|
||||||
'channelId',
|
'channelId',
|
||||||
'guildId',
|
'guildId',
|
||||||
'authorId',
|
'authorId',
|
||||||
|
|||||||
Reference in new issue
Block a user