summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/SearchService.ts
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-02-03 18:27:09 -0500
committerHazelnoot <acomputerdog@gmail.com>2025-02-03 18:27:09 -0500
commit47bf96988cbffabf55999e193337c840602a48d8 (patch)
treebef066f9eedc67bee2fa5e37691c55a826e5cb87 /packages/backend/src/core/SearchService.ts
parentremove unused import in FileInfoService.ts (diff)
downloadsharkey-47bf96988cbffabf55999e193337c840602a48d8.tar.gz
sharkey-47bf96988cbffabf55999e193337c840602a48d8.tar.bz2
sharkey-47bf96988cbffabf55999e193337c840602a48d8.zip
fix meilisearch merge
Diffstat (limited to 'packages/backend/src/core/SearchService.ts')
-rw-r--r--packages/backend/src/core/SearchService.ts42
1 files 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),