summaryrefslogtreecommitdiff
path: root/src/chart/drive.ts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-02-08 04:31:33 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-02-08 04:31:33 +0900
commitaba85b977dfc868c1a65ce06ed58ea59d0371f7f (patch)
tree5e27a5397bb3ee93ae1790ed2f92c6264ae86956 /src/chart/drive.ts
parentImplement instance blocking (#4182) (diff)
downloadmisskey-aba85b977dfc868c1a65ce06ed58ea59d0371f7f.tar.gz
misskey-aba85b977dfc868c1a65ce06ed58ea59d0371f7f.tar.bz2
misskey-aba85b977dfc868c1a65ce06ed58ea59d0371f7f.zip
Refactoring: Move chart dir into services dir
Diffstat (limited to 'src/chart/drive.ts')
-rw-r--r--src/chart/drive.ts122
1 files changed, 0 insertions, 122 deletions
diff --git a/src/chart/drive.ts b/src/chart/drive.ts
deleted file mode 100644
index ff454c750a..0000000000
--- a/src/chart/drive.ts
+++ /dev/null
@@ -1,122 +0,0 @@
-import autobind from 'autobind-decorator';
-import Chart, { Obj } from './';
-import DriveFile, { IDriveFile } from '../models/drive-file';
-import { isLocalUser } from '../models/user';
-
-/**
- * ドライブに関するチャート
- */
-type DriveLog = {
- local: {
- /**
- * 集計期間時点での、全ドライブファイル数
- */
- totalCount: number;
-
- /**
- * 集計期間時点での、全ドライブファイルの合計サイズ
- */
- totalSize: number;
-
- /**
- * 増加したドライブファイル数
- */
- incCount: number;
-
- /**
- * 増加したドライブ使用量
- */
- incSize: number;
-
- /**
- * 減少したドライブファイル数
- */
- decCount: number;
-
- /**
- * 減少したドライブ使用量
- */
- decSize: number;
- };
-
- remote: DriveLog['local'];
-};
-
-class DriveChart extends Chart<DriveLog> {
- constructor() {
- super('drive');
- }
-
- @autobind
- protected async getTemplate(init: boolean, latest?: DriveLog): Promise<DriveLog> {
- const calcSize = (local: boolean) => DriveFile
- .aggregate([{
- $match: {
- 'metadata._user.host': local ? null : { $ne: null },
- 'metadata.deletedAt': { $exists: false }
- }
- }, {
- $project: {
- length: true
- }
- }, {
- $group: {
- _id: null,
- usage: { $sum: '$length' }
- }
- }])
- .then(res => res.length > 0 ? res[0].usage : 0);
-
- const [localCount, remoteCount, localSize, remoteSize] = init ? await Promise.all([
- DriveFile.count({ 'metadata._user.host': null }),
- DriveFile.count({ 'metadata._user.host': { $ne: null } }),
- calcSize(true),
- calcSize(false)
- ]) : [
- latest ? latest.local.totalCount : 0,
- latest ? latest.remote.totalCount : 0,
- latest ? latest.local.totalSize : 0,
- latest ? latest.remote.totalSize : 0
- ];
-
- return {
- local: {
- totalCount: localCount,
- totalSize: localSize,
- incCount: 0,
- incSize: 0,
- decCount: 0,
- decSize: 0
- },
- remote: {
- totalCount: remoteCount,
- totalSize: remoteSize,
- incCount: 0,
- incSize: 0,
- decCount: 0,
- decSize: 0
- }
- };
- }
-
- @autobind
- public async update(file: IDriveFile, isAdditional: boolean) {
- const update: Obj = {};
-
- update.totalCount = isAdditional ? 1 : -1;
- update.totalSize = isAdditional ? file.length : -file.length;
- if (isAdditional) {
- update.incCount = 1;
- update.incSize = file.length;
- } else {
- update.decCount = 1;
- update.decSize = file.length;
- }
-
- await this.inc({
- [isLocalUser(file.metadata._user) ? 'local' : 'remote']: update
- });
- }
-}
-
-export default new DriveChart();