@punks/backend-entity-manager 0.0.1 → 0.0.3

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 (151) hide show
  1. package/dist/cjs/index.js +41374 -7749
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/__test__/entity/foo.d.ts +9 -9
  4. package/dist/cjs/types/__test__/providers/typeorm/entity/foo.d.ts +9 -10
  5. package/dist/cjs/types/abstractions/actions.d.ts +12 -12
  6. package/dist/cjs/types/abstractions/adapters.d.ts +8 -0
  7. package/dist/cjs/types/abstractions/commands.d.ts +2 -2
  8. package/dist/cjs/types/abstractions/configuration.d.ts +7 -1
  9. package/dist/cjs/types/abstractions/converters.d.ts +7 -15
  10. package/dist/cjs/types/abstractions/index.d.ts +3 -1
  11. package/dist/cjs/types/abstractions/manager.d.ts +5 -5
  12. package/dist/cjs/types/abstractions/repository.d.ts +1 -0
  13. package/dist/cjs/types/abstractions/searchParameters.d.ts +1 -1
  14. package/dist/cjs/types/actions/create.d.ts +2 -2
  15. package/dist/cjs/types/actions/upsert.d.ts +2 -2
  16. package/dist/cjs/types/commands/create.d.ts +2 -2
  17. package/dist/cjs/types/commands/update.d.ts +2 -2
  18. package/dist/cjs/types/concrete/index.d.ts +13 -13
  19. package/dist/cjs/types/index.d.ts +1 -0
  20. package/dist/cjs/types/integrations/index.d.ts +1 -0
  21. package/dist/cjs/types/integrations/repository/index.d.ts +1 -0
  22. package/dist/cjs/types/integrations/repository/typeorm/index.d.ts +2 -1
  23. package/dist/cjs/types/integrations/repository/typeorm/queryBuilder.d.ts +22 -0
  24. package/dist/cjs/types/integrations/repository/typeorm/repository.d.ts +2 -1
  25. package/dist/cjs/types/ioc/index.d.ts +3 -0
  26. package/dist/cjs/types/models/search.d.ts +1 -0
  27. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/actions.d.ts +8 -0
  28. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/controller.d.ts +11 -0
  29. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/converter.d.ts +9 -0
  30. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/dto.d.ts +20 -0
  31. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/entity.d.ts +6 -0
  32. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/index.d.ts +8 -0
  33. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/manager.d.ts +7 -0
  34. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/models.d.ts +19 -0
  35. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/query.d.ts +11 -0
  36. package/dist/cjs/types/platforms/nest/__test__/server/entities/foo/repository.d.ts +6 -0
  37. package/dist/cjs/types/platforms/nest/__test__/server/entities/index.d.ts +6 -0
  38. package/dist/cjs/types/platforms/nest/__test__/server/index.d.ts +4 -0
  39. package/dist/cjs/types/platforms/nest/__test__/tests/base/test_crud_actions.test.d.ts +1 -0
  40. package/dist/cjs/types/platforms/nest/__test__/tests/base/test_crud_api.test.d.ts +1 -0
  41. package/dist/cjs/types/platforms/nest/__test__/tests/base/test_crud_operations.test.d.ts +1 -0
  42. package/dist/cjs/types/platforms/nest/base/entityActions.d.ts +9 -0
  43. package/dist/cjs/types/platforms/nest/base/entityManager.d.ts +9 -0
  44. package/dist/cjs/types/platforms/nest/base/index.d.ts +1 -0
  45. package/dist/cjs/types/platforms/nest/decorators/actions.d.ts +4 -0
  46. package/dist/cjs/types/platforms/nest/decorators/adapter.d.ts +4 -0
  47. package/dist/cjs/types/platforms/nest/decorators/authorization.d.ts +4 -0
  48. package/dist/cjs/types/platforms/nest/decorators/connector.d.ts +4 -0
  49. package/dist/cjs/types/platforms/nest/decorators/converter.d.ts +4 -0
  50. package/dist/cjs/types/platforms/nest/decorators/entity.d.ts +4 -0
  51. package/dist/cjs/types/platforms/nest/decorators/index.d.ts +9 -0
  52. package/dist/cjs/types/platforms/nest/decorators/manager.d.ts +4 -0
  53. package/dist/cjs/types/platforms/nest/decorators/queryBuilder.d.ts +4 -0
  54. package/dist/cjs/types/platforms/nest/decorators/repository.d.ts +4 -0
  55. package/dist/cjs/types/platforms/nest/decorators/symbols.d.ts +11 -0
  56. package/dist/cjs/types/platforms/nest/index.d.ts +3 -0
  57. package/dist/cjs/types/platforms/nest/integrations/index.d.ts +1 -0
  58. package/dist/cjs/types/platforms/nest/integrations/typeorm/index.d.ts +2 -0
  59. package/dist/cjs/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +7 -0
  60. package/dist/cjs/types/platforms/nest/integrations/typeorm/repository.d.ts +5 -0
  61. package/dist/cjs/types/platforms/nest/ioc/discovery/index.d.ts +102 -0
  62. package/dist/cjs/types/platforms/nest/ioc/index.d.ts +2 -0
  63. package/dist/cjs/types/platforms/nest/ioc/registry/index.d.ts +18 -0
  64. package/dist/cjs/types/platforms/nest/module.d.ts +1 -4
  65. package/dist/cjs/types/platforms/nest/processors/index.d.ts +2 -0
  66. package/dist/cjs/types/platforms/nest/processors/initializer/index.d.ts +16 -0
  67. package/dist/cjs/types/platforms/nest/services/index.d.ts +1 -0
  68. package/dist/cjs/types/providers/services.d.ts +20 -31
  69. package/dist/cjs/types/symbols/ioc.d.ts +2 -6
  70. package/dist/cjs/types/templates/index.d.ts +1 -0
  71. package/dist/cjs/types/templates/queryBuilder.d.ts +11 -0
  72. package/dist/cjs/types/testing/mocks/repository.d.ts +1 -0
  73. package/dist/esm/index.js +41357 -7743
  74. package/dist/esm/index.js.map +1 -1
  75. package/dist/esm/types/__test__/entity/foo.d.ts +9 -9
  76. package/dist/esm/types/__test__/providers/typeorm/entity/foo.d.ts +9 -10
  77. package/dist/esm/types/abstractions/actions.d.ts +12 -12
  78. package/dist/esm/types/abstractions/adapters.d.ts +8 -0
  79. package/dist/esm/types/abstractions/commands.d.ts +2 -2
  80. package/dist/esm/types/abstractions/configuration.d.ts +7 -1
  81. package/dist/esm/types/abstractions/converters.d.ts +7 -15
  82. package/dist/esm/types/abstractions/index.d.ts +3 -1
  83. package/dist/esm/types/abstractions/manager.d.ts +5 -5
  84. package/dist/esm/types/abstractions/repository.d.ts +1 -0
  85. package/dist/esm/types/abstractions/searchParameters.d.ts +1 -1
  86. package/dist/esm/types/actions/create.d.ts +2 -2
  87. package/dist/esm/types/actions/upsert.d.ts +2 -2
  88. package/dist/esm/types/commands/create.d.ts +2 -2
  89. package/dist/esm/types/commands/update.d.ts +2 -2
  90. package/dist/esm/types/concrete/index.d.ts +13 -13
  91. package/dist/esm/types/index.d.ts +1 -0
  92. package/dist/esm/types/integrations/index.d.ts +1 -0
  93. package/dist/esm/types/integrations/repository/index.d.ts +1 -0
  94. package/dist/esm/types/integrations/repository/typeorm/index.d.ts +2 -1
  95. package/dist/esm/types/integrations/repository/typeorm/queryBuilder.d.ts +22 -0
  96. package/dist/esm/types/integrations/repository/typeorm/repository.d.ts +2 -1
  97. package/dist/esm/types/ioc/index.d.ts +3 -0
  98. package/dist/esm/types/models/search.d.ts +1 -0
  99. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/actions.d.ts +8 -0
  100. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/controller.d.ts +11 -0
  101. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/converter.d.ts +9 -0
  102. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/dto.d.ts +20 -0
  103. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/entity.d.ts +6 -0
  104. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/index.d.ts +8 -0
  105. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/manager.d.ts +7 -0
  106. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/models.d.ts +19 -0
  107. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/query.d.ts +11 -0
  108. package/dist/esm/types/platforms/nest/__test__/server/entities/foo/repository.d.ts +6 -0
  109. package/dist/esm/types/platforms/nest/__test__/server/entities/index.d.ts +6 -0
  110. package/dist/esm/types/platforms/nest/__test__/server/index.d.ts +4 -0
  111. package/dist/esm/types/platforms/nest/__test__/tests/base/test_crud_actions.test.d.ts +1 -0
  112. package/dist/esm/types/platforms/nest/__test__/tests/base/test_crud_api.test.d.ts +1 -0
  113. package/dist/esm/types/platforms/nest/__test__/tests/base/test_crud_operations.test.d.ts +1 -0
  114. package/dist/esm/types/platforms/nest/base/entityActions.d.ts +9 -0
  115. package/dist/esm/types/platforms/nest/base/entityManager.d.ts +9 -0
  116. package/dist/esm/types/platforms/nest/base/index.d.ts +1 -0
  117. package/dist/esm/types/platforms/nest/decorators/actions.d.ts +4 -0
  118. package/dist/esm/types/platforms/nest/decorators/adapter.d.ts +4 -0
  119. package/dist/esm/types/platforms/nest/decorators/authorization.d.ts +4 -0
  120. package/dist/esm/types/platforms/nest/decorators/connector.d.ts +4 -0
  121. package/dist/esm/types/platforms/nest/decorators/converter.d.ts +4 -0
  122. package/dist/esm/types/platforms/nest/decorators/entity.d.ts +4 -0
  123. package/dist/esm/types/platforms/nest/decorators/index.d.ts +9 -0
  124. package/dist/esm/types/platforms/nest/decorators/manager.d.ts +4 -0
  125. package/dist/esm/types/platforms/nest/decorators/queryBuilder.d.ts +4 -0
  126. package/dist/esm/types/platforms/nest/decorators/repository.d.ts +4 -0
  127. package/dist/esm/types/platforms/nest/decorators/symbols.d.ts +11 -0
  128. package/dist/esm/types/platforms/nest/index.d.ts +3 -0
  129. package/dist/esm/types/platforms/nest/integrations/index.d.ts +1 -0
  130. package/dist/esm/types/platforms/nest/integrations/typeorm/index.d.ts +2 -0
  131. package/dist/esm/types/platforms/nest/integrations/typeorm/queryBuilder.d.ts +7 -0
  132. package/dist/esm/types/platforms/nest/integrations/typeorm/repository.d.ts +5 -0
  133. package/dist/esm/types/platforms/nest/ioc/discovery/index.d.ts +102 -0
  134. package/dist/esm/types/platforms/nest/ioc/index.d.ts +2 -0
  135. package/dist/esm/types/platforms/nest/ioc/registry/index.d.ts +18 -0
  136. package/dist/esm/types/platforms/nest/module.d.ts +1 -4
  137. package/dist/esm/types/platforms/nest/processors/index.d.ts +2 -0
  138. package/dist/esm/types/platforms/nest/processors/initializer/index.d.ts +16 -0
  139. package/dist/esm/types/platforms/nest/services/index.d.ts +1 -0
  140. package/dist/esm/types/providers/services.d.ts +20 -31
  141. package/dist/esm/types/symbols/ioc.d.ts +2 -6
  142. package/dist/esm/types/templates/index.d.ts +1 -0
  143. package/dist/esm/types/templates/queryBuilder.d.ts +11 -0
  144. package/dist/esm/types/testing/mocks/repository.d.ts +1 -0
  145. package/dist/index.d.ts +237 -94
  146. package/package.json +14 -5
  147. package/readme.md +10 -1
  148. package/dist/cjs/types/platforms/nest/ioc/container/index.d.ts +0 -3
  149. package/dist/cjs/types/platforms/nest/services/manager/index.d.ts +0 -2
  150. package/dist/esm/types/platforms/nest/ioc/container/index.d.ts +0 -3
  151. package/dist/esm/types/platforms/nest/services/manager/index.d.ts +0 -2
@@ -5,12 +5,14 @@ import { IEntitySearchParameters } from "../../abstractions/searchParameters";
5
5
  import { EntitiesSearchResults } from "../../models";
6
6
  import { EntityServiceLocator } from "../../providers/services";
7
7
  import { InMemoryRepository } from "../../testing/mocks/repository";
8
+ import { IEntityManager } from "../../abstractions";
8
9
  export interface FooEntity {
9
10
  id: string;
10
11
  name: string;
11
12
  age: number;
12
13
  updatedAt: Date;
13
14
  }
15
+ export type FooEntityManager = IEntityManager<FooEntity, string, Partial<FooEntity>, Partial<FooEntity>, FooSearchParameters, FooSorting, FooCursor, FooFacets>;
14
16
  export declare class FooRepository extends InMemoryRepository<FooEntity> {
15
17
  }
16
18
  export interface FooSearchFilters {
@@ -21,9 +23,7 @@ export declare enum FooSorting {
21
23
  Name = "Name",
22
24
  Age = "Age"
23
25
  }
24
- export interface FooCursor {
25
- nextPage?: string;
26
- }
26
+ export type FooCursor = number;
27
27
  export interface FooSearchParameters extends IEntitySearchParameters<FooSorting, FooCursor> {
28
28
  filters?: FooSearchFilters;
29
29
  }
@@ -49,24 +49,24 @@ export interface FooListItemDto {
49
49
  age: number;
50
50
  };
51
51
  }
52
- export interface FooCreateData {
52
+ export interface FooCreateDto {
53
53
  profile: {
54
54
  name: string;
55
55
  age: number;
56
56
  };
57
57
  }
58
- export interface FooUpdateData {
58
+ export interface FooUpdateDto {
59
59
  profile: {
60
60
  name: string;
61
61
  age: number;
62
62
  };
63
63
  }
64
- export declare class FooConverter implements IEntityConverter<FooEntity, FooDto, FooListItemDto, FooCreateData, FooUpdateData> {
64
+ export declare class FooConverter implements IEntityConverter<FooEntity, FooDto, FooListItemDto, FooCreateDto, FooUpdateDto> {
65
65
  toListItemDto(entity: FooEntity): FooListItemDto;
66
66
  toEntityDto(entity: FooEntity): FooDto;
67
- createDtoToEntity(input: FooCreateData): Partial<FooEntity>;
68
- updateDtoToEntity(input: FooUpdateData): Partial<FooEntity>;
67
+ createDtoToEntity(input: FooCreateDto): Partial<FooEntity>;
68
+ updateDtoToEntity(input: FooUpdateDto): Partial<FooEntity>;
69
69
  }
70
70
  export declare const registerFooEntity: (container: IEntityManagerServiceRoot, options?: {
71
71
  useConverter?: boolean;
72
- }) => import("../../abstractions/configuration").IEntityManagerServiceCollection<FooEntity, string>;
72
+ }) => import("../../abstractions").IEntityManagerServiceCollection<FooEntity, string>;
@@ -1,14 +1,15 @@
1
- import { DataSource, Repository } from "typeorm";
2
- import { IEntitiesQueryBuilder, IEntityConverter, IEntityManagerServiceRoot, IEntitySearchParameters } from "../../../../abstractions";
1
+ import { DataSource, Repository, FindOptionsWhere } from "typeorm";
2
+ import { IEntityConverter, IEntityManager, IEntityManagerServiceRoot, IEntitySearchParameters } from "../../../../abstractions";
3
3
  import { TypeOrmRepository } from "../../../../integrations/repository/typeorm";
4
4
  import { EntityServiceLocator } from "../../../../providers/services";
5
- import { EntitiesSearchResults } from "../../../../models";
5
+ import { TypeOrmQueryBuilder } from "../../../../integrations/repository/typeorm";
6
6
  export declare class FooEntity {
7
7
  id: string;
8
8
  name: string;
9
9
  age: number;
10
10
  updatedAt: Date;
11
11
  }
12
+ export type FooEntityManager = IEntityManager<FooEntity, string, Partial<FooEntity>, Partial<FooEntity>, FooSearchParameters, FooSorting, FooCursor, FooFacets>;
12
13
  export declare class FooTypeOrmRepo extends TypeOrmRepository<FooEntity, string> {
13
14
  constructor(repository: Repository<FooEntity>);
14
15
  }
@@ -20,19 +21,17 @@ export declare enum FooSorting {
20
21
  Name = "Name",
21
22
  Age = "Age"
22
23
  }
23
- export interface FooCursor {
24
- nextPage?: string;
25
- }
24
+ export type FooCursor = number;
26
25
  export interface FooSearchParameters extends IEntitySearchParameters<FooSorting, FooCursor> {
27
26
  filters?: FooSearchFilters;
28
27
  }
29
28
  export interface FooFacets {
30
29
  }
31
- export declare class FooQueryBuilder implements IEntitiesQueryBuilder<FooEntity, FooSearchParameters, FooSorting, FooCursor, FooFacets> {
32
- private readonly services;
33
- private readonly repository;
30
+ export declare class FooQueryBuilder extends TypeOrmQueryBuilder<FooEntity, FooSearchParameters, FooSorting, FooFacets> {
34
31
  constructor(services: EntityServiceLocator<FooEntity, string>);
35
- search(request: FooSearchParameters): Promise<EntitiesSearchResults<FooSearchParameters, FooEntity, FooSorting, FooCursor, FooFacets>>;
32
+ protected buildWhereClause(request: FooSearchParameters): FindOptionsWhere<FooEntity> | FindOptionsWhere<FooEntity>[];
33
+ private buildAgeWhereClause;
34
+ protected calculateFacets(request: FooSearchParameters): Promise<FooFacets | undefined>;
36
35
  }
37
36
  export interface FooDto {
38
37
  id: string;
@@ -1,8 +1,8 @@
1
1
  import { EntitiesSearchResults } from "../models";
2
2
  import { SortingType } from "./common";
3
3
  import { IEntitySearchParameters } from "./searchParameters";
4
- export interface IEntityCreateAction<TEntity, TEntityCreateInput, TEntityDto> {
5
- execute(input: TEntityCreateInput): Promise<TEntityDto>;
4
+ export interface IEntityCreateAction<TEntity, TEntityCreateDto, TEntityDto> {
5
+ execute(input: TEntityCreateDto): Promise<TEntityDto>;
6
6
  }
7
7
  export interface IEntityDeleteAction<TEntity, TEntityId> {
8
8
  execute(id: TEntityId): Promise<void>;
@@ -10,20 +10,20 @@ export interface IEntityDeleteAction<TEntity, TEntityId> {
10
10
  export interface IEntityGetAction<TEntity, TEntityId, TEntityDto> {
11
11
  execute(id: TEntityId): Promise<TEntityDto | undefined>;
12
12
  }
13
- export interface IEntityUpdateAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto> {
14
- execute(id: TEntityId, data: TEntityUpdateData): Promise<TEntityDto>;
13
+ export interface IEntityUpdateAction<TEntity, TEntityId, TEntityUpdateDto, TEntityDto> {
14
+ execute(id: TEntityId, data: TEntityUpdateDto): Promise<TEntityDto>;
15
15
  }
16
- export interface IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto> {
17
- execute(id: TEntityId, input: TEntityUpdateData): Promise<TEntityDto>;
16
+ export interface IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateDto, TEntityDto> {
17
+ execute(id: TEntityId, input: TEntityUpdateDto): Promise<TEntityDto>;
18
18
  }
19
19
  export interface IEntitiesSearchAction<TEntity, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TEntityListItemDto, TSorting extends SortingType, TCursor, TFacets> {
20
20
  execute(request: TEntitySearchParameters): Promise<EntitiesSearchResults<TEntitySearchParameters, TEntityListItemDto, TSorting, TCursor, TFacets>>;
21
21
  }
22
- export interface IEntityActions<TEntity, TEntityId> {
23
- get<TEntityDto>(): IEntityGetAction<TEntity, TEntityId, TEntityDto>;
24
- search<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TEntityListItemDto, TSorting extends SortingType, TCursor, TFacets>(): IEntitiesSearchAction<TEntity, TEntitySearchParameters, TEntityListItemDto, TSorting, TCursor, TFacets>;
25
- create<TEntityCreateData, TEntityDto>(): IEntityCreateAction<TEntity, TEntityCreateData, TEntityDto>;
26
- update<TEntityUpdateData, TEntityDto>(): IEntityUpdateAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto>;
27
- upsert<TEntityUpdateData, TEntityDto>(): IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto>;
22
+ export interface IEntityActions<TEntity, TEntityId, TEntityCreateDto, TEntityUpdateDto, TEntityDto, TEntityListItemDto, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> {
23
+ get(): IEntityGetAction<TEntity, TEntityId, TEntityDto>;
24
+ search(): IEntitiesSearchAction<TEntity, TEntitySearchParameters, TEntityListItemDto, TSorting, TCursor, TFacets>;
25
+ create(): IEntityCreateAction<TEntity, TEntityCreateDto, TEntityDto>;
26
+ update(): IEntityUpdateAction<TEntity, TEntityId, TEntityUpdateDto, TEntityDto>;
27
+ upsert(): IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateDto, TEntityDto>;
28
28
  delete(): IEntityDeleteAction<TEntity, TEntityId>;
29
29
  }
@@ -0,0 +1,8 @@
1
+ export interface IEntityCreateCommandAdapter<TEntity, TEntityCreateData> {
2
+ createDataToEntity(data: TEntityCreateData): Partial<TEntity>;
3
+ }
4
+ export interface IEntityUpdateCommandAdapter<TEntity, TEntityUpdateData> {
5
+ updateDataToEntity(input: TEntityUpdateData): Partial<TEntity>;
6
+ }
7
+ export interface IEntityAdapter<TEntity, TEntityCreateData, TEntityUpdateData> extends IEntityCreateCommandAdapter<TEntity, TEntityCreateData>, IEntityUpdateCommandAdapter<TEntity, TEntityUpdateData> {
8
+ }
@@ -1,5 +1,5 @@
1
- export interface IEntityCreateCommand<TEntity, TEntityCreateInput> {
2
- execute(input: TEntityCreateInput): Promise<TEntity>;
1
+ export interface IEntityCreateCommand<TEntity, TEntityCreateData> {
2
+ execute(input: TEntityCreateData): Promise<TEntity>;
3
3
  }
4
4
  export interface IEntityUpdateCommand<TEntity, TEntityId, TEntityUpdateData> {
5
5
  execute(id: TEntityId, data: TEntityUpdateData): Promise<TEntity>;
@@ -1,4 +1,6 @@
1
- import { EntityServiceLocator } from "../providers/services";
1
+ import { ServiceLocator } from "../ioc";
2
+ import { EntitiesServiceLocator, EntityServiceLocator } from "../providers/services";
3
+ import { IEntityAdapter } from "./adapters";
2
4
  import { IEntityAuthorizationMiddleware } from "./authorization";
3
5
  import { SortingType } from "./common";
4
6
  import { ConnectorOptions, IEntityConnector } from "./connectors";
@@ -9,6 +11,9 @@ import { ReplicaOptions } from "./replication";
9
11
  import { IEntityRepository } from "./repository";
10
12
  import { IEntitySearchParameters } from "./searchParameters";
11
13
  export interface IEntityManagerServiceRoot {
14
+ locator: ServiceLocator;
15
+ getEntitiesServicesLocator(): EntitiesServiceLocator;
16
+ getEntityServicesLocator<TEntity, TEntityId>(entityName: string): EntityServiceLocator<TEntity, TEntityId>;
12
17
  registerEntity<TEntity, TEntityId, TRepository extends IEntityRepository<TEntity, TEntityId, unknown, unknown, unknown, unknown>>(entityName: string, repository: TRepository): IEntityManagerServiceCollection<TEntity, TEntityId>;
13
18
  }
14
19
  export interface IEntityManagerServiceCollection<TEntity, TEntityId> {
@@ -17,6 +22,7 @@ export interface IEntityManagerServiceCollection<TEntity, TEntityId> {
17
22
  queryBuilder: TEntitiesQueryBuilder;
18
23
  }): IEntityManagerServiceCollection<TEntity, TEntityId>;
19
24
  addConverter<TEntityDto, TListItemDto, TEntityCreateInput, TEntityUpdateInput, TEntityConverter extends IEntityConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateInput, TEntityUpdateInput>>(converter: TEntityConverter): IEntityManagerServiceCollection<TEntity, TEntityId>;
25
+ addAdapter<TEntityCreateData, TEntityUpdateData, TEntityAdapter extends IEntityAdapter<TEntity, TEntityCreateData, TEntityUpdateData>>(adapter: TEntityAdapter): IEntityManagerServiceCollection<TEntity, TEntityId>;
20
26
  addAuthorization<TEntityAuthorizationMiddleware extends IEntityAuthorizationMiddleware<TEntity>>({ middleware, }: {
21
27
  middleware: TEntityAuthorizationMiddleware;
22
28
  }): IEntityManagerServiceCollection<TEntity, TEntityId>;
@@ -1,24 +1,16 @@
1
- export interface IEntitiesSearchConverter<TEntity, TListItemDto> {
1
+ export interface IEntitiesSearchActionConverter<TEntity, TListItemDto> {
2
2
  toListItemDto(entity: TEntity): TListItemDto;
3
3
  }
4
- export interface IEntityCreateCommandConverter<TEntity, TEntityCreateInput> {
5
- createDtoToEntity(input: TEntityCreateInput): Partial<TEntity>;
6
- }
7
- export interface IEntityCreateActionConverter<TEntity, TEntityDto> {
4
+ export interface IEntityGetActionConverter<TEntity, TEntityDto> {
8
5
  toEntityDto(entity: TEntity): TEntityDto;
9
6
  }
10
- export interface IEntityCreateConverter<TEntity, TEntityCreateInput, TEntityDto> extends IEntityCreateCommandConverter<TEntity, TEntityCreateInput>, IEntityCreateActionConverter<TEntity, TEntityDto> {
11
- }
12
- export interface IEntityGetConverter<TEntity, TEntityDto> {
7
+ export interface IEntityCreateActionConverter<TEntity, TEntityDto, TEntityCreateDto> {
8
+ createDtoToEntity(data: TEntityCreateDto): Partial<TEntity>;
13
9
  toEntityDto(entity: TEntity): TEntityDto;
14
10
  }
15
- export interface IEntityUpdateCommandConverter<TEntity, TEntityUpdateInput> {
16
- updateDtoToEntity(input: TEntityUpdateInput): Partial<TEntity>;
17
- }
18
- export interface IEntityUpdateActionConverter<TEntity, TEntityDto> {
11
+ export interface IEntityUpdateActionConverter<TEntity, TEntityDto, TEntityUpdateDto> {
19
12
  toEntityDto(entity: TEntity): TEntityDto;
13
+ updateDtoToEntity(data: TEntityUpdateDto): Partial<TEntity>;
20
14
  }
21
- export interface IEntityUpdateConverter<TEntity, TEntityUpdateInput, TEntityDto> extends IEntityUpdateCommandConverter<TEntity, TEntityUpdateInput>, IEntityUpdateActionConverter<TEntity, TEntityDto> {
22
- }
23
- export interface IEntityConverter<TEntity, TEntityDto = TEntity, TListItemDto = TEntity, TEntityCreateInput = TEntity, TEntityUpdateInput = TEntity> extends IEntitiesSearchConverter<TEntity, TListItemDto>, IEntityCreateCommandConverter<TEntity, TEntityCreateInput>, IEntityCreateActionConverter<TEntity, TEntityDto>, IEntityCreateConverter<TEntity, TEntityCreateInput, TEntityDto>, IEntityGetConverter<TEntity, TEntityDto>, IEntityUpdateCommandConverter<TEntity, TEntityUpdateInput>, IEntityUpdateActionConverter<TEntity, TEntityDto> {
15
+ export interface IEntityConverter<TEntity, TEntityDto, TListItemDto, TEntityCreateDto, TEntityUpdateDto> extends IEntitiesSearchActionConverter<TEntity, TListItemDto>, IEntityGetActionConverter<TEntity, TEntityDto>, IEntityCreateActionConverter<TEntity, TEntityDto, TEntityCreateDto>, IEntityUpdateActionConverter<TEntity, TEntityDto, TEntityUpdateDto> {
24
16
  }
@@ -1,8 +1,10 @@
1
1
  export { IEntityCreateAction, IEntityDeleteAction, IEntityGetAction, IEntityUpdateAction, IEntityUpsertAction, IEntitiesSearchAction, IEntityActions, } from "./actions";
2
+ export { IEntityAdapter } from "./adapters";
2
3
  export * from "./authorization";
3
4
  export { IEntityCreateCommand, IEntityUpdateCommand, IEntityUpsertCommand, IEntityDeleteCommand, } from "./commands";
5
+ export { SortingType } from "./common";
4
6
  export { IEntityManagerServiceRoot, IEntityManagerServiceCollection, } from "./configuration";
5
- export { IEntitiesSearchConverter, IEntityCreateCommandConverter, IEntityCreateActionConverter, IEntityCreateConverter, IEntityGetConverter, IEntityUpdateCommandConverter, IEntityUpdateActionConverter, IEntityUpdateConverter, IEntityConverter, } from "./converters";
7
+ export { IEntityConverter } from "./converters";
6
8
  export * from "./errors";
7
9
  export { IEntityEventsManager } from "./events";
8
10
  export * from "./filters";
@@ -2,11 +2,11 @@ import { IEntityCreateCommand, IEntityDeleteCommand, IEntityUpdateCommand, IEnti
2
2
  import { SortingType } from "./common";
3
3
  import { IEntitiesSearchQuery, IEntityGetQuery } from "./queries";
4
4
  import { IEntitySearchParameters } from "./searchParameters";
5
- export interface IEntityManager<TEntity, TEntityId> {
5
+ export interface IEntityManager<TEntity, TEntityId, TEntityCreateData, TEntityUpdateData, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> {
6
6
  get(): IEntityGetQuery<TEntity, TEntityId>;
7
- search<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(): IEntitiesSearchQuery<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
8
- create<TEntityCreateInput>(): IEntityCreateCommand<TEntity, TEntityCreateInput>;
9
- update<TEntityUpdateData>(): IEntityUpdateCommand<TEntity, TEntityId, TEntityUpdateData>;
10
- upsert<TEntityUpdateData>(): IEntityUpsertCommand<TEntity, TEntityId, TEntityUpdateData>;
7
+ search(): IEntitiesSearchQuery<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
8
+ create(): IEntityCreateCommand<TEntity, TEntityCreateData>;
9
+ update(): IEntityUpdateCommand<TEntity, TEntityId, TEntityUpdateData>;
10
+ upsert(): IEntityUpsertCommand<TEntity, TEntityId, TEntityUpdateData>;
11
11
  delete(): IEntityDeleteCommand<TEntity, TEntityId>;
12
12
  }
@@ -6,6 +6,7 @@ export interface IEntityRepository<TEntity, TEntityId, TGetConditions, TFindCond
6
6
  all(): Promise<TEntity[]>;
7
7
  find(condition: TFindCondition): Promise<TEntity[]>;
8
8
  findById(id: TEntityId[]): Promise<TEntity[]>;
9
+ count(condition: TFindCondition): Promise<number>;
9
10
  delete(id: TEntityId): Promise<void>;
10
11
  deleteBy(condition: TDeleteCondition): Promise<void>;
11
12
  create(entity: Partial<TEntity>): Promise<TEntity>;
@@ -10,7 +10,7 @@ export interface ISearchOptions {
10
10
  includeFacets?: boolean;
11
11
  }
12
12
  export interface ISearchRequestPaging<TCursor> {
13
- cursor: TCursor;
13
+ cursor?: TCursor;
14
14
  pageSize: number;
15
15
  }
16
16
  export interface ISearchSortingField<TSorting> {
@@ -1,8 +1,8 @@
1
1
  import { IEntityCreateAction } from "../abstractions/actions";
2
2
  import { EntityServiceLocator } from "../providers/services";
3
- export declare class EntityCreateAction<TEntity, TEntityId, TEntityCreateInput, TEntityDto> implements IEntityCreateAction<TEntity, TEntityCreateInput, TEntityDto> {
3
+ export declare class EntityCreateAction<TEntity, TEntityId, TEntityCreateDto, TEntityDto> implements IEntityCreateAction<TEntity, TEntityCreateDto, TEntityDto> {
4
4
  private readonly services;
5
5
  private readonly logger;
6
6
  constructor(services: EntityServiceLocator<TEntity, TEntityId>);
7
- execute(input: TEntityCreateInput): Promise<TEntityDto>;
7
+ execute(input: TEntityCreateDto): Promise<TEntityDto>;
8
8
  }
@@ -1,7 +1,7 @@
1
1
  import { IEntityUpsertAction } from "../abstractions/actions";
2
2
  import { EntityServiceLocator } from "../providers/services";
3
- export declare class EntityUpsertAction<TEntity, TEntityId, TEntityUpdateInput, TEntityDto> implements IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateInput, TEntityDto> {
3
+ export declare class EntityUpsertAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto> implements IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateData, TEntityDto> {
4
4
  private readonly services;
5
5
  constructor(services: EntityServiceLocator<TEntity, TEntityId>);
6
- execute(id: TEntityId, input: TEntityUpdateInput): Promise<TEntityDto>;
6
+ execute(id: TEntityId, input: TEntityUpdateData): Promise<TEntityDto>;
7
7
  }
@@ -1,9 +1,9 @@
1
1
  import { IEntityCreateCommand } from "../abstractions/commands";
2
2
  import { EntityServiceLocator } from "../providers/services";
3
- export declare class EntityCreateCommand<TEntity, TEntityId, TEntityCreateInput> implements IEntityCreateCommand<TEntity, TEntityCreateInput> {
3
+ export declare class EntityCreateCommand<TEntity, TEntityId, TEntityCreateData> implements IEntityCreateCommand<TEntity, TEntityCreateData> {
4
4
  private readonly services;
5
5
  constructor(services: EntityServiceLocator<TEntity, TEntityId>);
6
- execute(input: TEntityCreateInput): Promise<TEntity>;
6
+ execute(input: TEntityCreateData): Promise<TEntity>;
7
7
  private adaptEntity;
8
8
  private authorize;
9
9
  }
@@ -1,9 +1,9 @@
1
1
  import { IEntityUpdateCommand } from "../abstractions/commands";
2
2
  import { EntityServiceLocator } from "../providers/services";
3
- export declare class EntityUpdateCommand<TEntity, TEntityId, TEntityUpdateInput> implements IEntityUpdateCommand<TEntity, TEntityId, TEntityUpdateInput> {
3
+ export declare class EntityUpdateCommand<TEntity, TEntityId, TEntityUpdateData> implements IEntityUpdateCommand<TEntity, TEntityId, TEntityUpdateData> {
4
4
  private readonly services;
5
5
  constructor(services: EntityServiceLocator<TEntity, TEntityId>);
6
- execute(id: TEntityId, input: TEntityUpdateInput): Promise<TEntity>;
6
+ execute(id: TEntityId, input: TEntityUpdateData): Promise<TEntity>;
7
7
  private adaptEntity;
8
8
  private authorize;
9
9
  }
@@ -5,23 +5,23 @@ import { IEntityManager } from "../abstractions/manager";
5
5
  import { IEntitiesSearchQuery, IEntityGetQuery } from "../abstractions/queries";
6
6
  import { IEntitySearchParameters } from "../abstractions/searchParameters";
7
7
  import { EntityServiceLocator } from "../providers/services";
8
- export declare class EntityManager<TEntity, TEntityId> implements IEntityManager<TEntity, TEntityId> {
8
+ export declare class EntityManager<TEntity, TEntityId, TEntityCreateData, TEntityUpdateData, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> implements IEntityManager<TEntity, TEntityId, TEntityCreateData, TEntityUpdateData, TEntitySearchParameters, TSorting, TCursor, TFacets> {
9
9
  private readonly services;
10
10
  constructor(services: EntityServiceLocator<TEntity, TEntityId>);
11
- get<TEntityId>(): IEntityGetQuery<TEntity, TEntityId>;
12
- search<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets>(): IEntitiesSearchQuery<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
13
- create<TEntityCreateInput>(): IEntityCreateCommand<TEntity, TEntityCreateInput>;
14
- update<TEntityUpdateInput>(): IEntityUpdateCommand<TEntity, TEntityId, TEntityUpdateInput>;
15
- upsert<TEntityUpdateInput>(): IEntityUpsertCommand<TEntity, TEntityId, TEntityUpdateInput>;
16
- delete<TEntityId>(): IEntityDeleteCommand<TEntity, TEntityId>;
11
+ get(): IEntityGetQuery<TEntity, TEntityId>;
12
+ search(): IEntitiesSearchQuery<TEntity, TEntitySearchParameters, TSorting, TCursor, TFacets>;
13
+ create(): IEntityCreateCommand<TEntity, TEntityCreateData>;
14
+ update(): IEntityUpdateCommand<TEntity, TEntityId, TEntityUpdateData>;
15
+ upsert(): IEntityUpsertCommand<TEntity, TEntityId, TEntityUpdateData>;
16
+ delete(): IEntityDeleteCommand<TEntity, TEntityId>;
17
17
  }
18
- export declare class EntityActions<TEntity, TEntityId> implements IEntityActions<TEntity, TEntityId> {
18
+ export declare class EntityActions<TEntity, TEntityId, TEntityCreateDto, TEntityUpdateDto, TEntityDto, TEntityListItemDto, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> implements IEntityActions<TEntity, TEntityId, TEntityCreateDto, TEntityUpdateDto, TEntityDto, TEntityListItemDto, TEntitySearchParameters, TSorting, TCursor, TFacets> {
19
19
  private readonly services;
20
20
  constructor(services: EntityServiceLocator<TEntity, TEntityId>);
21
- get<TEntityId, TEntityDto>(): IEntityGetAction<TEntity, TEntityId, TEntityDto>;
22
- search<TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TEntityListItemDto, TSorting extends SortingType, TCursor, TFacets>(): IEntitiesSearchAction<TEntity, TEntitySearchParameters, TEntityListItemDto, TSorting, TCursor, TFacets>;
23
- create<TEntityCreateInput, TEntityDto>(): IEntityCreateAction<TEntity, TEntityCreateInput, TEntityDto>;
24
- update<TEntityUpdateInput, TEntityDto>(): IEntityUpdateAction<TEntity, TEntityId, TEntityUpdateInput, TEntityDto>;
25
- upsert<TEntityUpdateInput, TEntityDto>(): IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateInput, TEntityDto>;
21
+ get(): IEntityGetAction<TEntity, TEntityId, TEntityDto>;
22
+ search(): IEntitiesSearchAction<TEntity, TEntitySearchParameters, TEntityListItemDto, TSorting, TCursor, TFacets>;
23
+ create(): IEntityCreateAction<TEntity, TEntityCreateDto, TEntityDto>;
24
+ update(): IEntityUpdateAction<TEntity, TEntityId, TEntityUpdateDto, TEntityDto>;
25
+ upsert(): IEntityUpsertAction<TEntity, TEntityId, TEntityUpdateDto, TEntityDto>;
26
26
  delete(): IEntityDeleteAction<TEntity, TEntityId>;
27
27
  }
@@ -1,2 +1,3 @@
1
1
  export * from "./abstractions";
2
2
  export * from "./platforms";
3
+ export * from "./templates";
@@ -0,0 +1 @@
1
+ export * from "./repository";
@@ -0,0 +1 @@
1
+ export * from "./typeorm";
@@ -1 +1,2 @@
1
- export * from "./repository";
1
+ export { TypeOrmQueryBuilder } from "./queryBuilder";
2
+ export { TypeOrmRepository } from "./repository";
@@ -0,0 +1,22 @@
1
+ import { FindOptionsRelations, FindOptionsWhere, ObjectLiteral } from "typeorm";
2
+ import { IEntitySearchParameters, SortingType } from "../../../abstractions";
3
+ import { EntitiesSearchResults } from "../../../models";
4
+ import { QueryBuilderBase } from "../../../templates";
5
+ import { TypeOrmRepository } from "./repository";
6
+ import { EntityServiceLocator } from "../../../providers/services";
7
+ export declare abstract class TypeOrmQueryBuilder<TEntity extends ObjectLiteral, TEntitySearchParameters extends IEntitySearchParameters<TSorting, number>, TSorting extends SortingType, TFacets> extends QueryBuilderBase<TEntity, TEntitySearchParameters, TSorting, number, TFacets> {
8
+ private readonly services;
9
+ private repository;
10
+ constructor(services: EntityServiceLocator<TEntity, unknown>);
11
+ search(request: TEntitySearchParameters): Promise<EntitiesSearchResults<TEntitySearchParameters, TEntity, TSorting, number, TFacets>>;
12
+ protected findPagedQueryResults(request: TEntitySearchParameters): Promise<TEntity[]>;
13
+ protected getRelationsToLoad(request: TEntitySearchParameters): FindOptionsRelations<TEntity> | undefined;
14
+ protected buildPagingParameters(request: TEntitySearchParameters): {
15
+ skip: number | undefined;
16
+ take: number | undefined;
17
+ };
18
+ protected countQueryResults(request: TEntitySearchParameters): Promise<number>;
19
+ protected abstract buildWhereClause(request: TEntitySearchParameters): FindOptionsWhere<TEntity>[] | FindOptionsWhere<TEntity>;
20
+ protected abstract calculateFacets(request: TEntitySearchParameters): Promise<TFacets | undefined>;
21
+ protected getRepository(): TypeOrmRepository<TEntity, unknown>;
22
+ }
@@ -3,13 +3,14 @@ import { IEntityRepository } from "../../../abstractions";
3
3
  type UpdateCriteria<TEntity extends ObjectLiteral> = string | string[] | number | number[] | Date | Date[] | ObjectId | ObjectId[] | FindOptionsWhere<TEntity>;
4
4
  type DeleteCriteria<TEntity extends ObjectLiteral> = string | string[] | number | number[] | Date | Date[] | ObjectId | ObjectId[] | FindOptionsWhere<TEntity>;
5
5
  export declare class TypeOrmRepository<TEntity extends ObjectLiteral, TEntityId> implements IEntityRepository<TEntity, TEntityId, FindOneOptions<TEntity>, FindManyOptions<TEntity>, UpdateCriteria<TEntity>, DeleteCriteria<TEntity>> {
6
- private readonly innerRepository;
6
+ protected readonly innerRepository: Repository<TEntity>;
7
7
  constructor(innerRepository: Repository<TEntity>);
8
8
  exists(id: TEntityId): Promise<boolean>;
9
9
  existsBy(condition: FindOneOptions<TEntity>): Promise<boolean>;
10
10
  get(id: TEntityId): Promise<TEntity | undefined>;
11
11
  getBy(condition: FindOneOptions<TEntity>): Promise<TEntity | undefined>;
12
12
  all(): Promise<TEntity[]>;
13
+ count(condition: FindManyOptions<TEntity>): Promise<number>;
13
14
  find(condition: FindManyOptions<TEntity>): Promise<TEntity[]>;
14
15
  findById(id: TEntityId[]): Promise<TEntity[]>;
15
16
  delete(id: TEntityId): Promise<void>;
@@ -2,6 +2,9 @@ import { Type } from "../abstractions/common";
2
2
  import { IResolveServiceOptions, IServiceLocator } from "../abstractions/ioc";
3
3
  export declare class ServiceLocator implements IServiceLocator {
4
4
  private services;
5
+ all(): {
6
+ [key: string]: any;
7
+ };
5
8
  register<T>(name: string, service: T): void;
6
9
  registerEntityService<T>(serviceName: string, entityName: string, service: T): void;
7
10
  registerEntityServiceType<T>(serviceType: Type<T>, entityName: string, service: T): void;
@@ -3,6 +3,7 @@ import { IEntitySearchParameters } from "../abstractions/searchParameters";
3
3
  export type EntitiesSearchResultsPaging<TCursor> = {
4
4
  pageIndex: number;
5
5
  pageSize: number;
6
+ totPageItems: number;
6
7
  totPages: number;
7
8
  totItems: number;
8
9
  nextPageCursor?: TCursor;
@@ -0,0 +1,8 @@
1
+ import { NestEntityActions } from "../../../../base/entityActions";
2
+ import { EntityManagerRegistry } from "../../../../ioc/registry";
3
+ import { FooCreateDto, FooDto, FooListItemDto, FooUpdateDto } from "./dto";
4
+ import { FooEntity } from "./entity";
5
+ import { FooCursor, FooEntityId, FooFacets, FooSearchParameters, FooSorting } from "./models";
6
+ export declare class FooEntityActions extends NestEntityActions<FooEntity, FooEntityId, FooCreateDto, FooUpdateDto, FooDto, FooListItemDto, FooSearchParameters, FooSorting, FooCursor, FooFacets> {
7
+ constructor(registry: EntityManagerRegistry);
8
+ }
@@ -0,0 +1,11 @@
1
+ import { FooEntityActions } from "./actions";
2
+ import { FooCreateDto, FooDto, FooListItemDto, FooUpdateDto } from "./dto";
3
+ export declare class FooController {
4
+ private readonly actions;
5
+ constructor(actions: FooEntityActions);
6
+ item(id: string): Promise<FooDto | undefined>;
7
+ create(data: FooCreateDto): Promise<FooDto>;
8
+ update(id: string, item: FooUpdateDto): Promise<FooDto>;
9
+ delete(id: string): Promise<void>;
10
+ items(): Promise<FooListItemDto[]>;
11
+ }
@@ -0,0 +1,9 @@
1
+ import { IEntityConverter } from "../../../../../../abstractions";
2
+ import { FooEntity } from "./entity";
3
+ import { FooCreateDto, FooDto, FooListItemDto, FooUpdateDto } from "./dto";
4
+ export declare class FooConverter implements IEntityConverter<FooEntity, FooDto, FooListItemDto, FooCreateDto, FooUpdateDto> {
5
+ toListItemDto(entity: FooEntity): FooListItemDto;
6
+ toEntityDto(entity: FooEntity): FooDto;
7
+ createDtoToEntity(input: FooCreateDto): Partial<FooEntity>;
8
+ updateDtoToEntity(input: FooUpdateDto): Partial<FooEntity>;
9
+ }
@@ -0,0 +1,20 @@
1
+ export declare class FooProfile {
2
+ name: string;
3
+ age: number;
4
+ }
5
+ export declare class FooDto {
6
+ id: string;
7
+ profile: FooProfile;
8
+ updatedAt: Date;
9
+ }
10
+ export declare class FooListItemDto {
11
+ id: string;
12
+ profile: FooProfile;
13
+ }
14
+ export declare class FooCreateDto {
15
+ profile: FooProfile;
16
+ }
17
+ export declare class FooUpdateDto {
18
+ id: string;
19
+ profile: FooProfile;
20
+ }
@@ -0,0 +1,6 @@
1
+ export declare class FooEntity {
2
+ id: string;
3
+ name: string;
4
+ age: number;
5
+ updatedAt: Date;
6
+ }
@@ -0,0 +1,8 @@
1
+ import { FooEntityActions } from "./actions";
2
+ import { FooController } from "./controller";
3
+ import { FooConverter } from "./converter";
4
+ import { FooEntityManager } from "./manager";
5
+ import { FooQueryBuilder } from "./query";
6
+ import { FooRepository } from "./repository";
7
+ export declare const FooProviders: (typeof FooEntityActions | typeof FooConverter | typeof FooEntityManager | typeof FooQueryBuilder | typeof FooRepository)[];
8
+ export declare const FooControllers: (typeof FooController)[];
@@ -0,0 +1,7 @@
1
+ import { NestEntityManager } from "../../../../base";
2
+ import { EntityManagerRegistry } from "../../../../ioc/registry";
3
+ import { FooEntity } from "./entity";
4
+ import { FooCreateData, FooCursor, FooFacets, FooSearchParameters, FooSorting, FooUpdateData } from "./models";
5
+ export declare class FooEntityManager extends NestEntityManager<FooEntity, string, FooCreateData, FooUpdateData, FooSearchParameters, FooSorting, FooCursor, FooFacets> {
6
+ constructor(registry: EntityManagerRegistry);
7
+ }
@@ -0,0 +1,19 @@
1
+ import { IEntitySearchParameters } from "../../../../../../abstractions";
2
+ import { FooEntity } from "./entity";
3
+ export type FooEntityId = string;
4
+ export type FooCreateData = Partial<FooEntity>;
5
+ export type FooUpdateData = Partial<FooEntity>;
6
+ export interface FooSearchParameters extends IEntitySearchParameters<FooSorting, FooCursor> {
7
+ filters?: FooSearchFilters;
8
+ }
9
+ export interface FooFacets {
10
+ }
11
+ export interface FooSearchFilters {
12
+ minAge?: number;
13
+ maxAge?: number;
14
+ }
15
+ export declare enum FooSorting {
16
+ Name = "Name",
17
+ Age = "Age"
18
+ }
19
+ export type FooCursor = number;
@@ -0,0 +1,11 @@
1
+ import { FindOptionsWhere } from "typeorm";
2
+ import { FooEntity } from "./entity";
3
+ import { FooFacets, FooSearchParameters, FooSorting } from "./models";
4
+ import { NestTypeOrmQueryBuilder } from "../../../../integrations/typeorm";
5
+ import { EntityManagerRegistry } from "../../../../ioc/registry";
6
+ export declare class FooQueryBuilder extends NestTypeOrmQueryBuilder<FooEntity, FooSearchParameters, FooSorting, FooFacets> {
7
+ constructor(registry: EntityManagerRegistry);
8
+ protected buildWhereClause(request: FooSearchParameters): FindOptionsWhere<FooEntity> | FindOptionsWhere<FooEntity>[];
9
+ private buildAgeWhereClause;
10
+ protected calculateFacets(request: FooSearchParameters): Promise<FooFacets | undefined>;
11
+ }
@@ -0,0 +1,6 @@
1
+ import { Repository } from "typeorm";
2
+ import { FooEntity } from "./entity";
3
+ import { NestTypeOrmRepository } from "../../../../integrations";
4
+ export declare class FooRepository extends NestTypeOrmRepository<FooEntity, string> {
5
+ constructor(repository: Repository<FooEntity>);
6
+ }
@@ -0,0 +1,6 @@
1
+ import { FooEntity } from "./foo/entity";
2
+ import { DataSource } from "typeorm";
3
+ export declare const mockDatabaseProviders: (dataSource: DataSource) => {
4
+ provide: string | Function;
5
+ useValue: import("typeorm").Repository<FooEntity>;
6
+ }[];
@@ -0,0 +1,4 @@
1
+ export declare const createTestServer: () => Promise<{
2
+ app: import("@nestjs/testing").TestingModule;
3
+ dataSource: import("typeorm").DataSource;
4
+ }>;
@@ -0,0 +1,9 @@
1
+ import { IEntityActions, IEntitySearchParameters, SortingType } from "../../../abstractions";
2
+ import { EntityServiceLocator } from "../../../providers/services";
3
+ import { EntityManagerRegistry } from "../ioc/registry";
4
+ export declare abstract class NestEntityActions<TEntity, TEntityId, TEntityCreateDto, TEntityUpdateDto, TEntityDto, TEntityListItemDto, TEntitySearchParameters extends IEntitySearchParameters<TSorting, TCursor>, TSorting extends SortingType, TCursor, TFacets> {
5
+ protected readonly services: EntityServiceLocator<TEntity, TEntityId>;
6
+ private actionsInstance;
7
+ constructor(entityName: string, registry: EntityManagerRegistry);
8
+ get provider(): IEntityActions<TEntity, TEntityId, TEntityCreateDto, TEntityUpdateDto, TEntityDto, TEntityListItemDto, TEntitySearchParameters, TSorting, TCursor, TFacets>;
9
+ }