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