summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2024-03-17 10:34:13 +0900
committersyuilo <4439005+syuilo@users.noreply.github.com>2024-03-17 10:34:13 +0900
commit7e63ab0f5628bea33e8867d8257779b9ffeb8dd6 (patch)
treebec21c7bbae6cf119e157bddc6b2090be303b0e4
parentrefactor(backend): UserEntityService.packMany()の高速化 (#13550) (diff)
downloadmisskey-7e63ab0f5628bea33e8867d8257779b9ffeb8dd6.tar.gz
misskey-7e63ab0f5628bea33e8867d8257779b9ffeb8dd6.tar.bz2
misskey-7e63ab0f5628bea33e8867d8257779b9ffeb8dd6.zip
refactor(backend): refactor chart engine
-rw-r--r--packages/backend/src/core/chart/core.ts14
1 files changed, 8 insertions, 6 deletions
diff --git a/packages/backend/src/core/chart/core.ts b/packages/backend/src/core/chart/core.ts
index aa0cb9dc2b..f10e30ef10 100644
--- a/packages/backend/src/core/chart/core.ts
+++ b/packages/backend/src/core/chart/core.ts
@@ -459,13 +459,15 @@ export default abstract class Chart<T extends Schema> {
}
}
- // bake unique count
+ // bake cardinality
for (const [k, v] of Object.entries(finalDiffs)) {
if (this.schema[k].uniqueIncrement) {
const name = COLUMN_PREFIX + k.replaceAll('.', COLUMN_DELIMITER) as keyof Columns<T>;
const tempColumnName = UNIQUE_TEMP_COLUMN_PREFIX + k.replaceAll('.', COLUMN_DELIMITER) as keyof TempColumnsForUnique<T>;
- queryForHour[name] = new Set([...(v as string[]), ...(logHour[tempColumnName] as unknown as string[])]).size;
- queryForDay[name] = new Set([...(v as string[]), ...(logDay[tempColumnName] as unknown as string[])]).size;
+ const cardinalityOfHour = new Set([...(v as string[]), ...(logHour[tempColumnName] as unknown as string[])]).size;
+ const cardinalityOfDay = new Set([...(v as string[]), ...(logDay[tempColumnName] as unknown as string[])]).size;
+ queryForHour[name] = cardinalityOfHour;
+ queryForDay[name] = cardinalityOfDay;
}
}
@@ -637,7 +639,7 @@ export default abstract class Chart<T extends Schema> {
// 要求された範囲にログがひとつもなかったら
if (logs.length === 0) {
// もっとも新しいログを持ってくる
- // (すくなくともひとつログが無いと隙間埋めできないため)
+ // (すくなくともひとつログが無いと補間できないため)
const recentLog = await repository.findOne({
where: group ? {
group: group,
@@ -654,7 +656,7 @@ export default abstract class Chart<T extends Schema> {
// 要求された範囲の最も古い箇所に位置するログが存在しなかったら
} else if (!isTimeSame(new Date(logs.at(-1)!.date * 1000), gt)) {
// 要求された範囲の最も古い箇所時点での最も新しいログを持ってきて末尾に追加する
- // (隙間埋めできないため)
+ // (補間できないため)
const outdatedLog = await repository.findOne({
where: {
date: LessThan(Chart.dateToTimestamp(gt)),
@@ -683,7 +685,7 @@ export default abstract class Chart<T extends Schema> {
if (log) {
chart.unshift(this.convertRawRecord(log));
} else {
- // 隙間埋め
+ // 補間
const latest = logs.find(l => isTimeBefore(new Date(l.date * 1000), current));
const data = latest ? this.convertRawRecord(latest) : null;
chart.unshift(this.getNewLog(data));