wip
This commit is contained in:
parent
c3cd0451ad
commit
ef79903811
2 changed files with 34 additions and 12 deletions
|
@ -18,7 +18,7 @@ export interface IChart {
|
||||||
total: number;
|
total: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* この日時点での、ローカルのユーザー数の前日比
|
* ローカルのユーザー数の前日比
|
||||||
*/
|
*/
|
||||||
diff: number;
|
diff: number;
|
||||||
};
|
};
|
||||||
|
@ -30,7 +30,7 @@ export interface IChart {
|
||||||
total: number;
|
total: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* この日時点での、リモートのユーザー数の前日比
|
* リモートのユーザー数の前日比
|
||||||
*/
|
*/
|
||||||
diff: number;
|
diff: number;
|
||||||
};
|
};
|
||||||
|
@ -43,19 +43,24 @@ export interface IChart {
|
||||||
*/
|
*/
|
||||||
total: number;
|
total: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ローカルの投稿数の前日比
|
||||||
|
*/
|
||||||
|
diff: number;
|
||||||
|
|
||||||
diffs: {
|
diffs: {
|
||||||
/**
|
/**
|
||||||
* この日に行われた、ローカルの通常の投稿数の前日比
|
* ローカルの通常の投稿数の前日比
|
||||||
*/
|
*/
|
||||||
normal: number;
|
normal: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* この日に行われた、ローカルのリプライの投稿数の前日比
|
* ローカルのリプライの投稿数の前日比
|
||||||
*/
|
*/
|
||||||
reply: number;
|
reply: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* この日に行われた、ローカルのRenoteの投稿数の前日比
|
* ローカルのRenoteの投稿数の前日比
|
||||||
*/
|
*/
|
||||||
renote: number;
|
renote: number;
|
||||||
};
|
};
|
||||||
|
@ -67,19 +72,24 @@ export interface IChart {
|
||||||
*/
|
*/
|
||||||
total: number;
|
total: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* リモートの投稿数の前日比
|
||||||
|
*/
|
||||||
|
diff: number;
|
||||||
|
|
||||||
diffs: {
|
diffs: {
|
||||||
/**
|
/**
|
||||||
* この日に行われた、リモートの通常の投稿数の前日比
|
* リモートの通常の投稿数の前日比
|
||||||
*/
|
*/
|
||||||
normal: number;
|
normal: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* この日に行われた、リモートのリプライの投稿数の前日比
|
* リモートのリプライの投稿数の前日比
|
||||||
*/
|
*/
|
||||||
reply: number;
|
reply: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* この日に行われた、リモートのRenoteの投稿数の前日比
|
* リモートのRenoteの投稿数の前日比
|
||||||
*/
|
*/
|
||||||
renote: number;
|
renote: number;
|
||||||
};
|
};
|
||||||
|
|
|
@ -2,6 +2,8 @@ import { INote } from '../models/note';
|
||||||
import Chart, { IChart } from '../models/chart';
|
import Chart, { IChart } from '../models/chart';
|
||||||
import { isLocalUser, IUser } from '../models/user';
|
import { isLocalUser, IUser } from '../models/user';
|
||||||
|
|
||||||
|
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
|
||||||
|
|
||||||
async function getTodayStats(): Promise<IChart> {
|
async function getTodayStats(): Promise<IChart> {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const y = now.getFullYear();
|
const y = now.getFullYear();
|
||||||
|
@ -30,7 +32,7 @@ async function getTodayStats(): Promise<IChart> {
|
||||||
// * Misskeyインスタンスを建てて初めてのチャート更新時など
|
// * Misskeyインスタンスを建てて初めてのチャート更新時など
|
||||||
if (mostRecentStats == null) {
|
if (mostRecentStats == null) {
|
||||||
// 空の統計を作成
|
// 空の統計を作成
|
||||||
const stats = await Chart.insert({
|
const chart: Omit<IChart, '_id'> = {
|
||||||
date: today,
|
date: today,
|
||||||
users: {
|
users: {
|
||||||
local: {
|
local: {
|
||||||
|
@ -45,6 +47,7 @@ async function getTodayStats(): Promise<IChart> {
|
||||||
notes: {
|
notes: {
|
||||||
local: {
|
local: {
|
||||||
total: 0,
|
total: 0,
|
||||||
|
diff: 0,
|
||||||
diffs: {
|
diffs: {
|
||||||
normal: 0,
|
normal: 0,
|
||||||
reply: 0,
|
reply: 0,
|
||||||
|
@ -53,6 +56,7 @@ async function getTodayStats(): Promise<IChart> {
|
||||||
},
|
},
|
||||||
remote: {
|
remote: {
|
||||||
total: 0,
|
total: 0,
|
||||||
|
diff: 0,
|
||||||
diffs: {
|
diffs: {
|
||||||
normal: 0,
|
normal: 0,
|
||||||
reply: 0,
|
reply: 0,
|
||||||
|
@ -60,12 +64,14 @@ async function getTodayStats(): Promise<IChart> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
|
const stats = await Chart.insert(chart);
|
||||||
|
|
||||||
return stats;
|
return stats;
|
||||||
} else {
|
} else {
|
||||||
// 今日の統計を初期挿入
|
// 今日の統計を初期挿入
|
||||||
const stats = await Chart.insert({
|
const chart: Omit<IChart, '_id'> = {
|
||||||
date: today,
|
date: today,
|
||||||
users: {
|
users: {
|
||||||
local: {
|
local: {
|
||||||
|
@ -80,6 +86,7 @@ async function getTodayStats(): Promise<IChart> {
|
||||||
notes: {
|
notes: {
|
||||||
local: {
|
local: {
|
||||||
total: mostRecentStats.notes.local.total,
|
total: mostRecentStats.notes.local.total,
|
||||||
|
diff: 0,
|
||||||
diffs: {
|
diffs: {
|
||||||
normal: 0,
|
normal: 0,
|
||||||
reply: 0,
|
reply: 0,
|
||||||
|
@ -88,6 +95,7 @@ async function getTodayStats(): Promise<IChart> {
|
||||||
},
|
},
|
||||||
remote: {
|
remote: {
|
||||||
total: mostRecentStats.notes.remote.total,
|
total: mostRecentStats.notes.remote.total,
|
||||||
|
diff: 0,
|
||||||
diffs: {
|
diffs: {
|
||||||
normal: 0,
|
normal: 0,
|
||||||
reply: 0,
|
reply: 0,
|
||||||
|
@ -95,7 +103,9 @@ async function getTodayStats(): Promise<IChart> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
};
|
||||||
|
|
||||||
|
const stats = await Chart.insert(chart);
|
||||||
|
|
||||||
return stats;
|
return stats;
|
||||||
}
|
}
|
||||||
|
@ -137,6 +147,7 @@ export async function updateNoteStats(note: INote, isAdditional: boolean) {
|
||||||
|
|
||||||
if (isLocalUser(note._user)) {
|
if (isLocalUser(note._user)) {
|
||||||
inc['notes.local.total'] = val;
|
inc['notes.local.total'] = val;
|
||||||
|
inc['notes.local.diff'] = val;
|
||||||
|
|
||||||
if (note.replyId != null) {
|
if (note.replyId != null) {
|
||||||
inc['notes.local.diffs.reply'] = val;
|
inc['notes.local.diffs.reply'] = val;
|
||||||
|
@ -147,6 +158,7 @@ export async function updateNoteStats(note: INote, isAdditional: boolean) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
inc['notes.remote.total'] = val;
|
inc['notes.remote.total'] = val;
|
||||||
|
inc['notes.remote.diff'] = val;
|
||||||
|
|
||||||
if (note.replyId != null) {
|
if (note.replyId != null) {
|
||||||
inc['notes.remote.diffs.reply'] = val;
|
inc['notes.remote.diffs.reply'] = val;
|
||||||
|
|
Loading…
Reference in a new issue