summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints
diff options
context:
space:
mode:
authorSatsuki Yanagi <17376330+u1-liquid@users.noreply.github.com>2019-07-05 08:43:56 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2019-07-05 08:43:56 +0900
commit6a53ccf814adfbb894551c7a74866c7fc34a0182 (patch)
treef603edd0996cb502189c6e58dc589c6834a1688e /src/server/api/endpoints
parentFix WebAuthn login (#5103) (diff)
downloadsharkey-6a53ccf814adfbb894551c7a74866c7fc34a0182.tar.gz
sharkey-6a53ccf814adfbb894551c7a74866c7fc34a0182.tar.bz2
sharkey-6a53ccf814adfbb894551c7a74866c7fc34a0182.zip
ハッシュタグのトレンドの計算を5分単位で丸める (#5107)
Diffstat (limited to 'src/server/api/endpoints')
-rw-r--r--src/server/api/endpoints/hashtags/trend.ts11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/server/api/endpoints/hashtags/trend.ts b/src/server/api/endpoints/hashtags/trend.ts
index 3154461e5a..a004732f81 100644
--- a/src/server/api/endpoints/hashtags/trend.ts
+++ b/src/server/api/endpoints/hashtags/trend.ts
@@ -54,8 +54,11 @@ export default define(meta, async () => {
const instance = await fetchMeta(true);
const hiddenTags = instance.hiddenTags.map(t => t.toLowerCase());
+ const now = new Date(); // 5分単位で丸めた現在日時
+ now.setMinutes(Math.round(now.getMinutes() / 5) * 5, 0, 0);
+
const tagNotes = await Notes.createQueryBuilder('note')
- .where(`note.createdAt > :date`, { date: new Date(Date.now() - rangeA) })
+ .where(`note.createdAt > :date`, { date: new Date(now.getTime() - rangeA) })
.andWhere(`note.tags != '{}'`)
.select(['note.tags', 'note.userId'])
.cache(60000) // 1 min
@@ -106,8 +109,8 @@ export default define(meta, async () => {
countPromises.push(Promise.all(hots.map(tag => Notes.createQueryBuilder('note')
.select('count(distinct note.userId)')
.where(':tag = ANY(note.tags)', { tag: tag })
- .andWhere('note.createdAt < :lt', { lt: new Date(Date.now() - (interval * i)) })
- .andWhere('note.createdAt > :gt', { gt: new Date(Date.now() - (interval * (i + 1))) })
+ .andWhere('note.createdAt < :lt', { lt: new Date(now.getTime() - (interval * i)) })
+ .andWhere('note.createdAt > :gt', { gt: new Date(now.getTime() - (interval * (i + 1))) })
.cache(60000) // 1 min
.getRawOne()
.then(x => parseInt(x.count, 10))
@@ -119,7 +122,7 @@ export default define(meta, async () => {
const totalCounts = await Promise.all(hots.map(tag => Notes.createQueryBuilder('note')
.select('count(distinct note.userId)')
.where(':tag = ANY(note.tags)', { tag: tag })
- .andWhere('note.createdAt > :gt', { gt: new Date(Date.now() - (interval * range)) })
+ .andWhere('note.createdAt > :gt', { gt: new Date(now.getTime() - (interval * range)) })
.cache(60000) // 1 min
.getRawOne()
.then(x => parseInt(x.count, 10))