2018-08-18 13:22:56 +02:00
|
|
|
import * as mongo from 'mongodb';
|
|
|
|
import db from '../db/mongodb';
|
|
|
|
|
2018-08-18 17:27:23 +02:00
|
|
|
const Stats = db.get<IStats>('stats');
|
2018-09-01 12:12:07 +02:00
|
|
|
|
|
|
|
// 後方互換性のため
|
|
|
|
Stats.dropIndex({ date: -1 } as any).catch((e: mongo.MongoError) => {
|
|
|
|
if (e.code !== 27) throw e;
|
|
|
|
});
|
|
|
|
|
2018-08-26 21:50:52 +02:00
|
|
|
Stats.createIndex({ span: -1, date: -1 }, { unique: true });
|
2018-08-18 17:27:23 +02:00
|
|
|
export default Stats;
|
2018-08-18 13:22:56 +02:00
|
|
|
|
2018-08-18 17:27:23 +02:00
|
|
|
export interface IStats {
|
2018-08-18 13:22:56 +02:00
|
|
|
_id: mongo.ObjectID;
|
|
|
|
|
2018-08-25 01:35:41 +02:00
|
|
|
/**
|
|
|
|
* 集計日時
|
|
|
|
*/
|
2018-08-18 13:22:56 +02:00
|
|
|
date: Date;
|
|
|
|
|
2018-08-25 01:35:41 +02:00
|
|
|
/**
|
|
|
|
* 集計期間
|
|
|
|
*/
|
2018-08-23 08:40:24 +02:00
|
|
|
span: 'day' | 'hour';
|
|
|
|
|
2018-08-18 16:48:54 +02:00
|
|
|
/**
|
|
|
|
* ユーザーに関する統計
|
|
|
|
*/
|
2018-08-18 13:22:56 +02:00
|
|
|
users: {
|
|
|
|
local: {
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 集計期間時点での、全ユーザー数 (ローカル)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
|
|
|
total: number;
|
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 増加したユーザー数 (ローカル)
|
|
|
|
*/
|
|
|
|
inc: number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 減少したユーザー数 (ローカル)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
2018-08-25 01:35:41 +02:00
|
|
|
dec: number;
|
2018-08-18 13:22:56 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
remote: {
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 集計期間時点での、全ユーザー数 (リモート)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
|
|
|
total: number;
|
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 増加したユーザー数 (リモート)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
2018-08-25 01:35:41 +02:00
|
|
|
inc: number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 減少したユーザー数 (リモート)
|
|
|
|
*/
|
|
|
|
dec: number;
|
2018-08-18 13:22:56 +02:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2018-08-18 16:48:54 +02:00
|
|
|
/**
|
|
|
|
* 投稿に関する統計
|
|
|
|
*/
|
2018-08-18 13:22:56 +02:00
|
|
|
notes: {
|
|
|
|
local: {
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 集計期間時点での、全投稿数 (ローカル)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
|
|
|
total: number;
|
|
|
|
|
2018-08-18 16:23:55 +02:00
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 増加した投稿数 (ローカル)
|
2018-08-18 16:23:55 +02:00
|
|
|
*/
|
2018-08-25 01:35:41 +02:00
|
|
|
inc: number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 減少した投稿数 (ローカル)
|
|
|
|
*/
|
|
|
|
dec: number;
|
2018-08-18 16:23:55 +02:00
|
|
|
|
2018-08-18 13:22:56 +02:00
|
|
|
diffs: {
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 通常の投稿数の差分 (ローカル)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
|
|
|
normal: number;
|
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* リプライの投稿数の差分 (ローカル)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
|
|
|
reply: number;
|
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* Renoteの投稿数の差分 (ローカル)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
|
|
|
renote: number;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
remote: {
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 集計期間時点での、全投稿数 (リモート)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
|
|
|
total: number;
|
|
|
|
|
2018-08-18 16:23:55 +02:00
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 増加した投稿数 (リモート)
|
|
|
|
*/
|
|
|
|
inc: number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 減少した投稿数 (リモート)
|
2018-08-18 16:23:55 +02:00
|
|
|
*/
|
2018-08-25 01:35:41 +02:00
|
|
|
dec: number;
|
2018-08-18 16:23:55 +02:00
|
|
|
|
2018-08-18 13:22:56 +02:00
|
|
|
diffs: {
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 通常の投稿数の差分 (リモート)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
|
|
|
normal: number;
|
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* リプライの投稿数の差分 (リモート)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
|
|
|
reply: number;
|
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* Renoteの投稿数の差分 (リモート)
|
2018-08-18 13:22:56 +02:00
|
|
|
*/
|
|
|
|
renote: number;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
2018-08-18 16:48:54 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* ドライブ(のファイル)に関する統計
|
|
|
|
*/
|
|
|
|
drive: {
|
|
|
|
local: {
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 集計期間時点での、全ドライブファイル数 (ローカル)
|
2018-08-18 16:48:54 +02:00
|
|
|
*/
|
|
|
|
totalCount: number;
|
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 集計期間時点での、全ドライブファイルの合計サイズ (ローカル)
|
2018-08-18 16:48:54 +02:00
|
|
|
*/
|
|
|
|
totalSize: number;
|
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 増加したドライブファイル数 (ローカル)
|
|
|
|
*/
|
|
|
|
incCount: number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 増加したドライブ使用量 (ローカル)
|
|
|
|
*/
|
|
|
|
incSize: number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 減少したドライブファイル数 (ローカル)
|
2018-08-18 16:48:54 +02:00
|
|
|
*/
|
2018-08-25 01:35:41 +02:00
|
|
|
decCount: number;
|
2018-08-18 16:48:54 +02:00
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 減少したドライブ使用量 (ローカル)
|
2018-08-18 16:48:54 +02:00
|
|
|
*/
|
2018-08-25 01:35:41 +02:00
|
|
|
decSize: number;
|
2018-08-18 16:48:54 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
remote: {
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 集計期間時点での、全ドライブファイル数 (リモート)
|
2018-08-18 16:48:54 +02:00
|
|
|
*/
|
|
|
|
totalCount: number;
|
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 集計期間時点での、全ドライブファイルの合計サイズ (リモート)
|
2018-08-18 16:48:54 +02:00
|
|
|
*/
|
|
|
|
totalSize: number;
|
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 増加したドライブファイル数 (リモート)
|
|
|
|
*/
|
|
|
|
incCount: number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 増加したドライブ使用量 (リモート)
|
|
|
|
*/
|
|
|
|
incSize: number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 減少したドライブファイル数 (リモート)
|
2018-08-18 16:48:54 +02:00
|
|
|
*/
|
2018-08-25 01:35:41 +02:00
|
|
|
decCount: number;
|
2018-08-18 16:48:54 +02:00
|
|
|
|
|
|
|
/**
|
2018-08-25 01:35:41 +02:00
|
|
|
* 減少したドライブ使用量 (リモート)
|
2018-08-18 16:48:54 +02:00
|
|
|
*/
|
2018-08-25 01:35:41 +02:00
|
|
|
decSize: number;
|
2018-08-18 16:48:54 +02:00
|
|
|
};
|
|
|
|
};
|
2018-08-18 13:22:56 +02:00
|
|
|
}
|