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
        });
    }
}
