From 47bf96988cbffabf55999e193337c840602a48d8 Mon Sep 17 00:00:00 2001 From: Hazelnoot Date: Mon, 3 Feb 2025 18:27:09 -0500 Subject: [PATCH] fix meilisearch merge --- packages/backend/src/core/SearchService.ts | 42 ++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/core/SearchService.ts b/packages/backend/src/core/SearchService.ts index 431cc0234e..35c67400ba 100644 --- a/packages/backend/src/core/SearchService.ts +++ b/packages/backend/src/core/SearchService.ts @@ -175,7 +175,6 @@ export class SearchService { if (!['home', 'public'].includes(note.visibility)) return; await this.meilisearchNoteIndex?.deleteDocument(note.id); - await this.meilisearchNoteIndex?.deleteDocument(note.id); } @bindThis @@ -296,8 +295,47 @@ export class SearchService { } } + if (opts.filetype) { + if (opts.filetype === 'image') { + filter.qs.push({ op: 'or', qs: [ + { op: '=', k: 'attachedFileTypes', v: 'image/webp' }, + { op: '=', k: 'attachedFileTypes', v: 'image/png' }, + { op: '=', k: 'attachedFileTypes', v: 'image/jpeg' }, + { op: '=', k: 'attachedFileTypes', v: 'image/avif' }, + { op: '=', k: 'attachedFileTypes', v: 'image/apng' }, + { op: '=', k: 'attachedFileTypes', v: 'image/gif' }, + ] }); + } else if (opts.filetype === 'video') { + filter.qs.push({ op: 'or', qs: [ + { op: '=', k: 'attachedFileTypes', v: 'video/mp4' }, + { op: '=', k: 'attachedFileTypes', v: 'video/webm' }, + { op: '=', k: 'attachedFileTypes', v: 'video/mpeg' }, + { op: '=', k: 'attachedFileTypes', v: 'video/x-m4v' }, + ] }); + } else if (opts.filetype === 'audio') { + filter.qs.push({ op: 'or', qs: [ + { op: '=', k: 'attachedFileTypes', v: 'audio/mpeg' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/flac' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/wav' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/aac' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/webm' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/opus' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/ogg' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/x-m4a' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/mod' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/s3m' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/xm' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/it' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/x-mod' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/x-s3m' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/x-xm' }, + { op: '=', k: 'attachedFileTypes', v: 'audio/x-it' }, + ] }); + } + } + const res = await this.meilisearchNoteIndex.search(q, { - sort: ['createdAt:desc'], + sort: [`createdAt:${opts.order ? opts.order : 'desc'}`], matchingStrategy: 'all', attributesToRetrieve: ['id', 'createdAt'], filter: compileQuery(filter),