@hedhog/admin 0.48.3 → 0.48.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/core.controller.d.ts +14 -1
- package/dist/core/core.controller.d.ts.map +1 -1
- package/dist/core/core.service.d.ts +16 -1
- package/dist/core/core.service.d.ts.map +1 -1
- package/dist/core/core.service.js +75 -2
- package/dist/core/core.service.js.map +1 -1
- package/package.json +1 -1
- package/src/core/core.service.ts +79 -2
|
@@ -4,6 +4,7 @@ export declare class CoreController {
|
|
|
4
4
|
constructor(service: CoreService);
|
|
5
5
|
index(): Promise<{
|
|
6
6
|
os: {
|
|
7
|
+
name: string;
|
|
7
8
|
platform: NodeJS.Platform;
|
|
8
9
|
version: string;
|
|
9
10
|
architecture: string;
|
|
@@ -25,7 +26,19 @@ export declare class CoreController {
|
|
|
25
26
|
total: number;
|
|
26
27
|
admin: number;
|
|
27
28
|
active: number;
|
|
28
|
-
activities:
|
|
29
|
+
activities: {
|
|
30
|
+
created_at: Date;
|
|
31
|
+
user: {
|
|
32
|
+
name: string;
|
|
33
|
+
id: number;
|
|
34
|
+
};
|
|
35
|
+
message: string;
|
|
36
|
+
}[];
|
|
37
|
+
};
|
|
38
|
+
database: {
|
|
39
|
+
connections: number;
|
|
40
|
+
size: number;
|
|
41
|
+
queriesPerSecond: number;
|
|
29
42
|
};
|
|
30
43
|
}>;
|
|
31
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.controller.d.ts","sourceRoot":"","sources":["../../src/core/core.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBACa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,WAAW;IAIjC,KAAK
|
|
1
|
+
{"version":3,"file":"core.controller.d.ts","sourceRoot":"","sources":["../../src/core/core.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,qBACa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,WAAW;IAIjC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGZ"}
|
|
@@ -4,6 +4,7 @@ export declare class CoreService {
|
|
|
4
4
|
constructor(prismaService: PrismaService);
|
|
5
5
|
index(): Promise<{
|
|
6
6
|
os: {
|
|
7
|
+
name: string;
|
|
7
8
|
platform: NodeJS.Platform;
|
|
8
9
|
version: string;
|
|
9
10
|
architecture: string;
|
|
@@ -25,9 +26,23 @@ export declare class CoreService {
|
|
|
25
26
|
total: number;
|
|
26
27
|
admin: number;
|
|
27
28
|
active: number;
|
|
28
|
-
activities:
|
|
29
|
+
activities: {
|
|
30
|
+
created_at: Date;
|
|
31
|
+
user: {
|
|
32
|
+
name: string;
|
|
33
|
+
id: number;
|
|
34
|
+
};
|
|
35
|
+
message: string;
|
|
36
|
+
}[];
|
|
37
|
+
};
|
|
38
|
+
database: {
|
|
39
|
+
connections: number;
|
|
40
|
+
size: number;
|
|
41
|
+
queriesPerSecond: number;
|
|
29
42
|
};
|
|
30
43
|
}>;
|
|
44
|
+
private getFriendlyOSName;
|
|
45
|
+
private getDatabaseInfo;
|
|
31
46
|
private getUsersInfo;
|
|
32
47
|
private getModulesInfo;
|
|
33
48
|
private getLatestVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.service.d.ts","sourceRoot":"","sources":["../../src/core/core.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAO/C,qBACa,WAAW;IACV,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAE1C,KAAK
|
|
1
|
+
{"version":3,"file":"core.service.d.ts","sourceRoot":"","sources":["../../src/core/core.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAO/C,qBACa,WAAW;IACV,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAE1C,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsBX,OAAO,CAAC,iBAAiB;YAqBX,eAAe;YAgCf,YAAY;YA4CZ,cAAc;YAoCd,gBAAgB;IAkB9B,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,aAAa;YAOP,WAAW;IA2BzB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,iBAAiB;CAkB1B"}
|
|
@@ -59,6 +59,7 @@ let CoreService = class CoreService {
|
|
|
59
59
|
const averageSpeed = totalSpeed / cpus.length;
|
|
60
60
|
return {
|
|
61
61
|
os: {
|
|
62
|
+
name: this.getFriendlyOSName(),
|
|
62
63
|
platform: os.platform(),
|
|
63
64
|
version: os.release(),
|
|
64
65
|
architecture: os.arch(),
|
|
@@ -69,6 +70,57 @@ let CoreService = class CoreService {
|
|
|
69
70
|
},
|
|
70
71
|
modules: await this.getModulesInfo(),
|
|
71
72
|
users: await this.getUsersInfo(),
|
|
73
|
+
database: await this.getDatabaseInfo(),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
getFriendlyOSName() {
|
|
77
|
+
switch (os.platform()) {
|
|
78
|
+
case 'aix':
|
|
79
|
+
return `AIX`;
|
|
80
|
+
case 'darwin':
|
|
81
|
+
return `macOS`;
|
|
82
|
+
case 'freebsd':
|
|
83
|
+
return `FreeBSD`;
|
|
84
|
+
case 'linux':
|
|
85
|
+
return `Linux`;
|
|
86
|
+
case 'openbsd':
|
|
87
|
+
return `OpenBSD`;
|
|
88
|
+
case 'sunos':
|
|
89
|
+
return `SunOS`;
|
|
90
|
+
case 'win32':
|
|
91
|
+
return `Windows`;
|
|
92
|
+
default:
|
|
93
|
+
return `Unknown`;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async getDatabaseInfo() {
|
|
97
|
+
let connections, size, queriesPerSecond;
|
|
98
|
+
if (process.env.DATABASE_URL.includes('postgres')) {
|
|
99
|
+
[connections, size, queriesPerSecond] = await Promise.all([
|
|
100
|
+
this.prismaService.$queryRaw `SELECT COUNT(*) FROM pg_stat_activity`, // For PostgreSQL
|
|
101
|
+
this.prismaService
|
|
102
|
+
.$queryRaw `SELECT pg_database_size(current_database())`, // For PostgreSQL
|
|
103
|
+
this.prismaService
|
|
104
|
+
.$queryRaw `SELECT sum(numbackends) FROM pg_stat_database`, // For PostgreSQL
|
|
105
|
+
]);
|
|
106
|
+
}
|
|
107
|
+
else if (process.env.DATABASE_URL.includes('mysql')) {
|
|
108
|
+
[connections, size, queriesPerSecond] = await Promise.all([
|
|
109
|
+
this.prismaService
|
|
110
|
+
.$queryRaw `SHOW STATUS WHERE variable_name = 'Threads_connected'`, // For MySQL
|
|
111
|
+
this.prismaService
|
|
112
|
+
.$queryRaw `SELECT SUM(data_length + index_length) AS size FROM information_schema.tables WHERE table_schema = DATABASE()`, // For MySQL
|
|
113
|
+
this.prismaService
|
|
114
|
+
.$queryRaw `SHOW STATUS WHERE variable_name = 'Queries'`, // For MySQL
|
|
115
|
+
]);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
throw new Error('Unsupported database type');
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
connections: +String(connections[0].count || connections[0].Value) || 0,
|
|
122
|
+
size: +String(size[0].pg_database_size || size[0].size) || 0,
|
|
123
|
+
queriesPerSecond: +String(queriesPerSecond[0].sum || queriesPerSecond[0].Value) || 0,
|
|
72
124
|
};
|
|
73
125
|
}
|
|
74
126
|
async getUsersInfo() {
|
|
@@ -84,11 +136,32 @@ let CoreService = class CoreService {
|
|
|
84
136
|
},
|
|
85
137
|
},
|
|
86
138
|
});
|
|
139
|
+
const activities = await this.prismaService.user_activity.findMany({
|
|
140
|
+
where: {
|
|
141
|
+
created_at: {
|
|
142
|
+
gte: new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000),
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
take: 10,
|
|
146
|
+
orderBy: {
|
|
147
|
+
created_at: 'desc',
|
|
148
|
+
},
|
|
149
|
+
select: {
|
|
150
|
+
created_at: true,
|
|
151
|
+
message: true,
|
|
152
|
+
user: {
|
|
153
|
+
select: {
|
|
154
|
+
name: true,
|
|
155
|
+
id: true,
|
|
156
|
+
},
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
});
|
|
87
160
|
return {
|
|
88
161
|
total: users.length,
|
|
89
162
|
admin: users.filter((user) => user.role_user.length > 0).length,
|
|
90
163
|
active: 0,
|
|
91
|
-
activities
|
|
164
|
+
activities,
|
|
92
165
|
};
|
|
93
166
|
}
|
|
94
167
|
async getModulesInfo() {
|
|
@@ -192,7 +265,7 @@ let CoreService = class CoreService {
|
|
|
192
265
|
const parts = lines[i].trim().split(/\s+/);
|
|
193
266
|
if (parts.length === 3) {
|
|
194
267
|
result.push({
|
|
195
|
-
filesystem: parts[0],
|
|
268
|
+
filesystem: parts[0].replace(':', ''),
|
|
196
269
|
size: parseInt(parts[1], 10),
|
|
197
270
|
free: parseInt(parts[2], 10),
|
|
198
271
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.service.js","sourceRoot":"","sources":["../../src/core/core.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA+C;AAC/C,2CAA4C;AAC5C,iDAAqC;AACrC,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAGtB,IAAM,WAAW,GAAjB,MAAM,WAAW;IACtB,YAAoB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAEpD,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,YAAY,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAE9C,OAAO;YACL,EAAE,EAAE;gBACF,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;gBACvB,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE;gBACrB,YAAY,EAAE,EAAE,CAAC,IAAI,EAAE;gBACvB,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE;gBACnB,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC;gBACxC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC5B,IAAI,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;aAC/B;YACD,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,EAAE;YACpC,KAAK,EAAE,MAAM,IAAI,CAAC,YAAY,EAAE;
|
|
1
|
+
{"version":3,"file":"core.service.js","sourceRoot":"","sources":["../../src/core/core.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/core/core.service.ts
CHANGED
|
@@ -16,6 +16,7 @@ export class CoreService {
|
|
|
16
16
|
|
|
17
17
|
return {
|
|
18
18
|
os: {
|
|
19
|
+
name: this.getFriendlyOSName(),
|
|
19
20
|
platform: os.platform(),
|
|
20
21
|
version: os.release(),
|
|
21
22
|
architecture: os.arch(),
|
|
@@ -26,6 +27,60 @@ export class CoreService {
|
|
|
26
27
|
},
|
|
27
28
|
modules: await this.getModulesInfo(),
|
|
28
29
|
users: await this.getUsersInfo(),
|
|
30
|
+
database: await this.getDatabaseInfo(),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
private getFriendlyOSName() {
|
|
35
|
+
switch (os.platform()) {
|
|
36
|
+
case 'aix':
|
|
37
|
+
return `AIX`;
|
|
38
|
+
case 'darwin':
|
|
39
|
+
return `macOS`;
|
|
40
|
+
case 'freebsd':
|
|
41
|
+
return `FreeBSD`;
|
|
42
|
+
case 'linux':
|
|
43
|
+
return `Linux`;
|
|
44
|
+
case 'openbsd':
|
|
45
|
+
return `OpenBSD`;
|
|
46
|
+
case 'sunos':
|
|
47
|
+
return `SunOS`;
|
|
48
|
+
case 'win32':
|
|
49
|
+
return `Windows`;
|
|
50
|
+
default:
|
|
51
|
+
return `Unknown`;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
private async getDatabaseInfo() {
|
|
56
|
+
let connections, size, queriesPerSecond;
|
|
57
|
+
|
|
58
|
+
if (process.env.DATABASE_URL.includes('postgres')) {
|
|
59
|
+
[connections, size, queriesPerSecond] = await Promise.all([
|
|
60
|
+
this.prismaService.$queryRaw`SELECT COUNT(*) FROM pg_stat_activity`, // For PostgreSQL
|
|
61
|
+
this.prismaService
|
|
62
|
+
.$queryRaw`SELECT pg_database_size(current_database())`, // For PostgreSQL
|
|
63
|
+
this.prismaService
|
|
64
|
+
.$queryRaw`SELECT sum(numbackends) FROM pg_stat_database`, // For PostgreSQL
|
|
65
|
+
]);
|
|
66
|
+
} else if (process.env.DATABASE_URL.includes('mysql')) {
|
|
67
|
+
[connections, size, queriesPerSecond] = await Promise.all([
|
|
68
|
+
this.prismaService
|
|
69
|
+
.$queryRaw`SHOW STATUS WHERE variable_name = 'Threads_connected'`, // For MySQL
|
|
70
|
+
this.prismaService
|
|
71
|
+
.$queryRaw`SELECT SUM(data_length + index_length) AS size FROM information_schema.tables WHERE table_schema = DATABASE()`, // For MySQL
|
|
72
|
+
this.prismaService
|
|
73
|
+
.$queryRaw`SHOW STATUS WHERE variable_name = 'Queries'`, // For MySQL
|
|
74
|
+
]);
|
|
75
|
+
} else {
|
|
76
|
+
throw new Error('Unsupported database type');
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return {
|
|
80
|
+
connections: +String(connections[0].count || connections[0].Value) || 0,
|
|
81
|
+
size: +String(size[0].pg_database_size || size[0].size) || 0,
|
|
82
|
+
queriesPerSecond:
|
|
83
|
+
+String(queriesPerSecond[0].sum || queriesPerSecond[0].Value) || 0,
|
|
29
84
|
};
|
|
30
85
|
}
|
|
31
86
|
|
|
@@ -43,11 +98,33 @@ export class CoreService {
|
|
|
43
98
|
},
|
|
44
99
|
});
|
|
45
100
|
|
|
101
|
+
const activities = await this.prismaService.user_activity.findMany({
|
|
102
|
+
where: {
|
|
103
|
+
created_at: {
|
|
104
|
+
gte: new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000),
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
take: 10,
|
|
108
|
+
orderBy: {
|
|
109
|
+
created_at: 'desc',
|
|
110
|
+
},
|
|
111
|
+
select: {
|
|
112
|
+
created_at: true,
|
|
113
|
+
message: true,
|
|
114
|
+
user: {
|
|
115
|
+
select: {
|
|
116
|
+
name: true,
|
|
117
|
+
id: true,
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
|
|
46
123
|
return {
|
|
47
124
|
total: users.length,
|
|
48
125
|
admin: users.filter((user) => user.role_user.length > 0).length,
|
|
49
126
|
active: 0,
|
|
50
|
-
activities
|
|
127
|
+
activities,
|
|
51
128
|
};
|
|
52
129
|
}
|
|
53
130
|
|
|
@@ -167,7 +244,7 @@ export class CoreService {
|
|
|
167
244
|
const parts = lines[i].trim().split(/\s+/);
|
|
168
245
|
if (parts.length === 3) {
|
|
169
246
|
result.push({
|
|
170
|
-
filesystem: parts[0],
|
|
247
|
+
filesystem: parts[0].replace(':', ''),
|
|
171
248
|
size: parseInt(parts[1], 10),
|
|
172
249
|
free: parseInt(parts[2], 10),
|
|
173
250
|
});
|