Skip to content

Commit e3904fc

Browse files
committed
feat: add providers
1 parent 300e0f8 commit e3904fc

File tree

7 files changed

+78
-3
lines changed

7 files changed

+78
-3
lines changed

src/handlers/carts/carts.controller.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ import { UpdateCartDto } from './dto/update-cart.dto';
77
export class CartsController {
88
constructor(private readonly cartsService: CartsService) {}
99

10+
@Get('/average')
11+
average() {
12+
return this.cartsService.average();
13+
}
14+
1015
@Post()
1116
create(@Body() createCartDto: CreateCartDto) {
1217
return this.cartsService.create(createCartDto);

src/handlers/carts/carts.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { Module } from '@nestjs/common';
22
import { CartsService } from './carts.service';
33
import { CartsController } from './carts.controller';
4+
import { UtilsModule } from '../../services/utils/utils.module';
45

56
@Module({
7+
imports: [UtilsModule],
68
controllers: [CartsController],
79
providers: [CartsService]
810
})

src/handlers/carts/carts.service.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
1-
import { Injectable } from '@nestjs/common';
1+
import { Inject, Injectable } from '@nestjs/common';
22
import { CreateCartDto } from './dto/create-cart.dto';
33
import { UpdateCartDto } from './dto/update-cart.dto';
4+
import { UtilsService } from '../../services/utils/utils.service';
45

56
@Injectable()
67
export class CartsService {
8+
constructor(
9+
private readonly utilsService: UtilsService,
10+
11+
@Inject('DateService')
12+
private readonly DateService,
13+
) {}
14+
15+
average() {
16+
return this.utilsService.average([1,2,3]);
17+
}
718
create(createCartDto: CreateCartDto) {
819
return 'This action adds a new cart';
920
}
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { PartialType } from '@nestjs/mapped-types';
21
import { CreateCartDto } from './create-cart.dto';
32

4-
export class UpdateCartDto extends PartialType(CreateCartDto) {}
3+
export class UpdateCartDto extends CreateCartDto {}

src/services/utils/utils.constants.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export const PRECISION = 2;
2+
export const START_DATE = new Date().getTime();
3+

src/services/utils/utils.module.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { Module, Scope } from '@nestjs/common';
2+
import { UtilsService } from './utils.service';
3+
import { START_DATE, PRECISION } from './utils.constants';
4+
5+
@Module({
6+
providers: [
7+
UtilsService,
8+
{
9+
provide: 'Constants',
10+
useValue: {
11+
START_DATE,
12+
PRECISION,
13+
}
14+
},
15+
{
16+
provide: 'DateService',
17+
useFactory(constants) {
18+
console.log('Date service was created')
19+
20+
return {
21+
getCurrentDate() {
22+
return new Date();
23+
},
24+
getTimeFromStart() {
25+
return new Date().getTime() - constants.START_DATE;
26+
}
27+
}
28+
},
29+
inject: ['Constants'],
30+
scope: Scope.TRANSIENT
31+
}
32+
],
33+
exports: [UtilsService, 'DateService'],
34+
})
35+
export class UtilsModule {}

src/services/utils/utils.service.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { Inject, Injectable, Scope } from '@nestjs/common';
2+
3+
@Injectable({ scope: Scope.DEFAULT })
4+
export class UtilsService {
5+
constructor(
6+
@Inject('Constants')
7+
private readonly constants,
8+
9+
@Inject('DateService')
10+
private readonly dateService,
11+
) {
12+
console.log('Utility service was created');
13+
console.log(dateService.getTimeFromStart());
14+
}
15+
average(array: number[]): number {
16+
const average = array.reduce((acc, item) => acc + item, 0) / array.length;
17+
18+
return +average.toFixed(this.constants.PRECISION);
19+
}
20+
}

0 commit comments

Comments
 (0)