@goatlab/fluent 0.6.24 → 0.7.1

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 (126) hide show
  1. package/README.md +17 -136
  2. package/dist/BaseConnector.d.ts +45 -75
  3. package/dist/BaseConnector.js +218 -317
  4. package/dist/Fluent.d.ts +2 -21
  5. package/dist/Fluent.js +0 -33
  6. package/dist/FluentEntity.d.ts +7 -0
  7. package/dist/FluentEntity.js +28 -0
  8. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +31 -24
  9. package/dist/TypeOrmConnector/TypeOrmConnector.js +599 -343
  10. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +182 -48
  11. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +103 -3
  12. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +30 -13
  13. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +5 -0
  14. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +17 -0
  15. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +5 -0
  16. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +17 -0
  17. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +3 -3
  18. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +8 -3
  19. package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +1 -1
  20. package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +42 -16
  21. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +43 -0
  22. package/dist/TypeOrmConnector/test/basic/goat.entity.js +19 -8
  23. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +5 -0
  24. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +16 -0
  25. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +5 -0
  26. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +16 -0
  27. package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +3 -4
  28. package/dist/TypeOrmConnector/test/basic/goat.repository.js +7 -3
  29. package/dist/TypeOrmConnector/test/dbEntities.d.ts +6 -6
  30. package/dist/TypeOrmConnector/test/docker/docker.d.ts +35 -0
  31. package/dist/TypeOrmConnector/test/docker/docker.js +149 -0
  32. package/dist/TypeOrmConnector/test/docker/mysql.d.ts +17 -0
  33. package/dist/TypeOrmConnector/test/docker/mysql.js +132 -0
  34. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +8 -0
  35. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +23 -0
  36. package/dist/TypeOrmConnector/test/mongo/mongo.memory.d.ts +4 -0
  37. package/dist/TypeOrmConnector/test/mongo/mongo.memory.js +43 -0
  38. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +2 -0
  39. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +12 -0
  40. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +8 -0
  41. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +23 -0
  42. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +6 -0
  43. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +17 -0
  44. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +10 -0
  45. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +31 -0
  46. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +6 -0
  47. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +17 -0
  48. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +2 -0
  49. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +16 -0
  50. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +8 -0
  51. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +23 -0
  52. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +6 -0
  53. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +17 -0
  54. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +10 -0
  55. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +32 -0
  56. package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +1 -0
  57. package/dist/TypeOrmConnector/test/relations/car/car.entity.js +13 -5
  58. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +3 -3
  59. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +11 -4
  60. package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +38 -0
  61. package/dist/TypeOrmConnector/test/relations/car/car.schema.js +14 -0
  62. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +85 -32
  63. package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +35 -0
  64. package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +16 -0
  65. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +4 -4
  66. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +3 -3
  67. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +12 -4
  68. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +2 -2
  69. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +4 -4
  70. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +15 -0
  71. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +9 -0
  72. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +3 -3
  73. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +8 -3
  74. package/dist/TypeOrmConnector/test/relations/user/user.entity.js +10 -10
  75. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +3 -3
  76. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +17 -5
  77. package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +150 -0
  78. package/dist/TypeOrmConnector/test/relations/user/user.schema.js +18 -0
  79. package/dist/TypeOrmConnector/test/{memoryDataSource.d.ts → sqlite/memoryDataSource.d.ts} +0 -0
  80. package/dist/TypeOrmConnector/test/{memoryDataSource.js → sqlite/memoryDataSource.js} +1 -1
  81. package/dist/core/Loopback/build-schema.js +1 -3
  82. package/dist/core/Loopback/json-to-schema.js +6 -6
  83. package/dist/core/Loopback/mapValues.d.ts +2 -0
  84. package/dist/core/Loopback/mapValues.js +835 -0
  85. package/dist/core/Loopback/query.js +6 -4
  86. package/dist/core/Loopback/type-resolver.d.ts +1 -1
  87. package/dist/core/Nestjs/applyDecorators.d.ts +1 -1
  88. package/dist/core/Nestjs/types/common.js +3 -1
  89. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +1 -1
  90. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +9 -4
  91. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +1 -1
  92. package/dist/core/Nestjs/types/decorators/field.decorator.js +6 -6
  93. package/dist/core/Nestjs/types/lazy-metadata.storage.js +3 -3
  94. package/dist/core/Nestjs/types/omit-type.js +6 -2
  95. package/dist/core/Nestjs/types/reflection.utils.d.ts +1 -1
  96. package/dist/core/Nestjs/types/reflection.utils.js +9 -2
  97. package/dist/core/Nestjs/types/type-metadata.storage.js +4 -4
  98. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +1 -11
  99. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +2 -2
  100. package/dist/decorators.d.ts +25 -21
  101. package/dist/decorators.js +76 -70
  102. package/dist/index.d.ts +6 -7
  103. package/dist/index.js +5 -7
  104. package/dist/loadRelations.js +108 -68
  105. package/dist/tsconfig.tsbuildinfo +1 -1
  106. package/dist/types.d.ts +104 -55
  107. package/dist/types.js +20 -0
  108. package/package.json +11 -102
  109. package/dist/TypeOrmConnector/TypeOrmMongoConnector._bypass.d.ts +0 -1
  110. package/dist/TypeOrmConnector/TypeOrmMongoConnector._bypass.js +0 -52
  111. package/dist/TypeOrmConnector/TypeOrmMysqlConnector._bypass.d.ts +0 -1
  112. package/dist/TypeOrmConnector/TypeOrmMysqlConnector._bypass.js +0 -55
  113. package/dist/TypeOrmConnector/test/basic/goat.dto.d.ts +0 -8
  114. package/dist/TypeOrmConnector/test/basic/goat.dto.js +0 -18
  115. package/dist/TypeOrmConnector/test/relations/car/car.dto.d.ts +0 -5
  116. package/dist/TypeOrmConnector/test/relations/car/car.dto.js +0 -12
  117. package/dist/TypeOrmConnector/test/relations/roles/role.dto.d.ts +0 -5
  118. package/dist/TypeOrmConnector/test/relations/roles/role.dto.js +0 -12
  119. package/dist/TypeOrmConnector/test/relations/roles/roles_user.dto.d.ts +0 -5
  120. package/dist/TypeOrmConnector/test/relations/roles/roles_user.dto.js +0 -12
  121. package/dist/TypeOrmConnector/test/relations/user/user.dto.d.ts +0 -5
  122. package/dist/TypeOrmConnector/test/relations/user/user.dto.js +0 -12
  123. package/dist/core/dtos/access.dto.d.ts +0 -4
  124. package/dist/core/dtos/access.dto.js +0 -21
  125. package/dist/core/dtos/pagination.dto.d.ts +0 -13
  126. package/dist/core/dtos/pagination.dto.js +0 -62
@@ -0,0 +1,7 @@
1
+ export declare class FluentEntity {
2
+ type?: string;
3
+ roles?: string[];
4
+ created?: Date;
5
+ updated?: Date;
6
+ deleted?: Date;
7
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FluentEntity = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const decorators_1 = require("./decorators");
6
+ class FluentEntity {
7
+ }
8
+ tslib_1.__decorate([
9
+ decorators_1.f.property({ required: false }),
10
+ tslib_1.__metadata("design:type", String)
11
+ ], FluentEntity.prototype, "type", void 0);
12
+ tslib_1.__decorate([
13
+ decorators_1.f.stringArray(String, { required: false }),
14
+ tslib_1.__metadata("design:type", Array)
15
+ ], FluentEntity.prototype, "roles", void 0);
16
+ tslib_1.__decorate([
17
+ decorators_1.f.created(),
18
+ tslib_1.__metadata("design:type", Date)
19
+ ], FluentEntity.prototype, "created", void 0);
20
+ tslib_1.__decorate([
21
+ decorators_1.f.updated(),
22
+ tslib_1.__metadata("design:type", Date)
23
+ ], FluentEntity.prototype, "updated", void 0);
24
+ tslib_1.__decorate([
25
+ decorators_1.f.deleted(),
26
+ tslib_1.__metadata("design:type", Date)
27
+ ], FluentEntity.prototype, "deleted", void 0);
28
+ exports.FluentEntity = FluentEntity;
@@ -1,36 +1,43 @@
1
- import { Repository } from 'typeorm';
1
+ import { FindByIdFilter, LoadedResult, QueryOutput, SingleQueryOutput } from './../types';
2
+ import { FindManyOptions, Repository, MongoRepository } from 'typeorm';
2
3
  import { BaseConnector, FluentConnectorInterface } from '../BaseConnector';
3
- import type { Filter, BaseDataElement, PaginatedData, Paginator, Sure } from '../types';
4
+ import type { AnyObject, FluentQuery } from '../types';
4
5
  import { DataSource } from 'typeorm';
5
- export declare const getRelations: (typeOrmRepo: any) => {
6
+ import { z } from 'zod';
7
+ export declare const getRelationsFromModelGenerator: (typeOrmRepo: Repository<any>) => {
6
8
  relations: {};
7
9
  };
8
- export declare class TypeOrmConnector<ModelDTO = BaseDataElement, InputDTO = ModelDTO, OutputDTO = InputDTO> extends BaseConnector<ModelDTO, InputDTO, OutputDTO> implements FluentConnectorInterface<InputDTO, OutputDTO> {
10
+ export interface TypeOrmConnectorParams<Input, Output> {
11
+ entity: any;
12
+ dataSource: DataSource;
13
+ inputSchema: z.ZodType<Input>;
14
+ outputSchema?: z.ZodType<Output>;
15
+ }
16
+ export declare class TypeOrmConnector<ModelDTO = AnyObject, InputDTO = ModelDTO, OutputDTO = InputDTO> extends BaseConnector<ModelDTO, InputDTO, OutputDTO> implements FluentConnectorInterface<ModelDTO, InputDTO, OutputDTO> {
9
17
  private readonly repository;
10
18
  private readonly dataSource;
11
- constructor(entity: any, dataSource: DataSource, relationQuery?: any);
12
- get(): Promise<OutputDTO[]>;
13
- getPaginated(): Promise<PaginatedData<OutputDTO>>;
14
- all(): Promise<OutputDTO[]>;
15
- find(filter?: Filter): Promise<OutputDTO[]>;
16
- paginate(paginator: Paginator): Promise<PaginatedData<OutputDTO>>;
17
- raw(): Repository<ModelDTO>;
19
+ private readonly inputSchema;
20
+ private readonly outputSchema;
21
+ private readonly entity;
22
+ constructor({ entity, dataSource, inputSchema, outputSchema }: TypeOrmConnectorParams<InputDTO, OutputDTO>);
18
23
  insert(data: InputDTO): Promise<OutputDTO>;
19
24
  insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
25
+ raw(): Repository<ModelDTO>;
26
+ mongoRaw(): MongoRepository<ModelDTO>;
27
+ findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
28
+ private getMongoSelect;
29
+ private getMongoLookup;
30
+ private customMongoRelatedSearch;
31
+ private generateTypeOrmQuery;
32
+ protected getTypeOrmWhere(where?: FluentQuery<ModelDTO>['where']): FindManyOptions['where'];
33
+ protected getTypeOrmMongoWhere(where?: FluentQuery<ModelDTO>['where']): FindManyOptions['where'];
20
34
  updateById(id: string, data: InputDTO): Promise<OutputDTO>;
21
35
  replaceById(id: string, data: InputDTO): Promise<OutputDTO>;
22
- clear({ sure }: Sure): Promise<boolean>;
23
- deleteById(id: string): Promise<string>;
24
- findById(id: string): Promise<OutputDTO>;
25
- findByIds(ids: string[]): Promise<OutputDTO[]>;
26
- private getPage;
27
- private getPaginatorLimit;
28
- private getPopulate;
29
- private getGeneratedQuery;
30
- private getFilters;
31
- getMongoFilters(filters: any): any;
36
+ clear(): Promise<boolean>;
37
+ loadFirst(query?: FluentQuery<ModelDTO>): TypeOrmConnector<ModelDTO, InputDTO, OutputDTO>;
38
+ loadById(id: string): LoadedResult<this>;
39
+ requireById(id: string, q?: FindByIdFilter<ModelDTO>): Promise<SingleQueryOutput<FindByIdFilter<ModelDTO>, ModelDTO, OutputDTO>>;
40
+ protected clone(): any;
41
+ findByIds<T extends FindByIdFilter<ModelDTO>>(ids: string[], q?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
32
42
  private getOrderBy;
33
- private getLimit;
34
- private getSkip;
35
- private getSelect;
36
43
  }