Skip to content

Commit 4a0006b

Browse files
committed
feat: add topNodesLimit parameter to bandwidth stats commands
1 parent bf81a87 commit 4a0006b

File tree

7 files changed

+26
-3
lines changed

7 files changed

+26
-3
lines changed

libs/contract/commands/bandwidth-stats/nodes/get-stats-nodes-usage.command.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export namespace GetStatsNodesUsageCommand {
1616
export const RequestQuerySchema = z.object({
1717
start: z.string().date(),
1818
end: z.string().date(),
19+
topNodesLimit: z.coerce.number().min(1).default(20),
1920
});
2021

2122
export type RequestQuery = z.infer<typeof RequestQuerySchema>;

libs/contract/commands/bandwidth-stats/users/get-stats-user-usage.command.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export namespace GetStatsUserUsageCommand {
2222
export const RequestQuerySchema = z.object({
2323
start: z.string().date(),
2424
end: z.string().date(),
25+
topNodesLimit: z.coerce.number().min(1).default(20),
2526
});
2627

2728
export type RequestQuery = z.infer<typeof RequestQuerySchema>;

libs/contract/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@remnawave/backend-contract",
3-
"version": "2.4.0",
3+
"version": "2.4.1",
44
"public": true,
55
"license": "AGPL-3.0-only",
66
"description": "A contract library for Remnawave Backend. It can be used in backend and frontend.",

src/modules/nodes-usage-history/nodes-usage-history.controller.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,26 @@ export class NodesUsageHistoryController {
3939
description: 'Start date',
4040
required: true,
4141
})
42+
@ApiQuery({
43+
name: 'topNodesLimit',
44+
type: Number,
45+
description: 'Limit of top nodes to return',
46+
required: true,
47+
})
4248
@Endpoint({
4349
command: GetStatsNodesUsageCommand,
4450
httpCode: HttpStatus.OK,
4551
})
4652
async getStatsNodesUsage(
4753
@Query() query: GetStatsNodesUsageRequestQueryDto,
4854
): Promise<GetStatsNodesUsageResponseDto> {
49-
const { start, end } = query;
55+
const { start, end, topNodesLimit } = query;
5056

51-
const result = await this.nodesUsageHistoryService.getStatsNodesUsage(start, end);
57+
const result = await this.nodesUsageHistoryService.getStatsNodesUsage(
58+
start,
59+
end,
60+
topNodesLimit,
61+
);
5262

5363
const data = errorHandler(result);
5464
return {

src/modules/nodes-usage-history/nodes-usage-history.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export class NodesUsageHistoryService {
1717
async getStatsNodesUsage(
1818
start: string,
1919
end: string,
20+
topNodesLimit: number,
2021
): Promise<TResult<GetStatsNodesUsageResponseModel>> {
2122
try {
2223
const { startDate, endDate, dates } = getDateRangeArrayUtil(
@@ -33,6 +34,7 @@ export class NodesUsageHistoryService {
3334
const topNodes = await this.nodeUsageHistoryRepository.getTopNodesByTraffic(
3435
startDate,
3536
endDate,
37+
topNodesLimit,
3638
);
3739

3840
const nodesUsage = await this.nodeUsageHistoryRepository.getNodesUsageByRange(

src/modules/nodes-user-usage-history/bandwidth-stats-users.controller.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,12 @@ export class BandwidthStatsUsersController {
9797
description: 'Start date',
9898
required: true,
9999
})
100+
@ApiQuery({
101+
name: 'topNodesLimit',
102+
type: Number,
103+
description: 'Limit of top nodes to return',
104+
required: true,
105+
})
100106
@Endpoint({
101107
command: GetStatsUserUsageCommand,
102108
httpCode: HttpStatus.OK,
@@ -109,6 +115,7 @@ export class BandwidthStatsUsersController {
109115
paramData.uuid,
110116
query.start,
111117
query.end,
118+
query.topNodesLimit,
112119
);
113120

114121
const data = errorHandler(result);

src/modules/nodes-user-usage-history/nodes-user-usage-history.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ export class NodesUserUsageHistoryService {
9191
uuid: string,
9292
start: string,
9393
end: string,
94+
topNodesLimit: number,
9495
): Promise<TResult<GetStatsUserUsageResponseModel>> {
9596
try {
9697
const user = await this.queryBus.execute(new GetUserByUniqueFieldQuery({ uuid }));
@@ -114,6 +115,7 @@ export class NodesUserUsageHistoryService {
114115
user.response.tId,
115116
startDate,
116117
endDate,
118+
topNodesLimit,
117119
);
118120

119121
const nodesUsage = await this.nodeUserUsageHistoryRepository.getUserNodesUsageByRange(

0 commit comments

Comments
 (0)