summaryrefslogtreecommitdiff
path: root/packages/backend/src/server/api/endpoints/notes
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-05-05 08:52:14 +0900
committerGitHub <noreply@github.com>2023-05-05 08:52:14 +0900
commit5c08f2b93b4a9f5bac0718d5b202b83314f4cb7c (patch)
treefdcb2c93859c85b3541f3571974f330f836641ec /packages/backend/src/server/api/endpoints/notes
parentUpdate CHANGELOG.md (diff)
downloadsharkey-5c08f2b93b4a9f5bac0718d5b202b83314f4cb7c.tar.gz
sharkey-5c08f2b93b4a9f5bac0718d5b202b83314f4cb7c.tar.bz2
sharkey-5c08f2b93b4a9f5bac0718d5b202b83314f4cb7c.zip
feat: Introduce Meilisearch (#10755)
* wip * wip * Update SearchService.ts * Update SearchService.ts * wip * wip * Update SearchService.ts * Update CHANGELOG.md * wip * Update SearchService.ts * Update docker-compose.yml.example
Diffstat (limited to 'packages/backend/src/server/api/endpoints/notes')
-rw-r--r--packages/backend/src/server/api/endpoints/notes/search.ts37
1 files changed, 10 insertions, 27 deletions
diff --git a/packages/backend/src/server/api/endpoints/notes/search.ts b/packages/backend/src/server/api/endpoints/notes/search.ts
index fb5abd917f..990ba526d9 100644
--- a/packages/backend/src/server/api/endpoints/notes/search.ts
+++ b/packages/backend/src/server/api/endpoints/notes/search.ts
@@ -1,11 +1,10 @@
import { Inject, Injectable } from '@nestjs/common';
import type { NotesRepository } from '@/models/index.js';
import { Endpoint } from '@/server/api/endpoint-base.js';
-import { QueryService } from '@/core/QueryService.js';
+import { SearchService } from '@/core/SearchService.js';
import { NoteEntityService } from '@/core/entities/NoteEntityService.js';
import type { Config } from '@/config.js';
import { DI } from '@/di-symbols.js';
-import { sqlLikeEscape } from '@/misc/sql-like-escape.js';
import { RoleService } from '@/core/RoleService.js';
import { ApiError } from '../../error.js';
@@ -61,11 +60,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
@Inject(DI.config)
private config: Config,
- @Inject(DI.notesRepository)
- private notesRepository: NotesRepository,
-
private noteEntityService: NoteEntityService,
- private queryService: QueryService,
+ private searchService: SearchService,
private roleService: RoleService,
) {
super(meta, paramDef, async (ps, me) => {
@@ -74,27 +70,14 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
throw new ApiError(meta.errors.unavailable);
}
- const query = this.queryService.makePaginationQuery(this.notesRepository.createQueryBuilder('note'), ps.sinceId, ps.untilId);
-
- if (ps.userId) {
- query.andWhere('note.userId = :userId', { userId: ps.userId });
- } else if (ps.channelId) {
- query.andWhere('note.channelId = :channelId', { channelId: ps.channelId });
- }
-
- query
- .andWhere('note.text ILIKE :q', { q: `%${ sqlLikeEscape(ps.query) }%` })
- .innerJoinAndSelect('note.user', 'user')
- .leftJoinAndSelect('note.reply', 'reply')
- .leftJoinAndSelect('note.renote', 'renote')
- .leftJoinAndSelect('reply.user', 'replyUser')
- .leftJoinAndSelect('renote.user', 'renoteUser');
-
- this.queryService.generateVisibilityQuery(query, me);
- if (me) this.queryService.generateMutedUserQuery(query, me);
- if (me) this.queryService.generateBlockedUserQuery(query, me);
-
- const notes = await query.take(ps.limit).getMany();
+ const notes = await this.searchService.searchNote(ps.query, me, {
+ userId: ps.userId,
+ channelId: ps.channelId,
+ }, {
+ untilId: ps.untilId,
+ sinceId: ps.sinceId,
+ limit: ps.limit,
+ });
return await this.noteEntityService.packMany(notes, me);
});