summaryrefslogtreecommitdiff
path: root/src/services/chart/charts/classes
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-03-22 15:27:08 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-03-22 15:27:08 +0900
commit52d577c7dd7bf87b3fae34f539bb6e656c7c0ed2 (patch)
tree9805c625a7fba9d8631db8a92772b2772d8632ec /src/services/chart/charts/classes
parentMerge branch 'develop' (diff)
parent12.75.0 (diff)
downloadmisskey-52d577c7dd7bf87b3fae34f539bb6e656c7c0ed2.tar.gz
misskey-52d577c7dd7bf87b3fae34f539bb6e656c7c0ed2.tar.bz2
misskey-52d577c7dd7bf87b3fae34f539bb6e656c7c0ed2.zip
Merge branch 'develop'
Diffstat (limited to 'src/services/chart/charts/classes')
-rw-r--r--src/services/chart/charts/classes/active-users.ts18
-rw-r--r--src/services/chart/charts/classes/drive.ts22
-rw-r--r--src/services/chart/charts/classes/federation.ts11
-rw-r--r--src/services/chart/charts/classes/hashtag.ts18
-rw-r--r--src/services/chart/charts/classes/instance.ts44
-rw-r--r--src/services/chart/charts/classes/network.ts11
-rw-r--r--src/services/chart/charts/classes/notes.ts26
-rw-r--r--src/services/chart/charts/classes/per-user-drive.ts12
-rw-r--r--src/services/chart/charts/classes/per-user-following.ts30
-rw-r--r--src/services/chart/charts/classes/per-user-notes.ts14
-rw-r--r--src/services/chart/charts/classes/per-user-reactions.ts12
-rw-r--r--src/services/chart/charts/classes/test-grouped.ts11
-rw-r--r--src/services/chart/charts/classes/test-unique.ts13
-rw-r--r--src/services/chart/charts/classes/test.ts11
-rw-r--r--src/services/chart/charts/classes/users.ts16
15 files changed, 260 insertions, 9 deletions
diff --git a/src/services/chart/charts/classes/active-users.ts b/src/services/chart/charts/classes/active-users.ts
index 5128150de6..4820f8281b 100644
--- a/src/services/chart/charts/classes/active-users.ts
+++ b/src/services/chart/charts/classes/active-users.ts
@@ -18,6 +18,18 @@ export default class ActiveUsersChart extends Chart<ActiveUsersLog> {
}
@autobind
+ protected aggregate(logs: ActiveUsersLog[]): ActiveUsersLog {
+ return {
+ local: {
+ users: logs.reduce((a, b) => a.concat(b.local.users), [] as ActiveUsersLog['local']['users']),
+ },
+ remote: {
+ users: logs.reduce((a, b) => a.concat(b.remote.users), [] as ActiveUsersLog['remote']['users']),
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(): Promise<DeepPartial<ActiveUsersLog>> {
return {};
}
@@ -25,11 +37,11 @@ export default class ActiveUsersChart extends Chart<ActiveUsersLog> {
@autobind
public async update(user: User) {
const update: Obj = {
- count: 1
+ users: [user.id]
};
- await this.incIfUnique({
+ await this.inc({
[Users.isLocalUser(user) ? 'local' : 'remote']: update
- }, 'users', user.id);
+ });
}
}
diff --git a/src/services/chart/charts/classes/drive.ts b/src/services/chart/charts/classes/drive.ts
index 57bb120beb..46399a34d8 100644
--- a/src/services/chart/charts/classes/drive.ts
+++ b/src/services/chart/charts/classes/drive.ts
@@ -28,6 +28,28 @@ export default class DriveChart extends Chart<DriveLog> {
}
@autobind
+ protected aggregate(logs: DriveLog[]): DriveLog {
+ return {
+ local: {
+ totalCount: logs[0].local.totalCount,
+ totalSize: logs[0].local.totalSize,
+ incCount: logs.reduce((a, b) => a + b.local.incCount, 0),
+ incSize: logs.reduce((a, b) => a + b.local.incSize, 0),
+ decCount: logs.reduce((a, b) => a + b.local.decCount, 0),
+ decSize: logs.reduce((a, b) => a + b.local.decSize, 0),
+ },
+ remote: {
+ totalCount: logs[0].remote.totalCount,
+ totalSize: logs[0].remote.totalSize,
+ incCount: logs.reduce((a, b) => a + b.remote.incCount, 0),
+ incSize: logs.reduce((a, b) => a + b.remote.incSize, 0),
+ decCount: logs.reduce((a, b) => a + b.remote.decCount, 0),
+ decSize: logs.reduce((a, b) => a + b.remote.decSize, 0),
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(): Promise<DeepPartial<DriveLog>> {
const [localCount, remoteCount, localSize, remoteSize] = await Promise.all([
DriveFiles.count({ userHost: null }),
diff --git a/src/services/chart/charts/classes/federation.ts b/src/services/chart/charts/classes/federation.ts
index bd2c497e7b..ab6ec2d4dd 100644
--- a/src/services/chart/charts/classes/federation.ts
+++ b/src/services/chart/charts/classes/federation.ts
@@ -21,6 +21,17 @@ export default class FederationChart extends Chart<FederationLog> {
}
@autobind
+ protected aggregate(logs: FederationLog[]): FederationLog {
+ return {
+ instance: {
+ total: logs[0].instance.total,
+ inc: logs.reduce((a, b) => a + b.instance.inc, 0),
+ dec: logs.reduce((a, b) => a + b.instance.dec, 0),
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(): Promise<DeepPartial<FederationLog>> {
const [total] = await Promise.all([
Instances.count({})
diff --git a/src/services/chart/charts/classes/hashtag.ts b/src/services/chart/charts/classes/hashtag.ts
index 38c3a94f0c..43db5b0a83 100644
--- a/src/services/chart/charts/classes/hashtag.ts
+++ b/src/services/chart/charts/classes/hashtag.ts
@@ -18,6 +18,18 @@ export default class HashtagChart extends Chart<HashtagLog> {
}
@autobind
+ protected aggregate(logs: HashtagLog[]): HashtagLog {
+ return {
+ local: {
+ users: logs.reduce((a, b) => a.concat(b.local.users), [] as HashtagLog['local']['users']),
+ },
+ remote: {
+ users: logs.reduce((a, b) => a.concat(b.remote.users), [] as HashtagLog['remote']['users']),
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(): Promise<DeepPartial<HashtagLog>> {
return {};
}
@@ -25,11 +37,11 @@ export default class HashtagChart extends Chart<HashtagLog> {
@autobind
public async update(hashtag: string, user: User) {
const update: Obj = {
- count: 1
+ users: [user.id]
};
- await this.incIfUnique({
+ await this.inc({
[Users.isLocalUser(user) ? 'local' : 'remote']: update
- }, 'users', user.id, hashtag);
+ }, hashtag);
}
}
diff --git a/src/services/chart/charts/classes/instance.ts b/src/services/chart/charts/classes/instance.ts
index 7575abfb6f..c32b864d87 100644
--- a/src/services/chart/charts/classes/instance.ts
+++ b/src/services/chart/charts/classes/instance.ts
@@ -37,6 +37,50 @@ export default class InstanceChart extends Chart<InstanceLog> {
}
@autobind
+ protected aggregate(logs: InstanceLog[]): InstanceLog {
+ return {
+ requests: {
+ failed: logs.reduce((a, b) => a + b.requests.failed, 0),
+ succeeded: logs.reduce((a, b) => a + b.requests.succeeded, 0),
+ received: logs.reduce((a, b) => a + b.requests.received, 0),
+ },
+ notes: {
+ total: logs[0].notes.total,
+ inc: logs.reduce((a, b) => a + b.notes.inc, 0),
+ dec: logs.reduce((a, b) => a + b.notes.dec, 0),
+ diffs: {
+ reply: logs.reduce((a, b) => a + b.notes.diffs.reply, 0),
+ renote: logs.reduce((a, b) => a + b.notes.diffs.renote, 0),
+ normal: logs.reduce((a, b) => a + b.notes.diffs.normal, 0),
+ },
+ },
+ users: {
+ total: logs[0].users.total,
+ inc: logs.reduce((a, b) => a + b.users.inc, 0),
+ dec: logs.reduce((a, b) => a + b.users.dec, 0),
+ },
+ following: {
+ total: logs[0].following.total,
+ inc: logs.reduce((a, b) => a + b.following.inc, 0),
+ dec: logs.reduce((a, b) => a + b.following.dec, 0),
+ },
+ followers: {
+ total: logs[0].followers.total,
+ inc: logs.reduce((a, b) => a + b.followers.inc, 0),
+ dec: logs.reduce((a, b) => a + b.followers.dec, 0),
+ },
+ drive: {
+ totalFiles: logs[0].drive.totalFiles,
+ totalUsage: logs[0].drive.totalUsage,
+ incFiles: logs.reduce((a, b) => a + b.drive.incFiles, 0),
+ incUsage: logs.reduce((a, b) => a + b.drive.incUsage, 0),
+ decFiles: logs.reduce((a, b) => a + b.drive.decFiles, 0),
+ decUsage: logs.reduce((a, b) => a + b.drive.decUsage, 0),
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(group: string): Promise<DeepPartial<InstanceLog>> {
const [
notesCount,
diff --git a/src/services/chart/charts/classes/network.ts b/src/services/chart/charts/classes/network.ts
index 8b26e5c4c2..693af48f73 100644
--- a/src/services/chart/charts/classes/network.ts
+++ b/src/services/chart/charts/classes/network.ts
@@ -16,6 +16,17 @@ export default class NetworkChart extends Chart<NetworkLog> {
}
@autobind
+ protected aggregate(logs: NetworkLog[]): NetworkLog {
+ return {
+ incomingRequests: logs.reduce((a, b) => a + b.incomingRequests, 0),
+ outgoingRequests: logs.reduce((a, b) => a + b.outgoingRequests, 0),
+ totalTime: logs.reduce((a, b) => a + b.totalTime, 0),
+ incomingBytes: logs.reduce((a, b) => a + b.incomingBytes, 0),
+ outgoingBytes: logs.reduce((a, b) => a + b.outgoingBytes, 0),
+ };
+ }
+
+ @autobind
protected async fetchActual(): Promise<DeepPartial<NetworkLog>> {
return {};
}
diff --git a/src/services/chart/charts/classes/notes.ts b/src/services/chart/charts/classes/notes.ts
index 815061c445..965087bc08 100644
--- a/src/services/chart/charts/classes/notes.ts
+++ b/src/services/chart/charts/classes/notes.ts
@@ -26,6 +26,32 @@ export default class NotesChart extends Chart<NotesLog> {
}
@autobind
+ protected aggregate(logs: NotesLog[]): NotesLog {
+ return {
+ local: {
+ total: logs[0].local.total,
+ inc: logs.reduce((a, b) => a + b.local.inc, 0),
+ dec: logs.reduce((a, b) => a + b.local.dec, 0),
+ diffs: {
+ reply: logs.reduce((a, b) => a + b.local.diffs.reply, 0),
+ renote: logs.reduce((a, b) => a + b.local.diffs.renote, 0),
+ normal: logs.reduce((a, b) => a + b.local.diffs.normal, 0),
+ },
+ },
+ remote: {
+ total: logs[0].remote.total,
+ inc: logs.reduce((a, b) => a + b.remote.inc, 0),
+ dec: logs.reduce((a, b) => a + b.remote.dec, 0),
+ diffs: {
+ reply: logs.reduce((a, b) => a + b.remote.diffs.reply, 0),
+ renote: logs.reduce((a, b) => a + b.remote.diffs.renote, 0),
+ normal: logs.reduce((a, b) => a + b.remote.diffs.normal, 0),
+ },
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(): Promise<DeepPartial<NotesLog>> {
const [localCount, remoteCount] = await Promise.all([
Notes.count({ userHost: null }),
diff --git a/src/services/chart/charts/classes/per-user-drive.ts b/src/services/chart/charts/classes/per-user-drive.ts
index aed9f6fce7..e778f7bf61 100644
--- a/src/services/chart/charts/classes/per-user-drive.ts
+++ b/src/services/chart/charts/classes/per-user-drive.ts
@@ -21,6 +21,18 @@ export default class PerUserDriveChart extends Chart<PerUserDriveLog> {
}
@autobind
+ protected aggregate(logs: PerUserDriveLog[]): PerUserDriveLog {
+ return {
+ totalCount: logs[0].totalCount,
+ totalSize: logs[0].totalSize,
+ incCount: logs.reduce((a, b) => a + b.incCount, 0),
+ incSize: logs.reduce((a, b) => a + b.incSize, 0),
+ decCount: logs.reduce((a, b) => a + b.decCount, 0),
+ decSize: logs.reduce((a, b) => a + b.decSize, 0),
+ };
+ }
+
+ @autobind
protected async fetchActual(group: string): Promise<DeepPartial<PerUserDriveLog>> {
const [count, size] = await Promise.all([
DriveFiles.count({ userId: group }),
diff --git a/src/services/chart/charts/classes/per-user-following.ts b/src/services/chart/charts/classes/per-user-following.ts
index 8295c0cb0d..8b536009c8 100644
--- a/src/services/chart/charts/classes/per-user-following.ts
+++ b/src/services/chart/charts/classes/per-user-following.ts
@@ -36,6 +36,36 @@ export default class PerUserFollowingChart extends Chart<PerUserFollowingLog> {
}
@autobind
+ protected aggregate(logs: PerUserFollowingLog[]): PerUserFollowingLog {
+ return {
+ local: {
+ followings: {
+ total: logs[0].local.followings.total,
+ inc: logs.reduce((a, b) => a + b.local.followings.inc, 0),
+ dec: logs.reduce((a, b) => a + b.local.followings.dec, 0),
+ },
+ followers: {
+ total: logs[0].local.followers.total,
+ inc: logs.reduce((a, b) => a + b.local.followers.inc, 0),
+ dec: logs.reduce((a, b) => a + b.local.followers.dec, 0),
+ },
+ },
+ remote: {
+ followings: {
+ total: logs[0].remote.followings.total,
+ inc: logs.reduce((a, b) => a + b.remote.followings.inc, 0),
+ dec: logs.reduce((a, b) => a + b.remote.followings.dec, 0),
+ },
+ followers: {
+ total: logs[0].remote.followers.total,
+ inc: logs.reduce((a, b) => a + b.remote.followers.inc, 0),
+ dec: logs.reduce((a, b) => a + b.remote.followers.dec, 0),
+ },
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(group: string): Promise<DeepPartial<PerUserFollowingLog>> {
const [
localFollowingsCount,
diff --git a/src/services/chart/charts/classes/per-user-notes.ts b/src/services/chart/charts/classes/per-user-notes.ts
index cccd495604..8d1fb8d2b0 100644
--- a/src/services/chart/charts/classes/per-user-notes.ts
+++ b/src/services/chart/charts/classes/per-user-notes.ts
@@ -21,6 +21,20 @@ export default class PerUserNotesChart extends Chart<PerUserNotesLog> {
}
@autobind
+ protected aggregate(logs: PerUserNotesLog[]): PerUserNotesLog {
+ return {
+ total: logs[0].total,
+ inc: logs.reduce((a, b) => a + b.inc, 0),
+ dec: logs.reduce((a, b) => a + b.dec, 0),
+ diffs: {
+ reply: logs.reduce((a, b) => a + b.diffs.reply, 0),
+ renote: logs.reduce((a, b) => a + b.diffs.renote, 0),
+ normal: logs.reduce((a, b) => a + b.diffs.normal, 0),
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(group: string): Promise<DeepPartial<PerUserNotesLog>> {
const [count] = await Promise.all([
Notes.count({ userId: group }),
diff --git a/src/services/chart/charts/classes/per-user-reactions.ts b/src/services/chart/charts/classes/per-user-reactions.ts
index 124fb4153c..b4cdced40c 100644
--- a/src/services/chart/charts/classes/per-user-reactions.ts
+++ b/src/services/chart/charts/classes/per-user-reactions.ts
@@ -19,6 +19,18 @@ export default class PerUserReactionsChart extends Chart<PerUserReactionsLog> {
}
@autobind
+ protected aggregate(logs: PerUserReactionsLog[]): PerUserReactionsLog {
+ return {
+ local: {
+ count: logs.reduce((a, b) => a + b.local.count, 0),
+ },
+ remote: {
+ count: logs.reduce((a, b) => a + b.remote.count, 0),
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(group: string): Promise<DeepPartial<PerUserReactionsLog>> {
return {};
}
diff --git a/src/services/chart/charts/classes/test-grouped.ts b/src/services/chart/charts/classes/test-grouped.ts
index e32cbcf416..92c8df636e 100644
--- a/src/services/chart/charts/classes/test-grouped.ts
+++ b/src/services/chart/charts/classes/test-grouped.ts
@@ -22,6 +22,17 @@ export default class TestGroupedChart extends Chart<TestGroupedLog> {
}
@autobind
+ protected aggregate(logs: TestGroupedLog[]): TestGroupedLog {
+ return {
+ foo: {
+ total: logs[0].foo.total,
+ inc: logs.reduce((a, b) => a + b.foo.inc, 0),
+ dec: logs.reduce((a, b) => a + b.foo.dec, 0),
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(group: string): Promise<DeepPartial<TestGroupedLog>> {
return {
foo: {
diff --git a/src/services/chart/charts/classes/test-unique.ts b/src/services/chart/charts/classes/test-unique.ts
index 1eb396c293..5680d713ec 100644
--- a/src/services/chart/charts/classes/test-unique.ts
+++ b/src/services/chart/charts/classes/test-unique.ts
@@ -16,14 +16,21 @@ export default class TestUniqueChart extends Chart<TestUniqueLog> {
}
@autobind
+ protected aggregate(logs: TestUniqueLog[]): TestUniqueLog {
+ return {
+ foo: logs.reduce((a, b) => a.concat(b.foo), [] as TestUniqueLog['foo']),
+ };
+ }
+
+ @autobind
protected async fetchActual(): Promise<DeepPartial<TestUniqueLog>> {
return {};
}
@autobind
public async uniqueIncrement(key: string) {
- await this.incIfUnique({
- foo: 1
- }, 'foos', key);
+ await this.inc({
+ foo: [key]
+ });
}
}
diff --git a/src/services/chart/charts/classes/test.ts b/src/services/chart/charts/classes/test.ts
index ea64040f3e..d37d298de7 100644
--- a/src/services/chart/charts/classes/test.ts
+++ b/src/services/chart/charts/classes/test.ts
@@ -22,6 +22,17 @@ export default class TestChart extends Chart<TestLog> {
}
@autobind
+ protected aggregate(logs: TestLog[]): TestLog {
+ return {
+ foo: {
+ total: logs[0].foo.total,
+ inc: logs.reduce((a, b) => a + b.foo.inc, 0),
+ dec: logs.reduce((a, b) => a + b.foo.dec, 0),
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(): Promise<DeepPartial<TestLog>> {
return {
foo: {
diff --git a/src/services/chart/charts/classes/users.ts b/src/services/chart/charts/classes/users.ts
index 47e4caa1b7..87b19d88f9 100644
--- a/src/services/chart/charts/classes/users.ts
+++ b/src/services/chart/charts/classes/users.ts
@@ -26,6 +26,22 @@ export default class UsersChart extends Chart<UsersLog> {
}
@autobind
+ protected aggregate(logs: UsersLog[]): UsersLog {
+ return {
+ local: {
+ total: logs[0].local.total,
+ inc: logs.reduce((a, b) => a + b.local.inc, 0),
+ dec: logs.reduce((a, b) => a + b.local.dec, 0),
+ },
+ remote: {
+ total: logs[0].remote.total,
+ inc: logs.reduce((a, b) => a + b.remote.inc, 0),
+ dec: logs.reduce((a, b) => a + b.remote.dec, 0),
+ },
+ };
+ }
+
+ @autobind
protected async fetchActual(): Promise<DeepPartial<UsersLog>> {
const [localCount, remoteCount] = await Promise.all([
Users.count({ host: null }),