@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
|
});
|