@koalarx/nest-cli 1.0.30 → 1.0.32

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 (21) hide show
  1. package/code-base/startup-project/package.json +1 -1
  2. package/code-base/startup-project/src/application/mapping/person.mapping.ts +0 -1
  3. package/code-base/startup-project/src/application/person/common/persist-person.request.ts +28 -0
  4. package/code-base/startup-project/src/application/person/create/create-person.handler.ts +1 -1
  5. package/code-base/startup-project/src/application/person/create/create-person.request.ts +8 -25
  6. package/code-base/startup-project/src/application/person/create/create-person.validator.ts +1 -1
  7. package/code-base/startup-project/src/application/person/events/inactive-person/inactive-person-handler.ts +1 -1
  8. package/code-base/startup-project/src/application/person/read/read-person.handler.spec.ts +5 -6
  9. package/code-base/startup-project/src/application/person/read-many/read-many-person.handler.spec.ts +11 -20
  10. package/code-base/startup-project/src/application/person/update/update-person.handler.spec.ts +8 -5
  11. package/code-base/startup-project/src/application/person/update/update-person.handler.ts +1 -1
  12. package/code-base/startup-project/src/application/person/update/update-person.request.ts +6 -10
  13. package/code-base/startup-project/src/domain/entities/person/person-address.ts +2 -0
  14. package/code-base/startup-project/src/domain/entities/person/person-phone.ts +2 -0
  15. package/code-base/startup-project/src/domain/entities/person/person.ts +3 -1
  16. package/code-base/startup-project/src/domain/repositories/iperson.repository.ts +1 -3
  17. package/code-base/startup-project/src/host/controllers/person/person.controller.e2e-spec.ts +5 -5
  18. package/code-base/startup-project/src/infra/database/repositories/person.repository.ts +2 -6
  19. package/code-base/startup-project/src/test/repositories/person.repository.ts +6 -6
  20. package/index.js +1 -1
  21. package/package.json +1 -1
@@ -22,7 +22,7 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@koalarx/utils": "3.1.3",
25
- "@koalarx/nest": "1.6.4",
25
+ "@koalarx/nest": "1.8.1",
26
26
  "@nestjs/common": "11.0.12",
27
27
  "@nestjs/config": "4.0.1",
28
28
  "@nestjs/core": "11.0.12",
@@ -3,7 +3,6 @@ import { Person } from '@/domain/entities/person/person'
3
3
  import { PersonAddress } from '@/domain/entities/person/person-address'
4
4
  import { PersonPhone } from '@/domain/entities/person/person-phone'
5
5
  import { createMap } from '@koalarx/nest/core/mapping/create-map'
6
- import { forMember } from '@koalarx/nest/core/mapping/for-member'
7
6
  import {
8
7
  CreatePersonAddressRequest,
9
8
  CreatePersonPhoneRequest,
@@ -0,0 +1,28 @@
1
+ import { AutoMap } from '@koalarx/nest/core/mapping/auto-mapping.decorator'
2
+ import { ApiProperty } from '@nestjs/swagger'
3
+
4
+ export class PersistPersonAddressRequest {
5
+ @ApiProperty({ example: 'Street 1' })
6
+ @AutoMap()
7
+ address: string
8
+ }
9
+
10
+ export class PersistPersonPhoneRequest {
11
+ @ApiProperty({ example: '22999999999' })
12
+ @AutoMap()
13
+ phone: string
14
+ }
15
+
16
+ export class PersistPersonRequest {
17
+ @ApiProperty({ example: 'John Doe' })
18
+ @AutoMap()
19
+ name: string
20
+
21
+ @ApiProperty({ type: [PersistPersonPhoneRequest] })
22
+ @AutoMap({ type: PersistPersonPhoneRequest, isArray: { addTo: true } })
23
+ phones: Array<PersistPersonPhoneRequest>
24
+
25
+ @ApiProperty({ type: PersistPersonAddressRequest })
26
+ @AutoMap({ type: PersistPersonAddressRequest })
27
+ address: PersistPersonAddressRequest
28
+ }
@@ -32,7 +32,7 @@ export class CreatePersonHandler extends RequestHandlerBase<
32
32
  Person,
33
33
  )
34
34
 
35
- const result = await this.repository.create(person)
35
+ const result = await this.repository.save(person)
36
36
 
37
37
  return ok({ id: result.id })
38
38
  }
@@ -1,28 +1,11 @@
1
- import { AutoMap } from '@koalarx/nest/core/mapping/auto-mapping.decorator'
2
- import { ApiProperty } from '@nestjs/swagger'
1
+ import {
2
+ PersistPersonAddressRequest,
3
+ PersistPersonPhoneRequest,
4
+ PersistPersonRequest,
5
+ } from '../common/persist-person.request'
3
6
 
4
- export class CreatePersonAddressRequest {
5
- @ApiProperty({ example: 'Street 1' })
6
- @AutoMap()
7
- address: string
8
- }
7
+ export class CreatePersonAddressRequest extends PersistPersonAddressRequest {}
9
8
 
10
- export class CreatePersonPhoneRequest {
11
- @ApiProperty({ example: '22999999999' })
12
- @AutoMap()
13
- phone: string
14
- }
9
+ export class CreatePersonPhoneRequest extends PersistPersonPhoneRequest {}
15
10
 
16
- export class CreatePersonRequest {
17
- @ApiProperty({ example: 'John Doe' })
18
- @AutoMap()
19
- name: string
20
-
21
- @ApiProperty({ type: [CreatePersonPhoneRequest] })
22
- @AutoMap({ type: CreatePersonPhoneRequest, isArray: { addTo: true } })
23
- phones: Array<CreatePersonPhoneRequest>
24
-
25
- @ApiProperty({ type: CreatePersonAddressRequest })
26
- @AutoMap({ type: CreatePersonAddressRequest })
27
- address: CreatePersonAddressRequest
28
- }
11
+ export class CreatePersonRequest extends PersistPersonRequest {}
@@ -1,6 +1,6 @@
1
1
  import { RequestValidatorBase } from '@koalarx/nest/core/request-overflow/request-validator.base'
2
- import { CreatePersonRequest } from './create-person.request'
3
2
  import { z, ZodType, ZodTypeDef } from 'zod'
3
+ import { CreatePersonRequest } from './create-person.request'
4
4
 
5
5
  export class CreatePersonValidator extends RequestValidatorBase<CreatePersonRequest> {
6
6
  protected get schema(): ZodType<any, ZodTypeDef, any> {
@@ -17,7 +17,7 @@ export class InactivePersonHandler extends EventHandlerBase<InactivePersonEvent>
17
17
 
18
18
  for (const person of result.items) {
19
19
  person.active = false
20
- await this.repository.update(person)
20
+ await this.repository.save(person)
21
21
  }
22
22
 
23
23
  console.log(
@@ -7,7 +7,6 @@ describe('ReadPersonHandler', () => {
7
7
  const app = createUnitTestApp()
8
8
 
9
9
  it('should get a person by id', async () => {
10
- const person = createPersonRequestMockup
11
10
  const createResult = await app
12
11
  .get(CreatePersonHandler)
13
12
  .handle(createPersonRequestMockup)
@@ -19,11 +18,11 @@ describe('ReadPersonHandler', () => {
19
18
  .get(ReadPersonHandler)
20
19
  .handle(createResult.value.id)
21
20
 
22
- expect(result.value).toEqual({
23
- ...person,
24
- id: createResult.value.id,
25
- status: 'inactive',
26
- })
21
+ expect(result.isOk()).toBeTruthy()
22
+
23
+ if (result.isOk()) {
24
+ expect(result.value.id).toBe(createResult.value.id)
25
+ }
27
26
  }
28
27
  })
29
28
  })
@@ -30,16 +30,11 @@ describe('ReadManyPersonHandler', () => {
30
30
  .get(ReadManyPersonHandler)
31
31
  .handle(new ReadManyPersonRequest())
32
32
 
33
- expect(result.value).toEqual({
34
- items: [
35
- {
36
- ...person,
37
- id: personId,
38
- status: 'inactive',
39
- },
40
- ],
41
- count: 1,
42
- })
33
+ expect(result.isOk()).toBeTruthy()
34
+
35
+ if (result.isOk()) {
36
+ expect(result.value.items).toHaveLength(1)
37
+ }
43
38
  })
44
39
 
45
40
  it('should get persons by name', async () => {
@@ -49,16 +44,12 @@ describe('ReadManyPersonHandler', () => {
49
44
  }),
50
45
  )
51
46
 
52
- expect(result.value).toEqual({
53
- items: [
54
- {
55
- ...person,
56
- id: personId,
57
- status: 'inactive',
58
- },
59
- ],
60
- count: 1,
61
- })
47
+ expect(result.isOk()).toBeTruthy()
48
+
49
+ if (result.isOk()) {
50
+ expect(result.value.items[0].name).toBe(person.name)
51
+ expect(result.value.items).toHaveLength(1)
52
+ }
62
53
  })
63
54
 
64
55
  it('should get persons by status', async () => {
@@ -34,11 +34,14 @@ describe('UpdatePersonHandler', () => {
34
34
  .get(ReadPersonHandler)
35
35
  .handle(createResult.value.id)
36
36
 
37
- expect(result.value).toEqual({
38
- ...person,
39
- id: createResult.value.id,
40
- status: 'active',
41
- })
37
+ expect(result.isOk()).toBeTruthy()
38
+
39
+ if (result.isOk()) {
40
+ expect(result.value.name).toEqual(person.name)
41
+ expect(result.value.active).toEqual(true)
42
+ expect(result.value.address.address).toEqual(person.address.address)
43
+ expect(result.value.phones[0].phone).toEqual(person.phones[0].phone)
44
+ }
42
45
  }
43
46
  })
44
47
  })
@@ -50,7 +50,7 @@ export class UpdatePersonHandler extends RequestHandlerBase<
50
50
  personInBd.address.address = person.address.address
51
51
  personInBd.phones.update(person.phones.toArray())
52
52
 
53
- await this.repository.update(personInBd)
53
+ await this.repository.save(personInBd)
54
54
 
55
55
  return ok(null)
56
56
  }
@@ -1,24 +1,20 @@
1
1
  import { AutoMap } from '@koalarx/nest/core/mapping/auto-mapping.decorator'
2
2
  import { ApiProperty } from '@nestjs/swagger'
3
+ import {
4
+ PersistPersonAddressRequest,
5
+ PersistPersonPhoneRequest,
6
+ } from '../common/persist-person.request'
3
7
 
4
- export class UpdatePersonAddressRequest {
8
+ export class UpdatePersonAddressRequest extends PersistPersonAddressRequest {
5
9
  @ApiProperty()
6
10
  @AutoMap()
7
11
  id: number
8
-
9
- @ApiProperty({ example: 'Street 2' })
10
- @AutoMap()
11
- address: string
12
12
  }
13
13
 
14
- export class UpdatePersonPhoneRequest {
14
+ export class UpdatePersonPhoneRequest extends PersistPersonPhoneRequest {
15
15
  @ApiProperty({ required: false })
16
16
  @AutoMap()
17
17
  id?: number
18
-
19
- @ApiProperty({ example: 22888888888 })
20
- @AutoMap()
21
- phone: string
22
18
  }
23
19
 
24
20
  export class UpdatePersonRequest {
@@ -1,6 +1,8 @@
1
1
  import { EntityBase } from '@koalarx/nest/core/database/entity.base'
2
+ import { Entity } from '@koalarx/nest/core/database/entity.decorator'
2
3
  import { AutoMap } from '@koalarx/nest/core/mapping/auto-mapping.decorator'
3
4
 
5
+ @Entity()
4
6
  export class PersonAddress extends EntityBase<PersonAddress> {
5
7
  @AutoMap()
6
8
  id: number
@@ -1,6 +1,8 @@
1
1
  import { EntityBase } from '@koalarx/nest/core/database/entity.base'
2
+ import { Entity } from '@koalarx/nest/core/database/entity.decorator'
2
3
  import { AutoMap } from '@koalarx/nest/core/mapping/auto-mapping.decorator'
3
4
 
5
+ @Entity()
4
6
  export class PersonPhone extends EntityBase<PersonPhone> {
5
7
  @AutoMap()
6
8
  id: number
@@ -1,9 +1,11 @@
1
1
  import { EntityBase } from '@koalarx/nest/core/database/entity.base'
2
+ import { Entity } from '@koalarx/nest/core/database/entity.decorator'
2
3
  import { AutoMap } from '@koalarx/nest/core/mapping/auto-mapping.decorator'
3
4
  import { List } from '@koalarx/nest/core/utils/list'
4
- import { PersonPhone } from './person-phone'
5
5
  import { PersonAddress } from './person-address'
6
+ import { PersonPhone } from './person-phone'
6
7
 
8
+ @Entity()
7
9
  export class Person extends EntityBase<Person> {
8
10
  @AutoMap()
9
11
  id: number
@@ -1,11 +1,9 @@
1
- import { CreatedRegistreResponseBase } from '@koalarx/nest/core/controllers/created-registre-response.base'
2
1
  import { ListResponseBase } from '@koalarx/nest/core/controllers/list-response.base'
3
2
  import { ReadManyPersonDto } from '../dtos/read-many-person.dto'
4
3
  import { Person } from '../entities/person/person'
5
4
 
6
5
  export abstract class IPersonRepository {
7
- abstract create(person: Person): Promise<CreatedRegistreResponseBase<number>>
8
- abstract update(person: Person): Promise<void>
6
+ abstract save(person: Person): Promise<any>
9
7
  abstract read(id: number): Promise<Person | null>
10
8
  abstract readMany(query: ReadManyPersonDto): Promise<ListResponseBase<Person>>
11
9
  abstract delete(id: number): Promise<void>
@@ -44,7 +44,7 @@ describe(`CRUD OF PERSON`, () => {
44
44
  id: 1,
45
45
  address: 'Streat 1',
46
46
  },
47
- status: 'active',
47
+ active: true,
48
48
  })
49
49
  })
50
50
 
@@ -64,7 +64,7 @@ describe(`CRUD OF PERSON`, () => {
64
64
  id: 1,
65
65
  address: 'Streat 1',
66
66
  },
67
- status: 'active',
67
+ active: true,
68
68
  },
69
69
  ],
70
70
  count: 1,
@@ -99,7 +99,7 @@ describe(`CRUD OF PERSON`, () => {
99
99
  id: 1,
100
100
  address: 'Streat 1',
101
101
  },
102
- status: 'active',
102
+ active: true,
103
103
  },
104
104
  ],
105
105
  count: 1,
@@ -116,7 +116,7 @@ describe(`CRUD OF PERSON`, () => {
116
116
  id: 1,
117
117
  address: 'Streat 2',
118
118
  },
119
- status: 'active',
119
+ active: true,
120
120
  })
121
121
 
122
122
  expect(updateResponse.statusCode).toBe(200)
@@ -133,7 +133,7 @@ describe(`CRUD OF PERSON`, () => {
133
133
  id: 1,
134
134
  address: 'Streat 2',
135
135
  },
136
- status: 'active',
136
+ active: true,
137
137
  })
138
138
  })
139
139
 
@@ -28,12 +28,8 @@ export class PersonRepository
28
28
  })
29
29
  }
30
30
 
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)
31
+ save(person: Person): Promise<CreatedRegistreResponseBase<number>> {
32
+ return this.saveChanges(person)
37
33
  }
38
34
 
39
35
  read(id: number): Promise<Person | null> {
@@ -1,20 +1,20 @@
1
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
- import { CreatedRegistreResponseBase } from '@koalarx/nest/core/controllers/created-registre-response.base'
5
4
  import { ListResponseBase } from '@koalarx/nest/core/controllers/list-response.base'
5
+ import { EntityActionType } from '@koalarx/nest/core/database/entity.base'
6
6
  import { InMemoryBaseRepository } from '@koalarx/nest/test/repositories/in-memory-base.repository'
7
7
 
8
8
  export class PersonRepository
9
9
  extends InMemoryBaseRepository<Person>
10
10
  implements IPersonRepository
11
11
  {
12
- create(person: Person): Promise<CreatedRegistreResponseBase<number>> {
13
- return this.insert(person)
14
- }
12
+ save(person: Person): Promise<any> {
13
+ if (person._action === EntityActionType.create) {
14
+ person.active = false
15
+ }
15
16
 
16
- update(person: Person): Promise<void> {
17
- return this.edit(person, (item) => item.id === person.id)
17
+ return this.saveChanges(person, (item) => item.id === person.id)
18
18
  }
19
19
 
20
20
  read(id: number): Promise<Person | null> {
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.30",
33
+ version: "1.0.32",
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.30",
3
+ "version": "1.0.32",
4
4
  "description": "Biblioteca de CLI para criação de projetos utilizando Koala Nest",
5
5
  "scripts": {
6
6
  "test": "vitest run",