mirror of
https://github.com/misskey-dev/misskey.git
synced 2024-12-26 06:10:20 +01:00
ユーザーTLではFTTのソースが空の際にDBにFallbackしないように
This commit is contained in:
parent
3564bf5c66
commit
48232ca57b
2 changed files with 6 additions and 3 deletions
|
@ -34,6 +34,7 @@ type TimelineOptions = {
|
|||
excludeReplies?: boolean;
|
||||
excludePureRenotes: boolean;
|
||||
dbFallback: (untilId: string | null, sinceId: string | null, limit: number) => Promise<MiNote[]>,
|
||||
preventEmptyTimelineDbFallback?: boolean;
|
||||
};
|
||||
|
||||
@Injectable()
|
||||
|
@ -63,8 +64,9 @@ export class FanoutTimelineEndpointService {
|
|||
|
||||
const redisResult = await this.fanoutTimelineService.getMulti(ps.redisTimelines, ps.untilId, ps.sinceId);
|
||||
|
||||
// 取得したredisResultのうち、2つ以上ソースがあり、1つでも空であればDBにフォールバックする
|
||||
let shouldFallbackToDb = ps.useDbFallback && (redisResult.length > 1 && redisResult.some(ids => ids.length === 0));
|
||||
// オプション無効時、取得したredisResultのうち、2つ以上ソースがあり、1つでも空であればDBにフォールバックする
|
||||
let shouldFallbackToDb = ps.useDbFallback &&
|
||||
(ps.preventEmptyTimelineDbFallback !== true && redisResult.length > 1 && redisResult.some(ids => ids.length === 0));
|
||||
|
||||
// 取得したresultの中で最古のIDのうち、最も新しいものを取得
|
||||
const fttThresholdId = redisResult.map(ids => ids[0]).sort()[0];
|
||||
|
@ -75,7 +77,7 @@ export class FanoutTimelineEndpointService {
|
|||
let noteIds = redisResultIds.filter(id => id >= fttThresholdId).slice(0, ps.limit);
|
||||
|
||||
const oldestNoteId = ascending ? redisResultIds[0] : redisResultIds[redisResultIds.length - 1];
|
||||
shouldFallbackToDb ||= noteIds.length === 0 || ps.sinceId != null && ps.sinceId < oldestNoteId;
|
||||
shouldFallbackToDb ||= ps.useDbFallback && (noteIds.length === 0 || ps.sinceId != null && ps.sinceId < oldestNoteId);
|
||||
|
||||
if (!shouldFallbackToDb) {
|
||||
let filter = ps.noteFilter ?? (_note => true);
|
||||
|
|
|
@ -143,6 +143,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
|
|||
withFiles: ps.withFiles,
|
||||
withRenotes: ps.withRenotes,
|
||||
}, me),
|
||||
preventEmptyTimelineDbFallback: true,
|
||||
});
|
||||
|
||||
return timeline;
|
||||
|
|
Loading…
Reference in a new issue