Skip to content

Commit d3dcbdf

Browse files
committed
feat(database): add more database feature
1 parent fd5b5f2 commit d3dcbdf

File tree

7 files changed

+30
-11
lines changed

7 files changed

+30
-11
lines changed

src/infra/database/mongo/config.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import 'dotenv/config';
22

3-
import { green } from 'colorette';
43
import { mongoMigrateCli } from 'mongo-migrate-ts';
54
import path from 'path';
65

7-
// eslint-disable-next-line no-console
8-
console.log(green(`ENV: ${process.env['NODE_ENV']} mongo migration running.\n`));
6+
import { LoggerService } from '@/infra/logger';
7+
8+
LoggerService.log(`ENV: ${process.env['NODE_ENV']} mongo migration running.\n`);
99

1010
mongoMigrateCli({
1111
uri: process.env['MONGO_URL'],

src/infra/database/mongo/module.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ import { MongoService } from './service';
4242
return connection;
4343
},
4444
uri: connection.uri,
45+
useNewUrlParser: true,
46+
useUnifiedTopology: true,
47+
minPoolSize: 10,
48+
serverSelectionTimeoutMS: 5000,
49+
socketTimeoutMS: 5000,
50+
readPreference: 'secondaryPreferred', // Per
4551
appName: name
4652
};
4753
},

src/infra/database/postgres/module.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ import { PostgresService } from './service';
2626
entities: [path.join(__dirname, '/schemas/*.{ts,js}')],
2727
applicationName: name,
2828
extra: {
29-
connectionTimeoutMillis: 10000
29+
connectionTimeoutMillis: 10000,
30+
idleTimeoutMillis: 30000,
31+
max: 90,
32+
min: 10
3033
}
3134
};
3235
},

src/infra/logger/service.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,18 @@ import { DateUtils } from '@/utils/date';
1111
import { ApiBadRequestException, ApiInternalServerException, BaseException } from '@/utils/exception';
1212
import { UUIDUtils } from '@/utils/uuid';
1313

14+
import { name } from '../../../package.json';
1415
import { ILoggerAdapter } from './adapter';
1516
import { ErrorType, MessageType } from './types';
1617

1718
@Injectable({ scope: Scope.REQUEST })
1819
export class LoggerService implements ILoggerAdapter {
20+
static log(message: string) {
21+
const timestamp = DateUtils.getDateStringWithFormat();
22+
// eslint-disable-next-line no-console
23+
console.log(`${gray('TRACE')} [${timestamp}]: [${blue(name)}] ${green(message)}`);
24+
}
25+
1926
private app!: string;
2027

2128
logger!: HttpLogger;
@@ -44,7 +51,7 @@ export class LoggerService implements ILoggerAdapter {
4451
}
4552

4653
log(message: string): void {
47-
this.logger.logger.trace(green(message));
54+
LoggerService.log(message);
4855
}
4956

5057
debug({ message, context, obj = {} }: MessageType): void {

src/utils/decorators/log-execution-time.decorator.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { performance } from 'node:perf_hooks';
22

33
import { yellow } from 'colorette';
44

5+
import { LoggerService } from '@/infra/logger';
6+
57
export function LogExecutionTime(target: object, propertyKey: string, descriptor: PropertyDescriptor): void {
68
const originalMethod = descriptor.value;
79

@@ -11,7 +13,7 @@ export function LogExecutionTime(target: object, propertyKey: string, descriptor
1113
const className = target.constructor.name;
1214
const methodName = propertyKey;
1315
const end = performance.now();
14-
console.log(yellow(`Function ${className}/${methodName} took ${(end - start).toFixed(3)}ms to execute.`)); // eslint-disable-line no-console
16+
LoggerService.log(yellow(`Function ${className}/${methodName} took ${(end - start).toFixed(3)}ms to execute.`));
1517
return result;
1618
};
1719
}

src/utils/tracing.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import { RedisInstrumentation } from '@opentelemetry/instrumentation-redis-4';
1111
import { Resource } from '@opentelemetry/resources';
1212
import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
1313
import { NodeSDK } from '@opentelemetry/sdk-node';
14-
import { green, red } from 'colorette';
14+
import { red } from 'colorette';
15+
16+
import { LoggerService } from '@/infra/logger';
1517

1618
import { name, version } from '../../package.json';
1719
import { getPathWithoutUUID } from './request';
@@ -83,8 +85,7 @@ const sdk = new NodeSDK({
8385
const start = () => {
8486
try {
8587
sdk.start();
86-
// eslint-disable-next-line no-console
87-
console.log(green('Tracing started.'));
88+
LoggerService.log('Tracing started.');
8889
} catch (error) {
8990
console.error(red('Tracing start error '), error);
9091
}

test/containers.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { SnakeNamingStrategy } from 'typeorm-naming-strategies';
1010
import { RedisService } from '@/infra/cache/redis';
1111
import { ConnectionName } from '@/infra/database/enum';
1212
import { PostgresService } from '@/infra/database/postgres';
13-
import { ILoggerAdapter } from '@/infra/logger';
13+
import { ILoggerAdapter, LoggerService } from '@/infra/logger';
1414

1515
export class TestMongoContainer {
1616
mongoContainer!: StartedMongoDBContainer;
@@ -73,7 +73,7 @@ export class TestRedisContainer {
7373
client!: RedisClientType;
7474

7575
getTestRedis = async (): Promise<RedisService> => {
76-
const logger: ILoggerAdapter = { error: console.error, log: console.log } as ILoggerAdapter;
76+
const logger: ILoggerAdapter = { error: console.error, log: LoggerService.log } as ILoggerAdapter;
7777
this.redisContainer = await new RedisContainer().start();
7878
this.client = createClient({ url: this.redisContainer.getConnectionUrl() }) as RedisClientType;
7979
await this.client.connect();

0 commit comments

Comments
 (0)