Skip to content

Commit 13acc74

Browse files
committed
chore: enhance stats response model
1 parent 667f5f3 commit 13acc74

File tree

19 files changed

+115
-27
lines changed

19 files changed

+115
-27
lines changed

libs/contract/commands/system/get-stats.command.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ export namespace GetStatsCommand {
5050
}),
5151
nodes: z.object({
5252
totalOnline: z.number(),
53+
totalBytesLifetime: z.string(),
5354
}),
5455
}),
5556
});

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.3.5",
3+
"version": "2.3.6",
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/bin/cli/cli.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
#!/usr/bin/env node
22

33
import { Prisma, PrismaClient } from '@prisma/client';
4+
import relativeTime from 'dayjs/plugin/relativeTime';
5+
import timezone from 'dayjs/plugin/timezone';
6+
import utc from 'dayjs/plugin/utc';
47
import consola from 'consola';
58
import Redis from 'ioredis';
9+
import dayjs from 'dayjs';
610

711
import { encodeCertPayload } from '@common/utils/certs/encode-node-payload';
812
import { generateNodeCert } from '@common/utils/certs';
913
import { CACHE_KEYS } from '@libs/contracts/constants';
1014

15+
dayjs.extend(utc);
16+
dayjs.extend(relativeTime);
17+
dayjs.extend(timezone);
18+
1119
const prisma = new PrismaClient({
1220
datasources: {
1321
db: {

src/bin/gen-doc/gen-doc.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@ process.env.INSTANCE_TYPE = 'api';
1313

1414
import { utilities as nestWinstonModuleUtilities, WinstonModule } from 'nest-winston';
1515
import { patchNestJsSwagger, ZodValidationPipe } from 'nestjs-zod';
16+
import relativeTime from 'dayjs/plugin/relativeTime';
17+
import timezone from 'dayjs/plugin/timezone';
1618
import { createLogger } from 'winston';
1719
import * as winston from 'winston';
20+
import utc from 'dayjs/plugin/utc';
21+
import dayjs from 'dayjs';
1822

1923
import { ROOT } from '@contract/api';
2024

@@ -25,6 +29,10 @@ import { isDevelopment } from '@common/utils/startup-app';
2529

2630
import { AppModule } from '../../app.module';
2731

32+
dayjs.extend(utc);
33+
dayjs.extend(relativeTime);
34+
dayjs.extend(timezone);
35+
2836
patchNestJsSwagger();
2937

3038
// const levels = {

src/bin/processors/processors.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
};
44

55
import { utilities as nestWinstonModuleUtilities, WinstonModule } from 'nest-winston';
6+
import relativeTime from 'dayjs/plugin/relativeTime';
7+
import timezone from 'dayjs/plugin/timezone';
68
import { createLogger } from 'winston';
79
import * as winston from 'winston';
10+
import utc from 'dayjs/plugin/utc';
11+
import dayjs from 'dayjs';
812

913
import { NestFactory } from '@nestjs/core';
1014

@@ -17,6 +21,10 @@ import { METRICS_ROOT } from '@libs/contracts/api';
1721

1822
import { ProcessorsRootModule } from './processors.root.module';
1923

24+
dayjs.extend(utc);
25+
dayjs.extend(relativeTime);
26+
dayjs.extend(timezone);
27+
2028
// const levels = {
2129
// error: 0,
2230
// warn: 1,

src/bin/scheduler/scheduler.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,15 @@
33
};
44

55
import { utilities as nestWinstonModuleUtilities, WinstonModule } from 'nest-winston';
6+
import relativeTime from 'dayjs/plugin/relativeTime';
7+
import timezone from 'dayjs/plugin/timezone';
68
import { createLogger } from 'winston';
79
import compression from 'compression';
810
import * as winston from 'winston';
11+
import utc from 'dayjs/plugin/utc';
912
import { json } from 'express';
1013
import helmet from 'helmet';
14+
import dayjs from 'dayjs';
1115

1216
import { ConfigService } from '@nestjs/config';
1317
import { NestFactory } from '@nestjs/core';
@@ -21,6 +25,10 @@ import { BULLBOARD_ROOT, HEALTH_ROOT, METRICS_ROOT } from '@libs/contracts/api';
2125

2226
import { SchedulerRootModule } from './scheduler.root.module';
2327

28+
dayjs.extend(utc);
29+
dayjs.extend(relativeTime);
30+
dayjs.extend(timezone);
31+
2432
// const levels = {
2533
// error: 0,
2634
// warn: 1,

src/common/utils/get-date-ranges.uti.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
1-
import timezone from 'dayjs/plugin/timezone';
2-
import utc from 'dayjs/plugin/utc';
31
import dayjs from 'dayjs';
42

5-
dayjs.extend(utc);
6-
dayjs.extend(timezone);
7-
83
export function getCalendarMonthRanges(timezone: string): [[Date, Date], [Date, Date]] {
94
const now = dayjs().tz(timezone);
105

src/main.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,16 @@
44

55
import { utilities as nestWinstonModuleUtilities, WinstonModule } from 'nest-winston';
66
import { patchNestJsSwagger, ZodValidationPipe } from 'nestjs-zod';
7+
import relativeTime from 'dayjs/plugin/relativeTime';
8+
import timezone from 'dayjs/plugin/timezone';
79
import { createLogger } from 'winston';
810
import compression from 'compression';
911
import * as winston from 'winston';
12+
import utc from 'dayjs/plugin/utc';
1013
import { json } from 'express';
1114
import helmet from 'helmet';
1215
import morgan from 'morgan';
16+
import dayjs from 'dayjs';
1317

1418
import { ROOT } from '@contract/api';
1519

@@ -25,6 +29,10 @@ import { AxiosService } from '@common/axios';
2529

2630
import { AppModule } from './app.module';
2731

32+
dayjs.extend(utc);
33+
dayjs.extend(relativeTime);
34+
dayjs.extend(timezone);
35+
2836
patchNestJsSwagger();
2937

3038
// const levels = {

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import relativeTime from 'dayjs/plugin/relativeTime';
2-
import utc from 'dayjs/plugin/utc';
31
import dayjs from 'dayjs';
42

53
import { Injectable, Logger } from '@nestjs/common';
@@ -10,9 +8,6 @@ import { ERRORS } from '@libs/contracts/constants';
108
import { GetNodesUsageByRangeResponseModel } from './models/get-nodes-usage-by-range.response.model';
119
import { NodesUsageHistoryRepository } from './repositories/nodes-usage-history.repository';
1210

13-
dayjs.extend(utc);
14-
dayjs.extend(relativeTime);
15-
1611
@Injectable()
1712
export class NodesUsageHistoryService {
1813
private readonly logger = new Logger(NodesUsageHistoryService.name);
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { IQueryHandler, QueryHandler } from '@nestjs/cqrs';
2+
import { Logger } from '@nestjs/common';
3+
4+
import { ERRORS } from '@libs/contracts/constants';
5+
6+
import { NodesUsageHistoryRepository } from '../../repositories/nodes-usage-history.repository';
7+
import { GetSumLifetimeQuery } from './get-sum-lifetime.query';
8+
9+
@QueryHandler(GetSumLifetimeQuery)
10+
export class GetSumLifetimeHandler implements IQueryHandler<GetSumLifetimeQuery> {
11+
private readonly logger = new Logger(GetSumLifetimeHandler.name);
12+
constructor(private readonly nodesUsageHistoryRepository: NodesUsageHistoryRepository) {}
13+
14+
async execute() {
15+
try {
16+
const sum = await this.nodesUsageHistoryRepository.getSumLifetime();
17+
18+
return {
19+
isOk: true,
20+
response: {
21+
totalBytes: sum,
22+
},
23+
};
24+
} catch (error) {
25+
this.logger.error(error);
26+
return {
27+
isOk: false,
28+
...ERRORS.INTERNAL_SERVER_ERROR,
29+
};
30+
}
31+
}
32+
}

0 commit comments

Comments
 (0)