summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/AntennaService.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-10-09 20:31:39 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-10-09 20:31:39 +0900
commit0bb0c329087149355a9968e7c142b9ecdf1023ec (patch)
treefbbd787c1242c7c8e598b8fc77f81398c4c32f1c /packages/backend/src/core/AntennaService.ts
parent2023.10.0-beta.12 (diff)
downloadsharkey-0bb0c329087149355a9968e7c142b9ecdf1023ec.tar.gz
sharkey-0bb0c329087149355a9968e7c142b9ecdf1023ec.tar.bz2
sharkey-0bb0c329087149355a9968e7c142b9ecdf1023ec.zip
enhance(backend): RedisへのTLの構築をListで行うように
#11404
Diffstat (limited to 'packages/backend/src/core/AntennaService.ts')
-rw-r--r--packages/backend/src/core/AntennaService.ts12
1 files changed, 3 insertions, 9 deletions
diff --git a/packages/backend/src/core/AntennaService.ts b/packages/backend/src/core/AntennaService.ts
index b64120772c..ca7624b1d4 100644
--- a/packages/backend/src/core/AntennaService.ts
+++ b/packages/backend/src/core/AntennaService.ts
@@ -16,6 +16,7 @@ import type { AntennasRepository, UserListMembershipsRepository } from '@/models
import { UtilityService } from '@/core/UtilityService.js';
import { bindThis } from '@/decorators.js';
import type { GlobalEvents } from '@/core/GlobalEventService.js';
+import { RedisTimelineService } from '@/core/RedisTimelineService.js';
import type { OnApplicationShutdown } from '@nestjs/common';
@Injectable()
@@ -38,6 +39,7 @@ export class AntennaService implements OnApplicationShutdown {
private utilityService: UtilityService,
private globalEventService: GlobalEventService,
+ private redisTimelineService: RedisTimelineService,
) {
this.antennasFetched = false;
this.antennas = [];
@@ -77,9 +79,6 @@ export class AntennaService implements OnApplicationShutdown {
@bindThis
public async addNoteToAntennas(note: MiNote, noteUser: { id: MiUser['id']; username: string; host: string | null; }): Promise<void> {
- // リモートから遅れて届いた(もしくは後から追加された)投稿日時が古い投稿が追加されるとページネーション時に問題を引き起こすため、3分以内に投稿されたもののみを追加する
- if (Date.now() - note.createdAt.getTime() > 1000 * 60 * 3) return;
-
const antennas = await this.getAntennas();
const antennasWithMatchResult = await Promise.all(antennas.map(antenna => this.checkHitAntenna(antenna, note, noteUser).then(hit => [antenna, hit] as const)));
const matchedAntennas = antennasWithMatchResult.filter(([, hit]) => hit).map(([antenna]) => antenna);
@@ -87,12 +86,7 @@ export class AntennaService implements OnApplicationShutdown {
const redisPipeline = this.redisForTimelines.pipeline();
for (const antenna of matchedAntennas) {
- redisPipeline.xadd(
- `antennaTimeline:${antenna.id}`,
- 'MAXLEN', '~', '200',
- '*',
- 'note', note.id);
-
+ this.redisTimelineService.push(`antennaTimeline:${antenna.id}`, note.id, 200, redisPipeline);
this.globalEventService.publishAntennaStream(antenna.id, 'note', note);
}