@goatlab/fluent 0.6.24 → 0.6.30

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 (125) hide show
  1. package/dist/BaseConnector.d.ts +45 -75
  2. package/dist/BaseConnector.js +218 -317
  3. package/dist/Fluent.d.ts +2 -21
  4. package/dist/Fluent.js +0 -33
  5. package/dist/FluentEntity.d.ts +7 -0
  6. package/dist/FluentEntity.js +28 -0
  7. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +31 -24
  8. package/dist/TypeOrmConnector/TypeOrmConnector.js +599 -343
  9. package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +182 -48
  10. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +103 -3
  11. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +30 -13
  12. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +5 -0
  13. package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +17 -0
  14. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +5 -0
  15. package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +17 -0
  16. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +3 -3
  17. package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +8 -3
  18. package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +1 -1
  19. package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +42 -16
  20. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +43 -0
  21. package/dist/TypeOrmConnector/test/basic/goat.entity.js +19 -8
  22. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +5 -0
  23. package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +16 -0
  24. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +5 -0
  25. package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +16 -0
  26. package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +3 -4
  27. package/dist/TypeOrmConnector/test/basic/goat.repository.js +7 -3
  28. package/dist/TypeOrmConnector/test/dbEntities.d.ts +6 -6
  29. package/dist/TypeOrmConnector/test/docker/docker.d.ts +35 -0
  30. package/dist/TypeOrmConnector/test/docker/docker.js +149 -0
  31. package/dist/TypeOrmConnector/test/docker/mysql.d.ts +17 -0
  32. package/dist/TypeOrmConnector/test/docker/mysql.js +132 -0
  33. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +8 -0
  34. package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +23 -0
  35. package/dist/TypeOrmConnector/test/mongo/mongo.memory.d.ts +4 -0
  36. package/dist/TypeOrmConnector/test/mongo/mongo.memory.js +43 -0
  37. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +2 -0
  38. package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +12 -0
  39. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +8 -0
  40. package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +23 -0
  41. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +6 -0
  42. package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +17 -0
  43. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +10 -0
  44. package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +31 -0
  45. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +6 -0
  46. package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +17 -0
  47. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +2 -0
  48. package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +16 -0
  49. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +8 -0
  50. package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +23 -0
  51. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +6 -0
  52. package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +17 -0
  53. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +10 -0
  54. package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +32 -0
  55. package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +1 -0
  56. package/dist/TypeOrmConnector/test/relations/car/car.entity.js +13 -5
  57. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +3 -3
  58. package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +11 -4
  59. package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +38 -0
  60. package/dist/TypeOrmConnector/test/relations/car/car.schema.js +14 -0
  61. package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +85 -32
  62. package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +35 -0
  63. package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +16 -0
  64. package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +4 -4
  65. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +3 -3
  66. package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +12 -4
  67. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +2 -2
  68. package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +4 -4
  69. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +15 -0
  70. package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +9 -0
  71. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +3 -3
  72. package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +8 -3
  73. package/dist/TypeOrmConnector/test/relations/user/user.entity.js +10 -10
  74. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +3 -3
  75. package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +17 -5
  76. package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +150 -0
  77. package/dist/TypeOrmConnector/test/relations/user/user.schema.js +18 -0
  78. package/dist/TypeOrmConnector/test/{memoryDataSource.d.ts → sqlite/memoryDataSource.d.ts} +0 -0
  79. package/dist/TypeOrmConnector/test/{memoryDataSource.js → sqlite/memoryDataSource.js} +1 -1
  80. package/dist/core/Loopback/build-schema.js +1 -3
  81. package/dist/core/Loopback/json-to-schema.js +6 -6
  82. package/dist/core/Loopback/mapValues.d.ts +2 -0
  83. package/dist/core/Loopback/mapValues.js +835 -0
  84. package/dist/core/Loopback/query.js +6 -4
  85. package/dist/core/Loopback/type-resolver.d.ts +1 -1
  86. package/dist/core/Nestjs/applyDecorators.d.ts +1 -1
  87. package/dist/core/Nestjs/types/common.js +3 -1
  88. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +1 -1
  89. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +9 -4
  90. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +1 -1
  91. package/dist/core/Nestjs/types/decorators/field.decorator.js +6 -6
  92. package/dist/core/Nestjs/types/lazy-metadata.storage.js +3 -3
  93. package/dist/core/Nestjs/types/omit-type.js +6 -2
  94. package/dist/core/Nestjs/types/reflection.utils.d.ts +1 -1
  95. package/dist/core/Nestjs/types/reflection.utils.js +9 -2
  96. package/dist/core/Nestjs/types/type-metadata.storage.js +4 -4
  97. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +1 -11
  98. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +2 -2
  99. package/dist/decorators.d.ts +25 -21
  100. package/dist/decorators.js +76 -70
  101. package/dist/index.d.ts +6 -7
  102. package/dist/index.js +5 -7
  103. package/dist/loadRelations.js +108 -68
  104. package/dist/tsconfig.tsbuildinfo +1 -1
  105. package/dist/types.d.ts +104 -55
  106. package/dist/types.js +20 -0
  107. package/package.json +10 -101
  108. package/dist/TypeOrmConnector/TypeOrmMongoConnector._bypass.d.ts +0 -1
  109. package/dist/TypeOrmConnector/TypeOrmMongoConnector._bypass.js +0 -52
  110. package/dist/TypeOrmConnector/TypeOrmMysqlConnector._bypass.d.ts +0 -1
  111. package/dist/TypeOrmConnector/TypeOrmMysqlConnector._bypass.js +0 -55
  112. package/dist/TypeOrmConnector/test/basic/goat.dto.d.ts +0 -8
  113. package/dist/TypeOrmConnector/test/basic/goat.dto.js +0 -18
  114. package/dist/TypeOrmConnector/test/relations/car/car.dto.d.ts +0 -5
  115. package/dist/TypeOrmConnector/test/relations/car/car.dto.js +0 -12
  116. package/dist/TypeOrmConnector/test/relations/roles/role.dto.d.ts +0 -5
  117. package/dist/TypeOrmConnector/test/relations/roles/role.dto.js +0 -12
  118. package/dist/TypeOrmConnector/test/relations/roles/roles_user.dto.d.ts +0 -5
  119. package/dist/TypeOrmConnector/test/relations/roles/roles_user.dto.js +0 -12
  120. package/dist/TypeOrmConnector/test/relations/user/user.dto.d.ts +0 -5
  121. package/dist/TypeOrmConnector/test/relations/user/user.dto.js +0 -12
  122. package/dist/core/dtos/access.dto.d.ts +0 -4
  123. package/dist/core/dtos/access.dto.js +0 -21
  124. package/dist/core/dtos/pagination.dto.d.ts +0 -13
  125. package/dist/core/dtos/pagination.dto.js +0 -62
@@ -1,89 +1,59 @@
1
- import { TypedPathWrapper } from 'typed-path';
2
1
  import { Collection } from '@goatlab/js-utils';
3
- import { Filter, LogicOperator, Primitives, PrimitivesArray } from './types';
4
- import { ValidationError } from 'class-validator';
5
- export interface FluentConnectorInterface<InputDTO, OutputDTO> {
6
- get(): Promise<OutputDTO[]>;
7
- all(filter: Filter): Promise<OutputDTO[]>;
8
- findById(id: string): Promise<OutputDTO>;
9
- findByIds(id: string[]): Promise<OutputDTO[]>;
10
- find(filter: Filter): Promise<OutputDTO[]>;
11
- deleteById(id: string): Promise<string>;
12
- updateById(id: string, data: InputDTO): Promise<OutputDTO>;
2
+ import { FindByIdFilter, FluentHasManyParams, FluentBelongsToParams, FluentBelongsToManyParams, FluentQuery, LogicOperator, Primitives, PrimitivesArray, QueryFieldSelector, QueryOutput, SingleQueryOutput } from './types';
3
+ export interface FluentConnectorInterface<ModelDTO, InputDTO, OutputDTO> {
4
+ findByIds<T extends FindByIdFilter<ModelDTO>>(ids: string[], q?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
5
+ findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
13
6
  insert(data: InputDTO): Promise<OutputDTO>;
14
7
  insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
8
+ loadFirst(query?: FluentQuery<ModelDTO>): any;
9
+ loadById(id: string): any;
10
+ replaceById(id: string, data: InputDTO): Promise<OutputDTO>;
11
+ updateById(id: string, data: InputDTO): Promise<OutputDTO>;
12
+ clear(): Promise<boolean>;
13
+ requireById(id: string, q?: FindByIdFilter<ModelDTO>): Promise<SingleQueryOutput<FindByIdFilter<ModelDTO>, ModelDTO, OutputDTO>>;
15
14
  }
16
15
  export declare abstract class BaseConnector<ModelDTO, InputDTO, OutputDTO> {
17
- generatedKeyPath: TypedPathWrapper<ModelDTO & InputDTO & OutputDTO, Record<never, never> & {
18
- $path: (path: import("typed-path").TypedPathKey[]) => string;
19
- $raw: (path: import("typed-path").TypedPathKey[]) => string[];
20
- $rawPath: (path: import("typed-path").TypedPathKey[]) => import("typed-path").TypedPathKey[];
21
- toString: (path: import("typed-path").TypedPathKey[]) => () => string;
22
- valueOf: (path: import("typed-path").TypedPathKey[]) => () => string;
23
- [Symbol.toStringTag]: (path: import("typed-path").TypedPathKey[]) => string;
24
- }>;
25
16
  protected outputKeys: string[];
26
- protected chainReference: any[];
27
- protected whereArray: any[];
28
- protected orWhereArray: any[];
29
- protected selectArray: any[];
30
- protected forceSelectArray: any[];
31
- protected orderByArray: any[];
32
- protected limitNumber: number;
33
- protected offsetNumber: number;
34
- protected populateArray: any[];
35
- protected chunk: any;
36
- protected pullSize: any;
37
- protected ownerId: any;
38
- protected paginator: any;
39
- protected rawQuery: any;
40
- protected getFirst: boolean;
41
- protected relations: any;
42
- protected loadModels: boolean;
43
- protected relationQuery: any;
17
+ protected relatedQuery?: {
18
+ entity: new () => ModelDTO;
19
+ query?: FluentQuery<ModelDTO>;
20
+ repository?: any;
21
+ key?: string;
22
+ pivot?: any;
23
+ };
24
+ protected chunk: null;
25
+ protected pullSize: null;
26
+ protected paginator: undefined;
27
+ protected rawQuery: undefined;
44
28
  protected modelRelations: any;
45
29
  isMongoDB: boolean;
46
30
  constructor();
47
- findByIds(ids: string[]): Promise<OutputDTO[]>;
48
- get(): Promise<OutputDTO[]>;
31
+ findByIds<T extends FindByIdFilter<ModelDTO>>(ids: string[], q?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
49
32
  insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
50
33
  updateById(id: string, data: InputDTO): Promise<OutputDTO>;
51
- owner(user: string): this;
52
- own(user: string): this;
53
- first(): Promise<OutputDTO | null>;
54
- collect(): Promise<Collection<OutputDTO>>;
55
- select(paths: (p: TypedPathWrapper<ModelDTO & InputDTO & OutputDTO, Record<never, never>>) => TypedPathWrapper<string, Record<never, never>>[] | TypedPathWrapper<string[], Record<never, never>[]>): this;
56
- forceSelect(paths: (p: TypedPathWrapper<ModelDTO & InputDTO & OutputDTO, Record<never, never>>) => TypedPathWrapper<string, Record<never, never>>[] | TypedPathWrapper<string[], Record<never, never>[]>): this;
57
- offset(offset: number): this;
58
- populate(...relations: any[]): this;
59
- skip(offset: number): this;
60
- where(path: (p: TypedPathWrapper<ModelDTO & InputDTO & OutputDTO, Record<never, never>>) => TypedPathWrapper<string, Record<never, never>> | TypedPathWrapper<string[], Record<never, never>>, operator: LogicOperator, value: Primitives | PrimitivesArray): this;
61
- andWhere(path: (p: TypedPathWrapper<ModelDTO & InputDTO & OutputDTO, Record<never, never>>) => TypedPathWrapper<string, Record<never, never>> | TypedPathWrapper<string[], Record<never, never>>, operator: LogicOperator, value: Primitives | Primitives[]): this;
62
- orWhere(path: (p: TypedPathWrapper<ModelDTO & InputDTO & OutputDTO, Record<never, never>>) => TypedPathWrapper<string, Record<never, never>> | TypedPathWrapper<string[], Record<never, never>>, operator: LogicOperator, value: Primitives): this;
63
- limit(limit: number): this;
64
- take(limit: number): this;
65
- pluck(path: (p: TypedPathWrapper<ModelDTO & InputDTO & OutputDTO, Record<never, never>>) => TypedPathWrapper<string, Record<never, never>> | TypedPathWrapper<string[], Record<never, never>>): Promise<string[]>;
66
- orderBy(path: (p: TypedPathWrapper<ModelDTO & InputDTO & OutputDTO, Record<never, never>>) => TypedPathWrapper<string, Record<never, never>> | TypedPathWrapper<string[], Record<never, never>>, order?: 'asc' | 'desc', orderType?: 'string' | 'number' | 'date'): this;
67
- protected jsApplySelect(data: any): any[];
68
- protected jsApplyOrderBy(data: any): any[];
69
- protected reset(): void;
70
- load(): Promise<this>;
71
- loadFirst(): Promise<this>;
72
- getLoadedData(): OutputDTO[] | OutputDTO;
73
- with(entities: any): this;
74
- attach(data: InputDTO | OutputDTO): Promise<OutputDTO[]>;
75
- associate(id: string): any;
76
- protected hasMany<T>(Repository: any, relationName: string): T;
34
+ findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
35
+ findFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<SingleQueryOutput<T, ModelDTO, OutputDTO> | null>;
36
+ collect(query: FluentQuery<ModelDTO>): Promise<Collection<OutputDTO>>;
37
+ pluck(path: QueryFieldSelector<ModelDTO>, query?: FluentQuery<ModelDTO>): Promise<Primitives[]>;
38
+ protected setRelatedQuery(r: {
39
+ entity: new () => ModelDTO;
40
+ query?: FluentQuery<ModelDTO>;
41
+ repository?: any;
42
+ key?: string;
43
+ }): void;
44
+ associate(data: InputDTO | OutputDTO): Promise<OutputDTO[]>;
45
+ attach(id: string): Promise<any>;
46
+ protected hasMany<T extends FluentHasManyParams<T>>(r: T): InstanceType<T['repository']>;
47
+ protected belongsTo<T extends FluentBelongsToParams<T>>(r: T): InstanceType<T['repository']>;
77
48
  protected hasOne(): void;
78
- protected belongsTo<T>(Repository: any, relationName: string): T;
79
- protected belongsToMany<T, R>(Repository: any, Pivot: any, relationName: string): T;
80
- withPivot(): this;
49
+ protected belongsToMany<T extends FluentBelongsToManyParams<T>>(r: T): InstanceType<T['repository']>;
81
50
  protected hasManyThrough(): void;
82
- private prepareInput;
83
- validateInput(validationClass: {
84
- new (): ModelDTO;
85
- }, input: InputDTO): Promise<{
86
- errors: ValidationError[] | null;
87
- result: Awaited<InputDTO>;
88
- }>;
51
+ protected clearEmpties(object: any): any;
52
+ private isAnyObject;
53
+ protected extractConditions(conditions: FluentQuery<ModelDTO>['where'][]): {
54
+ operator: LogicOperator;
55
+ element: string;
56
+ value: Primitives | PrimitivesArray;
57
+ }[];
58
+ protected jsApplySelect(select: FluentQuery<ModelDTO>['select'], data: ModelDTO[]): ModelDTO[];
89
59
  }