Files
2026-07-26 18:25:37 +09:00

41 lines
1.4 KiB
JavaScript

import Chart from "../core.js";
import { Notes } from "../../../models/index.js";
import { Not, IsNull } from "typeorm";
import { name, schema } from "./entities/notes.js";
/**
* ノートに関するチャート
*/ export default class NotesChart extends Chart {
constructor(){
super(name, schema);
}
async tickMajor() {
const [localCount, remoteCount] = await Promise.all([
Notes.countBy({
userHost: IsNull()
}),
Notes.countBy({
userHost: Not(IsNull())
})
]);
return {
"local.total": localCount,
"remote.total": remoteCount
};
}
async tickMinor() {
return {};
}
async update(note, isAdditional) {
const prefix = note.userHost === null ? "local" : "remote";
await this.commit({
[`${prefix}.total`]: isAdditional ? 1 : -1,
[`${prefix}.inc`]: isAdditional ? 1 : 0,
[`${prefix}.dec`]: isAdditional ? 0 : 1,
[`${prefix}.diffs.normal`]: note.replyId == null && note.renoteId == null ? isAdditional ? 1 : -1 : 0,
[`${prefix}.diffs.renote`]: note.renoteId != null ? isAdditional ? 1 : -1 : 0,
[`${prefix}.diffs.reply`]: note.replyId != null ? isAdditional ? 1 : -1 : 0,
[`${prefix}.diffs.withFile`]: note.fileIds.length > 0 ? isAdditional ? 1 : -1 : 0
});
}
}