@koalarx/nest-cli 1.0.12 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/code-base/startup-project/.eslintignore +2 -0
  2. package/code-base/startup-project/.eslintrc.js +20 -0
  3. package/code-base/startup-project/nest-cli.json +1 -1
  4. package/code-base/startup-project/package.json +10 -11
  5. package/code-base/startup-project/prisma/migrations/{20250326014047_init → 20250326220607_init}/migration.sql +12 -0
  6. package/code-base/startup-project/prisma/schema.prisma +15 -4
  7. package/code-base/startup-project/src/application/mapping/person.mapping.ts +44 -0
  8. package/code-base/startup-project/src/application/person/create/create-person.handler.spec.ts +6 -6
  9. package/code-base/startup-project/src/application/person/create/create-person.handler.ts +1 -1
  10. package/code-base/startup-project/src/application/person/create/create-person.request.ts +10 -0
  11. package/code-base/startup-project/src/application/person/create/create-person.validator.ts +3 -0
  12. package/code-base/startup-project/src/application/person/create-person-job/create-person-job.ts +2 -1
  13. package/code-base/startup-project/src/application/person/delete/delete-person.handler.spec.ts +6 -6
  14. package/code-base/startup-project/src/application/person/delete-inative-job/delete-inactive-job.ts +2 -2
  15. package/code-base/startup-project/src/application/person/events/inactive-person/inactive-person-handler.ts +3 -3
  16. package/code-base/startup-project/src/application/person/read/read-person.handler.spec.ts +7 -7
  17. package/code-base/startup-project/src/application/person/read/read-person.response.ts +15 -1
  18. package/code-base/startup-project/src/application/person/read-many/read-many-person.handler.spec.ts +38 -34
  19. package/code-base/startup-project/src/application/person/read-many/read-many-person.handler.ts +7 -2
  20. package/code-base/startup-project/src/application/person/read-many/read-many-person.request.ts +8 -2
  21. package/code-base/startup-project/src/application/person/read-many/read-many-person.response.ts +1 -1
  22. package/code-base/startup-project/src/application/person/update/update-person.handler.spec.ts +20 -18
  23. package/code-base/startup-project/src/application/person/update/update-person.handler.ts +2 -1
  24. package/code-base/startup-project/src/application/person/update/update-person.request.ts +15 -1
  25. package/code-base/startup-project/src/application/person/update/update-person.validator.ts +4 -0
  26. package/code-base/startup-project/src/core/env.ts +6 -0
  27. package/code-base/startup-project/src/domain/dtos/read-many-person.dto.ts +16 -0
  28. package/code-base/startup-project/src/domain/entities/person/person-address.ts +10 -0
  29. package/code-base/startup-project/src/domain/entities/person/person.ts +4 -0
  30. package/code-base/startup-project/src/domain/repositories/iperson.repository.ts +4 -6
  31. package/code-base/startup-project/src/domain/services/.gitkeep +0 -0
  32. package/code-base/startup-project/src/{infra → host}/app.module.ts +5 -4
  33. package/code-base/startup-project/src/{infra → host}/controllers/controller.module.ts +2 -2
  34. package/code-base/startup-project/src/{infra → host}/controllers/controllers.module.ts +1 -4
  35. package/code-base/startup-project/src/{infra → host}/controllers/person/person.controller.e2e-spec.ts +78 -44
  36. package/code-base/startup-project/src/{infra → host}/main.ts +1 -1
  37. package/code-base/startup-project/src/infra/database/db-transaction-context.ts +7 -0
  38. package/code-base/startup-project/src/infra/database/repositories/person.repository.ts +13 -6
  39. package/code-base/startup-project/src/infra/services/.gitkeep +0 -0
  40. package/code-base/startup-project/src/test/create-e2e-test-app.ts +8 -8
  41. package/code-base/startup-project/src/test/create-unit-test-app.ts +5 -5
  42. package/code-base/startup-project/src/test/mockup/person/create-person-request.mockup.ts +6 -5
  43. package/code-base/startup-project/src/test/repositories/person.repository.ts +24 -15
  44. package/code-base/startup-project/src/test/setup-e2e.ts +3 -3
  45. package/index.js +1 -1
  46. package/package.json +1 -1
  47. package/code-base/startup-project/eslint.config.mjs +0 -22
  48. package/code-base/startup-project/src/domain/mapping/person.mapping.ts +0 -24
  49. /package/code-base/startup-project/src/{domain → application}/mapping/mapping.profile.ts +0 -0
  50. /package/code-base/startup-project/src/{infra → host}/controllers/person/create-person.controller.ts +0 -0
  51. /package/code-base/startup-project/src/{infra → host}/controllers/person/delete-person.controller.ts +0 -0
  52. /package/code-base/startup-project/src/{infra → host}/controllers/person/person.module.ts +0 -0
  53. /package/code-base/startup-project/src/{infra → host}/controllers/person/read-many-person.controller.ts +0 -0
  54. /package/code-base/startup-project/src/{infra → host}/controllers/person/read-person.controller.ts +0 -0
  55. /package/code-base/startup-project/src/{infra → host}/controllers/person/router.config.ts +0 -0
  56. /package/code-base/startup-project/src/{infra → host}/controllers/person/update-person.controller.ts +0 -0
@@ -1,8 +1,18 @@
1
1
  import { AutoMap } from '@koalarx/nest/core/mapping/auto-mapping.decorator'
2
2
  import { ApiProperty } from '@nestjs/swagger'
3
3
 
4
+ export class UpdatePersonAddressRequest {
5
+ @ApiProperty()
6
+ @AutoMap()
7
+ id: number
8
+
9
+ @ApiProperty()
10
+ @AutoMap()
11
+ address: string
12
+ }
13
+
4
14
  export class UpdatePersonPhoneRequest {
5
- @ApiProperty({required: false})
15
+ @ApiProperty({ required: false })
6
16
  @AutoMap()
7
17
  id?: number
8
18
 
@@ -23,4 +33,8 @@ export class UpdatePersonRequest {
23
33
  @ApiProperty({ type: [UpdatePersonPhoneRequest] })
24
34
  @AutoMap({ type: UpdatePersonPhoneRequest, isArray: true })
25
35
  phones: Array<UpdatePersonPhoneRequest>
36
+
37
+ @ApiProperty({ type: UpdatePersonAddressRequest })
38
+ @AutoMap({ type: UpdatePersonAddressRequest })
39
+ address: UpdatePersonAddressRequest
26
40
  }
@@ -12,6 +12,10 @@ export class UpdatePersonValidator extends RequestValidatorBase<UpdatePersonRequ
12
12
  phone: z.string(),
13
13
  }),
14
14
  ),
15
+ address: z.object({
16
+ id: z.number(),
17
+ address: z.string(),
18
+ }),
15
19
  })
16
20
  }
17
21
  }
@@ -0,0 +1,6 @@
1
+ import { envSchema } from '@koalarx/nest/env/env'
2
+ import { z } from 'zod'
3
+
4
+ export const env = envSchema.merge(z.object({}))
5
+
6
+ export type EnvType = z.infer<typeof env>
@@ -0,0 +1,16 @@
1
+ import { PaginatedRequestProps } from '@koalarx/nest/core/controllers/pagination.request'
2
+ import { PaginationDto } from '@koalarx/nest/core/dtos/pagination.dto'
3
+ import { AutoMap } from '@koalarx/nest/core/mapping/auto-mapping.decorator'
4
+
5
+ export class ReadManyPersonDto extends PaginationDto {
6
+ @AutoMap()
7
+ name?: string
8
+
9
+ @AutoMap()
10
+ active?: boolean
11
+
12
+ constructor(props?: PaginatedRequestProps<ReadManyPersonDto>) {
13
+ super()
14
+ Object.assign(this, props)
15
+ }
16
+ }
@@ -0,0 +1,10 @@
1
+ import { EntityBase } from '@koalarx/nest/core/database/entity.base'
2
+ import { AutoMap } from '@koalarx/nest/core/mapping/auto-mapping.decorator'
3
+
4
+ export class PersonAddress extends EntityBase<PersonAddress> {
5
+ @AutoMap()
6
+ id: number
7
+
8
+ @AutoMap()
9
+ address: string
10
+ }
@@ -2,6 +2,7 @@ import { EntityBase } from '@koalarx/nest/core/database/entity.base'
2
2
  import { AutoMap } from '@koalarx/nest/core/mapping/auto-mapping.decorator'
3
3
  import { List } from '@koalarx/nest/core/utils/list'
4
4
  import { PersonPhone } from './person-phone'
5
+ import { PersonAddress } from './person-address'
5
6
 
6
7
  export class Person extends EntityBase<Person> {
7
8
  @AutoMap()
@@ -13,6 +14,9 @@ export class Person extends EntityBase<Person> {
13
14
  @AutoMap({ type: List })
14
15
  phones = new List(PersonPhone)
15
16
 
17
+ @AutoMap({ type: PersonAddress })
18
+ address: PersonAddress
19
+
16
20
  @AutoMap()
17
21
  active: boolean
18
22
  }
@@ -1,14 +1,12 @@
1
1
  import { CreatedRegistreResponseBase } from '@koalarx/nest/core/controllers/created-registre-response.base'
2
2
  import { ListResponseBase } from '@koalarx/nest/core/controllers/list-response.base'
3
+ import { ReadManyPersonDto } from '../dtos/read-many-person.dto'
3
4
  import { Person } from '../entities/person/person'
4
- import { ReadManyPersonRequest } from '@/application/person/read-many/read-many-person.request'
5
5
 
6
6
  export abstract class IPersonRepository {
7
- abstract save(person: Person): Promise<CreatedRegistreResponseBase<number>>
7
+ abstract create(person: Person): Promise<CreatedRegistreResponseBase<number>>
8
+ abstract update(person: Person): Promise<void>
8
9
  abstract read(id: number): Promise<Person | null>
9
- abstract readMany(
10
- query: ReadManyPersonRequest,
11
- ): Promise<ListResponseBase<Person>>
12
-
10
+ abstract readMany(query: ReadManyPersonDto): Promise<ListResponseBase<Person>>
13
11
  abstract delete(id: number): Promise<void>
14
12
  }
@@ -4,16 +4,17 @@ import { DeleteInactiveJob } from '@/application/person/delete-inative-job/delet
4
4
  import { DeletePersonHandler } from '@/application/person/delete/delete-person.handler'
5
5
  import { InactivePersonHandler } from '@/application/person/events/inactive-person/inactive-person-handler'
6
6
  import { ReadManyPersonHandler } from '@/application/person/read-many/read-many-person.handler'
7
+ import { RepositoriesModule } from '@/infra/database/repositories/repositories.module'
7
8
  import { KoalaNestModule } from '@koalarx/nest/core/koala-nest.module'
8
9
  import { Module } from '@nestjs/common'
9
10
  import { ControllersModule } from './controllers/controllers.module'
10
- import { RepositoriesModule } from './database/repositories/repositories.module'
11
+ import { env } from '@/core/env'
11
12
 
12
13
  @Module({
13
14
  imports: [
14
- KoalaNestModule.register(),
15
- RepositoriesModule,
16
- ControllersModule
15
+ KoalaNestModule.register({ env }),
16
+ RepositoriesModule,
17
+ ControllersModule,
17
18
  ],
18
19
  providers: [
19
20
  CreatePersonHandler,
@@ -1,7 +1,7 @@
1
- import { MappingProfile } from '@/domain/mapping/mapping.profile'
1
+ import { MappingProfile } from '@/application/mapping/mapping.profile'
2
+ import { RepositoriesModule } from '@/infra/database/repositories/repositories.module'
2
3
  import { KoalaNestHttpModule } from '@koalarx/nest/core/koala-nest-http.module'
3
4
  import { Module } from '@nestjs/common'
4
- import { RepositoriesModule } from '../database/repositories/repositories.module'
5
5
 
6
6
  @Module({
7
7
  imports: [
@@ -3,10 +3,7 @@ import { ControllerModule } from './controller.module'
3
3
  import { PersonModule } from './person/person.module'
4
4
 
5
5
  @Module({
6
- imports: [
7
- ControllerModule,
8
- PersonModule,
9
- ],
6
+ imports: [ControllerModule, PersonModule],
10
7
  exports: [ControllerModule],
11
8
  })
12
9
  export class ControllersModule {}
@@ -16,70 +16,93 @@ describe(`CRUD OF PERSON`, () => {
16
16
  .post(PERSON_ROUTER_CONFIG.group)
17
17
  .send({
18
18
  name: 'John Doe',
19
- phones: []
19
+ phones: [],
20
+ address: {
21
+ address: 'Streat 1',
22
+ },
20
23
  })
21
-
24
+
22
25
  personId = response.body.id
23
26
 
24
27
  expect(response.statusCode).toBe(201)
25
28
  expect(response.body).toStrictEqual({
26
- id: expect.any(Number)
29
+ id: expect.any(Number),
27
30
  })
28
31
  })
29
32
 
30
33
  it('should get the created person', async () => {
31
- const response = await request(app.getHttpServer())
32
- .get(`${PERSON_ROUTER_CONFIG.group}/${personId}`)
33
-
34
+ const response = await request(app.getHttpServer()).get(
35
+ `${PERSON_ROUTER_CONFIG.group}/${personId}`,
36
+ )
37
+
34
38
  expect(response.statusCode).toBe(200)
35
39
  expect(response.body).toStrictEqual({
36
40
  id: personId,
37
41
  name: 'John Doe',
38
42
  phones: [],
39
- status: 'active'
43
+ address: {
44
+ id: 1,
45
+ address: 'Streat 1',
46
+ },
47
+ status: 'active',
40
48
  })
41
49
  })
42
50
 
43
51
  it('should get all persons', async () => {
44
- const response = await request(app.getHttpServer())
45
- .get(PERSON_ROUTER_CONFIG.group)
46
-
52
+ const response = await request(app.getHttpServer()).get(
53
+ PERSON_ROUTER_CONFIG.group,
54
+ )
55
+
47
56
  expect(response.statusCode).toBe(200)
48
57
  expect(response.body).toStrictEqual({
49
- items: [{
50
- id: personId,
51
- name: 'John Doe',
52
- phones: [],
53
- status: 'active'
54
- }],
55
- count: 1
58
+ items: [
59
+ {
60
+ id: personId,
61
+ name: 'John Doe',
62
+ phones: [],
63
+ address: {
64
+ id: 1,
65
+ address: 'Streat 1',
66
+ },
67
+ status: 'active',
68
+ },
69
+ ],
70
+ count: 1,
56
71
  })
57
72
  })
58
73
 
59
74
  it('should get all inactive persons', async () => {
60
- const response = await request(app.getHttpServer())
61
- .get(`${PERSON_ROUTER_CONFIG.group}?active=false`)
62
-
75
+ const response = await request(app.getHttpServer()).get(
76
+ `${PERSON_ROUTER_CONFIG.group}?active=false`,
77
+ )
78
+
63
79
  expect(response.statusCode).toBe(200)
64
80
  expect(response.body).toStrictEqual({
65
81
  items: [],
66
- count: 0
82
+ count: 0,
67
83
  })
68
84
  })
69
85
 
70
86
  it('should get persons by name', async () => {
71
- const response = await request(app.getHttpServer())
72
- .get(`${PERSON_ROUTER_CONFIG.group}?name=John`)
73
-
87
+ const response = await request(app.getHttpServer()).get(
88
+ `${PERSON_ROUTER_CONFIG.group}?name=John`,
89
+ )
90
+
74
91
  expect(response.statusCode).toBe(200)
75
92
  expect(response.body).toStrictEqual({
76
- items: [{
77
- id: personId,
78
- name: 'John Doe',
79
- phones: [],
80
- status: 'active'
81
- }],
82
- count: 1
93
+ items: [
94
+ {
95
+ id: personId,
96
+ name: 'John Doe',
97
+ phones: [],
98
+ address: {
99
+ id: 1,
100
+ address: 'Streat 1',
101
+ },
102
+ status: 'active',
103
+ },
104
+ ],
105
+ count: 1,
83
106
  })
84
107
  })
85
108
 
@@ -89,32 +112,43 @@ describe(`CRUD OF PERSON`, () => {
89
112
  .send({
90
113
  name: 'John Doe Updated',
91
114
  phones: [],
92
- status: 'active'
115
+ address: {
116
+ id: 1,
117
+ address: 'Streat 2',
118
+ },
119
+ status: 'active',
93
120
  })
94
-
121
+
95
122
  expect(updateResponse.statusCode).toBe(200)
96
123
 
97
- const response = await request(app.getHttpServer())
98
- .get(`${PERSON_ROUTER_CONFIG.group}/${personId}`)
99
-
124
+ const response = await request(app.getHttpServer()).get(
125
+ `${PERSON_ROUTER_CONFIG.group}/${personId}`,
126
+ )
127
+
100
128
  expect(response.body).toStrictEqual({
101
129
  id: personId,
102
130
  name: 'John Doe Updated',
103
131
  phones: [],
104
- status: 'active'
132
+ address: {
133
+ id: 1,
134
+ address: 'Streat 2',
135
+ },
136
+ status: 'active',
105
137
  })
106
138
  })
107
139
 
108
140
  it('should delete the created person', async () => {
109
- const deleteResponse = await request(app.getHttpServer())
110
- .delete(`${PERSON_ROUTER_CONFIG.group}/${personId}`)
111
-
141
+ const deleteResponse = await request(app.getHttpServer()).delete(
142
+ `${PERSON_ROUTER_CONFIG.group}/${personId}`,
143
+ )
144
+
112
145
  expect(deleteResponse).toBeTruthy()
113
146
  expect(deleteResponse.statusCode).toBe(204)
114
147
 
115
- const response = await request(app.getHttpServer())
116
- .get(`${PERSON_ROUTER_CONFIG.group}/${personId}`)
117
-
148
+ const response = await request(app.getHttpServer()).get(
149
+ `${PERSON_ROUTER_CONFIG.group}/${personId}`,
150
+ )
151
+
118
152
  expect(response.statusCode).toBe(404)
119
153
  })
120
- })
154
+ })
@@ -1,10 +1,10 @@
1
1
  import { CreatePersonJob } from '@/application/person/create-person-job/create-person-job'
2
2
  import { DeleteInactiveJob } from '@/application/person/delete-inative-job/delete-inactive-job'
3
3
  import { InactivePersonHandler } from '@/application/person/events/inactive-person/inactive-person-handler'
4
+ import { DbTransactionContext } from '@/infra/database/db-transaction-context'
4
5
  import { KoalaApp } from '@koalarx/nest/core/koala-app'
5
6
  import { NestFactory } from '@nestjs/core'
6
7
  import { AppModule } from './app.module'
7
- import { DbTransactionContext } from './database/db-transaction-context'
8
8
 
9
9
  async function bootstrap() {
10
10
  const app = await NestFactory.create(AppModule).then((app) =>
@@ -15,4 +15,11 @@ export class DbTransactionContext
15
15
  get personPhone(): Prisma.PersonPhoneDelegate<DefaultArgs> {
16
16
  return this.transactionalClient.personPhone
17
17
  }
18
+
19
+ get personAddress(): Prisma.PersonAddressDelegate<
20
+ DefaultArgs,
21
+ Prisma.PrismaClientOptions
22
+ > {
23
+ return this.transactionalClient.personAddress
24
+ }
18
25
  }
@@ -1,4 +1,4 @@
1
- import { ReadManyPersonRequest } from '@/application/person/read-many/read-many-person.request'
1
+ import { ReadManyPersonDto } from '@/domain/dtos/read-many-person.dto'
2
2
  import { Person } from '@/domain/entities/person/person'
3
3
  import { IPersonRepository } from '@/domain/repositories/iperson.repository'
4
4
  import { CreatedRegistreResponseBase } from '@koalarx/nest/core/controllers/created-registre-response.base'
@@ -21,19 +21,26 @@ export class PersonRepository
21
21
  super({
22
22
  modelName: Person,
23
23
  context: prisma,
24
- include: { phones: true },
24
+ include: {
25
+ phones: true,
26
+ address: true,
27
+ },
25
28
  })
26
29
  }
27
30
 
28
- async save(person: Person): Promise<CreatedRegistreResponseBase<number>> {
29
- return this.saveChanges(person)
31
+ create(person: Person): Promise<CreatedRegistreResponseBase<number>> {
32
+ return this.insert(person)
33
+ }
34
+
35
+ update(person: Person): Promise<void> {
36
+ return this.edit(person)
30
37
  }
31
38
 
32
39
  read(id: number): Promise<Person | null> {
33
40
  return this.findById(id)
34
41
  }
35
42
 
36
- readMany(query: ReadManyPersonRequest): Promise<ListResponseBase<Person>> {
43
+ readMany(query: ReadManyPersonDto): Promise<ListResponseBase<Person>> {
37
44
  return this.findManyAndCount<Prisma.PersonWhereInput>(
38
45
  {
39
46
  name: {
@@ -46,6 +53,6 @@ export class PersonRepository
46
53
  }
47
54
 
48
55
  delete(id: number): Promise<void> {
49
- return super.delete(id)
56
+ return this.remove<Prisma.PersonWhereUniqueInput>({ id })
50
57
  }
51
58
  }
@@ -1,17 +1,17 @@
1
- import { AppModule } from '@/infra/app.module'
1
+ import { AppModule } from '@/host/app.module'
2
2
  import { DbTransactionContext } from '@/infra/database/db-transaction-context'
3
3
  import { KoalaAppTest } from '@koalarx/nest/test/koala-app-test'
4
4
  import { Test } from '@nestjs/testing'
5
5
 
6
6
  export async function createE2ETestApp() {
7
- return Test
8
- .createTestingModule({ imports: [AppModule] })
7
+ return Test.createTestingModule({ imports: [AppModule] })
9
8
  .compile()
10
9
  .then((moduleRef) => moduleRef.createNestApplication())
11
- .then((app) => new KoalaAppTest(app)
12
- .setDbTransactionContext(DbTransactionContext)
13
- .enableCors()
14
- .build()
10
+ .then((app) =>
11
+ new KoalaAppTest(app)
12
+ .setDbTransactionContext(DbTransactionContext)
13
+ .enableCors()
14
+ .build(),
15
15
  )
16
16
  .then((app) => app.init())
17
- }
17
+ }
@@ -1,5 +1,5 @@
1
1
  import { CreatePersonHandler } from '@/application/person/create/create-person.handler'
2
- import { MappingProfile } from '@/domain/mapping/mapping.profile'
2
+ import { MappingProfile } from '@/application/mapping/mapping.profile'
3
3
  import { AutoMappingService } from '@koalarx/nest/core/mapping/auto-mapping.service'
4
4
  import { KoalaAppTestDependencies } from '@koalarx/nest/test/koala-app-test-dependencies'
5
5
  import { PersonRepository } from './repositories/person.repository'
@@ -13,12 +13,12 @@ export function createUnitTestApp() {
13
13
  const personRepository = new PersonRepository()
14
14
 
15
15
  return new KoalaAppTestDependencies({
16
- dependencies: [
16
+ dependencies: [
17
17
  new CreatePersonHandler(automapService, personRepository),
18
18
  new ReadPersonHandler(automapService, personRepository),
19
19
  new ReadManyPersonHandler(automapService, personRepository),
20
20
  new UpdatePersonHandler(automapService, personRepository),
21
- new DeletePersonHandler(personRepository)
22
- ]
21
+ new DeletePersonHandler(personRepository),
22
+ ],
23
23
  })
24
- }
24
+ }
@@ -1,8 +1,9 @@
1
- import { CreatePersonRequest } from "@/application/person/create/create-person.request";
2
- import { assignObject } from "@koalarx/nest/core/utils/assing-object";
3
- import { faker } from "@faker-js/faker";
1
+ import { CreatePersonRequest } from '@/application/person/create/create-person.request'
2
+ import { faker } from '@faker-js/faker'
3
+ import { assignObject } from '@koalarx/nest/core/utils/assing-object'
4
4
 
5
5
  export const createPersonRequestMockup = assignObject(CreatePersonRequest, {
6
6
  name: faker.person.fullName(),
7
- phones: [{phone: faker.phone.number()}]
8
- })
7
+ phones: [{ phone: faker.phone.number() }],
8
+ address: { address: faker.location.streetAddress() },
9
+ })
@@ -1,27 +1,36 @@
1
- import { ReadManyPersonRequest } from "@/application/person/read-many/read-many-person.request";
2
- import { Person } from "@/domain/entities/person/person";
3
- import { IPersonRepository } from "@/domain/repositories/iperson.repository";
4
- import { CreatedRegistreResponseBase } from "@koalarx/nest/core/controllers/created-registre-response.base";
5
- import { ListResponseBase } from "@koalarx/nest/core/controllers/list-response.base";
6
- import { InMemoryBaseRepository } from "@koalarx/nest/test/repositories/in-memory-base.repository";
1
+ import { ReadManyPersonDto } from '@/domain/dtos/read-many-person.dto'
2
+ import { Person } from '@/domain/entities/person/person'
3
+ import { IPersonRepository } from '@/domain/repositories/iperson.repository'
4
+ import { CreatedRegistreResponseBase } from '@koalarx/nest/core/controllers/created-registre-response.base'
5
+ import { ListResponseBase } from '@koalarx/nest/core/controllers/list-response.base'
6
+ import { InMemoryBaseRepository } from '@koalarx/nest/test/repositories/in-memory-base.repository'
7
7
 
8
- export class PersonRepository extends InMemoryBaseRepository<Person> implements IPersonRepository {
9
- save(person: Person): Promise<CreatedRegistreResponseBase<number>> {
10
- return this.saveChanges(person)
8
+ export class PersonRepository
9
+ extends InMemoryBaseRepository<Person>
10
+ implements IPersonRepository
11
+ {
12
+ create(person: Person): Promise<CreatedRegistreResponseBase<number>> {
13
+ return this.insert(person)
14
+ }
15
+
16
+ update(person: Person): Promise<void> {
17
+ return this.edit(person, (item) => item.id === person.id)
11
18
  }
12
19
 
13
20
  read(id: number): Promise<Person | null> {
14
21
  return this.findById(id)
15
22
  }
16
23
 
17
- readMany(query: ReadManyPersonRequest): Promise<ListResponseBase<Person>> {
18
- return this.findManyAndCount<ReadManyPersonRequest>(query, (person) =>
19
- (!query.name || person.name.includes(query.name)) &&
20
- (query.active === undefined || person.active === query.active)
24
+ readMany(query: ReadManyPersonDto): Promise<ListResponseBase<Person>> {
25
+ return this.findManyAndCount<ReadManyPersonDto>(
26
+ query,
27
+ (person) =>
28
+ (!query.name || person.name.includes(query.name)) &&
29
+ (query.active === undefined || person.active === query.active),
21
30
  )
22
31
  }
23
32
 
24
33
  delete(id: number): Promise<void> {
25
- return super.remove((person) => person.id === id)
34
+ return this.remove((person) => person.id === id)
26
35
  }
27
- }
36
+ }
@@ -1,7 +1,7 @@
1
- import { createE2EDatabase } from '@koalarx/nest/test/utils/create-e2e-database';
2
- import { dropE2EDatabase } from '@koalarx/nest/test/utils/drop-e2e-database';
1
+ import { createE2EDatabase } from '@koalarx/nest/test/utils/create-e2e-database'
2
+ import { dropE2EDatabase } from '@koalarx/nest/test/utils/drop-e2e-database'
3
3
 
4
4
  let schemaId: string
5
5
 
6
- beforeAll(() => schemaId = createE2EDatabase(), 40000)
6
+ beforeAll(() => (schemaId = createE2EDatabase()), 40000)
7
7
  afterAll(async () => dropE2EDatabase(schemaId))
package/index.js CHANGED
@@ -30,7 +30,7 @@ var import_inquirer = __toESM(require("inquirer"));
30
30
  // package.json
31
31
  var package_default = {
32
32
  name: "@koalarx/nest-cli",
33
- version: "1.0.12",
33
+ version: "1.0.15",
34
34
  description: "Biblioteca de CLI para cria\xE7\xE3o de projetos utilizando Koala Nest",
35
35
  scripts: {
36
36
  test: "vitest run",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koalarx/nest-cli",
3
- "version": "1.0.12",
3
+ "version": "1.0.15",
4
4
  "description": "Biblioteca de CLI para criação de projetos utilizando Koala Nest",
5
5
  "scripts": {
6
6
  "test": "vitest run",
@@ -1,22 +0,0 @@
1
- import js from "@eslint/js";
2
- import { defineConfig } from "eslint/config";
3
- import globals from "globals";
4
- import tseslint from "typescript-eslint";
5
-
6
- export default defineConfig([
7
- { files: ["**/*.{js,mjs,cjs,ts}"] },
8
- { files: ["**/*.{js,mjs,cjs,ts}"], languageOptions: { globals: globals.node } },
9
- { files: ["**/*.{js,mjs,cjs,ts}"], plugins: { js }, extends: ["js/recommended"] },
10
- tseslint.configs.recommended,
11
- { ignores: ["node_modules", "dist"] },
12
- {
13
- rules: {
14
- "@typescript-eslint/ban-ts-comment": "off",
15
- "@typescript-eslint/no-unused-vars": "off",
16
- "@typescript-eslint/no-unsafe-function-type": "off",
17
- "@typescript-eslint/no-useless-constructor": "off",
18
- "@typescript-eslint/no-new": "off",
19
- "@typescript-eslint/no-explicit-any": "off"
20
- }
21
- }
22
- ]);
@@ -1,24 +0,0 @@
1
- import { CreatePersonPhoneRequest, CreatePersonRequest } from '@/application/person/create/create-person.request'
2
- import { ReadPersonPhoneResponse, ReadPersonResponse } from '@/application/person/read/read-person.response'
3
- import { UpdatePersonPhoneRequest, UpdatePersonRequest } from '@/application/person/update/update-person.request'
4
- import { createMap } from '@koalarx/nest/core/mapping/create-map'
5
- import { forMember } from '@koalarx/nest/core/mapping/for-member'
6
- import { Person } from '../entities/person/person'
7
- import { PersonPhone } from '../entities/person/person-phone'
8
-
9
- export class PersonMapping {
10
- static createMap() {
11
- createMap(CreatePersonPhoneRequest, PersonPhone)
12
- createMap(CreatePersonRequest, Person)
13
-
14
- createMap(PersonPhone, ReadPersonPhoneResponse)
15
- createMap(
16
- Person,
17
- ReadPersonResponse,
18
- forMember('status', (s) => (s.active === true ? 'active' : 'inactive')),
19
- )
20
-
21
- createMap(UpdatePersonPhoneRequest, PersonPhone)
22
- createMap(UpdatePersonRequest, Person)
23
- }
24
- }