Skip to content
This repository was archived by the owner on Mar 13, 2024. It is now read-only.

Commit 3d5f7cf

Browse files
committed
Employee rework: entities, repositories, mappers
1 parent 1847e5c commit 3d5f7cf

26 files changed

+374
-127
lines changed

sdk/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@next-orders/api-sdk",
3-
"version": "0.3.5",
3+
"version": "0.3.6",
44
"description": "TS Lib: Easy ability to make requests to Main API via NPM package. 100% typed.",
55
"scripts": {
66
"build": "tsup",

sdk/types/objects.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ export type Employee = {
4646
createdAt: Date;
4747
updatedAt: Date;
4848
lastLogin: Date | null;
49-
permissions: EmployeePermission[];
5049
};
5150

5251
export type EmployeePermission = {
5352
id: string;
5453
type: EmployeePermissionType;
54+
employeeId: string;
5555
};
5656

5757
export type EmployeePermissionType =
@@ -66,9 +66,20 @@ export type EmployeePermissionType =
6666
| 'READ_MENUS'
6767
| 'EDIT_MENUS';
6868

69+
export type EmployeePassword = {
70+
id: string;
71+
hash: string;
72+
createdAt: Date;
73+
updatedAt: Date;
74+
employeeId: string;
75+
};
76+
6977
export type EmployeeContact = {
7078
id: string;
7179
type: EmployeeContactType;
80+
employeeId: string;
81+
value: string;
82+
isUsedForAuthentication: boolean;
7283
};
7384

7485
export type EmployeeContactType = 'EMAIL';

src/core/channel/channel.controller.ts

+8-9
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,21 @@ import { Permissions, Public } from '@/core/auth/auth.decorator';
1111
import { ChannelService } from '@/core/channel/channel.service';
1212
import { CreateChannelDto } from '@/core/channel/dto/create-channel.dto';
1313
import { ChannelCreateResponse } from '../../../sdk/endpoints';
14+
import { Channel } from '@api-sdk';
1415

1516
@Controller('channel')
1617
export class ChannelController {
1718
constructor(private readonly service: ChannelService) {}
1819

1920
@Public()
2021
@Get('list')
21-
async findAllChannels() {
22-
const channels = await this.service.findAllChannels();
23-
if (!channels) {
24-
throw new NotFoundException();
25-
}
26-
27-
return channels;
22+
findAllChannels(): Promise<Channel[]> {
23+
return this.service.findAllChannels();
2824
}
2925

3026
@Public()
3127
@Get(':id')
32-
async findChannelById(@Param('id') id: string) {
28+
async findChannelById(@Param('id') id: string): Promise<Channel> {
3329
const channel = await this.service.findChannelById(id);
3430
if (!channel) {
3531
throw new NotFoundException();
@@ -48,6 +44,9 @@ export class ChannelController {
4844
throw new BadRequestException();
4945
}
5046

51-
return created;
47+
return {
48+
ok: true,
49+
result: created,
50+
};
5251
}
5352
}

src/core/channel/channel.mapper.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Injectable } from '@nestjs/common';
2-
import { ChannelEntity } from '@/core/channel/channel.entity';
2+
import { ChannelEntity } from '@/core/channel/entities';
33
import { CountryCode, CurrencyCode, LanguageCode } from '@api-sdk';
44
import { PrismaModels } from '@/db/prisma.service';
55

src/core/channel/channel.repository.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Injectable } from '@nestjs/common';
22
import { PrismaService } from '@/db/prisma.service';
3-
import { ChannelEntity } from '@/core/channel/channel.entity';
3+
import { ChannelEntity } from '@/core/channel/entities';
44
import { ChannelMapper } from '@/core/channel/channel.mapper';
55

66
@Injectable()

src/core/channel/channel.service.spec.ts

+1-4
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,7 @@ describe('ChannelService', () => {
9797
repo.create.mockResolvedValueOnce(testChannelEntity);
9898

9999
const result = await service.createChannel(testCreateChannelDto);
100-
expect(result).toMatchObject({
101-
ok: true,
102-
result: testChannelEntity,
103-
});
100+
expect(result).toMatchObject(testChannelEntity);
104101
});
105102
});
106103
});

src/core/channel/channel.service.ts

+9-10
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
import { Injectable } from '@nestjs/common';
2-
import { Channel, CountryCode, CurrencyCode, LanguageCode } from '@api-sdk';
2+
import type {
3+
Channel,
4+
CountryCode,
5+
CurrencyCode,
6+
LanguageCode,
7+
} from '@api-sdk';
38
import { CreateChannelDto } from '@/core/channel/dto/create-channel.dto';
49
import { ChannelRepository } from '@/core/channel/channel.repository';
5-
import { ChannelEntity } from '@/core/channel/channel.entity';
6-
import { ChannelCreateResponse } from '../../../sdk/endpoints';
10+
import { ChannelEntity } from '@/core/channel/entities';
711

812
@Injectable()
913
export class ChannelService {
@@ -17,7 +21,7 @@ export class ChannelService {
1721
return this.repository.findById(id);
1822
}
1923

20-
async createChannel(dto: CreateChannelDto): Promise<ChannelCreateResponse> {
24+
async createChannel(dto: CreateChannelDto): Promise<Channel> {
2125
const channelEntity = new ChannelEntity({
2226
slug: dto.slug,
2327
name: dto.name,
@@ -27,11 +31,6 @@ export class ChannelService {
2731
countryCode: dto.countryCode as CountryCode,
2832
});
2933

30-
const created = await this.repository.create(channelEntity);
31-
32-
return {
33-
ok: true,
34-
result: created,
35-
};
34+
return this.repository.create(channelEntity);
3635
}
3736
}

src/core/channel/channel.entity.ts src/core/channel/entities/channel.entity.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Channel, CountryCode, CurrencyCode, LanguageCode } from '@api-sdk';
21
import { createId } from '@paralleldrive/cuid2';
2+
import { Channel, CountryCode, CurrencyCode, LanguageCode } from '@api-sdk';
33

44
export class ChannelEntity implements Channel {
55
id!: string;

src/core/channel/entities/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { ChannelEntity } from './channel.entity';

src/core/employee/employee.controller.ts

+15-4
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ export class EmployeeController {
3838
throw new BadRequestException();
3939
}
4040

41-
return created;
41+
return {
42+
ok: true,
43+
result: created,
44+
};
4245
}
4346

4447
@Public()
@@ -51,7 +54,10 @@ export class EmployeeController {
5154
throw new BadRequestException();
5255
}
5356

54-
return created;
57+
return {
58+
ok: true,
59+
result: created,
60+
};
5561
}
5662

5763
@Public()
@@ -64,7 +70,9 @@ export class EmployeeController {
6470
throw new BadRequestException();
6571
}
6672

67-
return created;
73+
return {
74+
ok: true,
75+
};
6876
}
6977

7078
@Public()
@@ -77,7 +85,10 @@ export class EmployeeController {
7785
throw new BadRequestException();
7886
}
7987

80-
return created;
88+
return {
89+
ok: true,
90+
result: created,
91+
};
8192
}
8293

8394
@Public()

src/core/employee/employee.module.ts

+26-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,36 @@
11
import { Module } from '@nestjs/common';
2+
import { JwtService } from '@nestjs/jwt';
23
import { PrismaService } from '@/db/prisma.service';
4+
import { AuthService } from '@/core/auth/auth.service';
35
import { EmployeeController } from '@/core/employee/employee.controller';
46
import { EmployeeService } from '@/core/employee/employee.service';
5-
import { AuthService } from '@/core/auth/auth.service';
6-
import { JwtService } from '@nestjs/jwt';
7+
import {
8+
EmployeeContactRepository,
9+
EmployeePasswordRepository,
10+
EmployeePermissionRepository,
11+
EmployeeRepository,
12+
} from '@/core/employee/repositories';
13+
import {
14+
EmployeeContactMapper,
15+
EmployeeMapper,
16+
EmployeePermissionMapper,
17+
} from '@/core/employee/mappers';
718

819
@Module({
920
controllers: [EmployeeController],
10-
providers: [EmployeeService, PrismaService, AuthService, JwtService],
21+
providers: [
22+
EmployeeService,
23+
EmployeeRepository,
24+
EmployeeContactRepository,
25+
EmployeePasswordRepository,
26+
EmployeePermissionRepository,
27+
EmployeeMapper,
28+
EmployeeContactMapper,
29+
EmployeePermissionMapper,
30+
PrismaService,
31+
AuthService,
32+
JwtService,
33+
],
1134
exports: [EmployeeService],
1235
})
1336
export class EmployeeModule {}

0 commit comments

Comments
 (0)