@goatlab/fluent 0.7.1 → 0.7.4
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.
- package/CHANGELOG.md +1072 -0
- package/dist/BaseConnector.d.ts +14 -7
- package/dist/BaseConnector.js +51 -3
- package/dist/Fluent.d.ts +0 -0
- package/dist/Fluent.js +0 -0
- package/dist/FluentEntity.d.ts +0 -0
- package/dist/FluentEntity.js +0 -0
- package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +10 -11
- package/dist/TypeOrmConnector/TypeOrmConnector.js +134 -146
- package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.d.ts +0 -0
- package/dist/TypeOrmConnector/test/advanced/advancedTestSuite.js +0 -0
- package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +6 -6
- package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +0 -0
- package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/advanced/typeOrm.mongo.repository.js +0 -0
- package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/advanced/typeOrm.mysql.repository.js +0 -0
- package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/advanced/typeOrm.repository.js +0 -0
- package/dist/TypeOrmConnector/test/basic/basicTestSuite.d.ts +1 -1
- package/dist/TypeOrmConnector/test/basic/basicTestSuite.js +116 -4
- package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +0 -0
- package/dist/TypeOrmConnector/test/basic/goat.entity.js +0 -0
- package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/basic/goat.mongo.repository.js +0 -0
- package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/basic/goat.mysql.repository.js +0 -0
- package/dist/TypeOrmConnector/test/basic/goat.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/basic/goat.repository.js +0 -0
- package/dist/TypeOrmConnector/test/dbEntities.d.ts +0 -0
- package/dist/TypeOrmConnector/test/dbEntities.js +0 -0
- package/dist/TypeOrmConnector/test/docker/docker.d.ts +0 -0
- package/dist/TypeOrmConnector/test/docker/docker.js +0 -0
- package/dist/TypeOrmConnector/test/docker/mysql.d.ts +0 -0
- package/dist/TypeOrmConnector/test/docker/mysql.js +0 -0
- package/dist/TypeOrmConnector/test/flock.d.ts +0 -0
- package/dist/TypeOrmConnector/test/flock.js +0 -0
- package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/mongo/car.mongo.repository.js +0 -0
- package/dist/TypeOrmConnector/test/mongo/mongo.memory.d.ts +0 -0
- package/dist/TypeOrmConnector/test/mongo/mongo.memory.js +0 -0
- package/dist/TypeOrmConnector/test/mongo/mongoDatasource.d.ts +0 -0
- package/dist/TypeOrmConnector/test/mongo/mongoDatasource.js +0 -0
- package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/mongo/roles.mongo.repository.js +0 -0
- package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/mongo/roles_user.mongo.repository.js +0 -0
- package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/mongo/user.mongo.repository.js +0 -0
- package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/mysql/car.mysql.repository.js +0 -0
- package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.d.ts +0 -0
- package/dist/TypeOrmConnector/test/mysql/mysqlDataSource.js +0 -0
- package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/mysql/roles.mysql.repository.js +0 -0
- package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/mysql/roles_user.mysql.repository.js +0 -0
- package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.d.ts +0 -0
- package/dist/TypeOrmConnector/test/mysql/user.mysql.repository.js +0 -0
- package/dist/TypeOrmConnector/test/relations/car/car.entity.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/car/car.entity.js +0 -0
- package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/car/car.repositoryTypeOrm.js +0 -0
- package/dist/TypeOrmConnector/test/relations/car/car.schema.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/car/car.schema.js +0 -0
- package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/relationsTestsSuite.js +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/role.schema.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/role.schema.js +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles.entity.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles.entity.js +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles.repositoryTypeOrm.js +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles_user.entity.js +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles_user.schema.js +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/roles/roles_users.repositoryTypeOrm.js +0 -0
- package/dist/TypeOrmConnector/test/relations/user/user.entity.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/user/user.entity.js +0 -0
- package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/user/user.repositoryTypeOrm.js +0 -0
- package/dist/TypeOrmConnector/test/relations/user/user.schema.d.ts +0 -0
- package/dist/TypeOrmConnector/test/relations/user/user.schema.js +0 -0
- package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.d.ts +0 -0
- package/dist/TypeOrmConnector/test/sqlite/memoryDataSource.js +0 -0
- package/dist/cache.d.ts +0 -0
- package/dist/cache.js +0 -0
- package/dist/core/Loopback/build-schema.d.ts +0 -0
- package/dist/core/Loopback/build-schema.js +0 -0
- package/dist/core/Loopback/common-types.d.ts +0 -0
- package/dist/core/Loopback/common-types.js +0 -0
- package/dist/core/Loopback/json-to-schema.d.ts +0 -0
- package/dist/core/Loopback/json-to-schema.js +0 -0
- package/dist/core/Loopback/mapValues.d.ts +0 -0
- package/dist/core/Loopback/mapValues.js +0 -0
- package/dist/core/Loopback/metadata.d.ts +0 -0
- package/dist/core/Loopback/metadata.js +0 -0
- package/dist/core/Loopback/model.d.ts +0 -0
- package/dist/core/Loopback/model.js +0 -0
- package/dist/core/Loopback/query.d.ts +0 -0
- package/dist/core/Loopback/query.js +0 -0
- package/dist/core/Loopback/relation.types.d.ts +0 -0
- package/dist/core/Loopback/relation.types.js +0 -0
- package/dist/core/Loopback/type-resolver.d.ts +0 -0
- package/dist/core/Loopback/type-resolver.js +0 -0
- package/dist/core/Loopback/type.d.ts +0 -0
- package/dist/core/Loopback/type.js +0 -0
- package/dist/core/Nestjs/applyDecorators.d.ts +0 -0
- package/dist/core/Nestjs/applyDecorators.js +0 -0
- package/dist/core/Nestjs/types/common.d.ts +0 -0
- package/dist/core/Nestjs/types/common.js +0 -0
- package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +0 -0
- package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/decorators/api-property.decorator.js +0 -0
- package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +0 -0
- package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/decorators/args-type.decorator.js +0 -0
- package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/decorators/create-property.decorator.js +0 -0
- package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/decorators/directive.decorator.js +0 -0
- package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/decorators/extensions.decorator.js +0 -0
- package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/decorators/field.decorator.js +0 -0
- package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/decorators/input-type.decorator.js +0 -0
- package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +0 -0
- package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +0 -0
- package/dist/core/Nestjs/types/decorators/partial-type.helper.js +0 -0
- package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +0 -0
- package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +0 -0
- package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +0 -0
- package/dist/core/Nestjs/types/errors/directive-parsing.error.js +0 -0
- package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +0 -0
- package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +0 -0
- package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +0 -0
- package/dist/core/Nestjs/types/errors/undefined-type.error.js +0 -0
- package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +0 -0
- package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +0 -0
- package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +0 -0
- package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +0 -0
- package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +0 -0
- package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +0 -0
- package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +0 -0
- package/dist/core/Nestjs/types/interfaces/complexity.interface.js +0 -0
- package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +0 -0
- package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +0 -0
- package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +0 -0
- package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +0 -0
- package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +0 -0
- package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +0 -0
- package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +0 -0
- package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +0 -0
- package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +0 -0
- package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +0 -0
- package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +0 -0
- package/dist/core/Nestjs/types/interfaces/type-options.interface.js +0 -0
- package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +0 -0
- package/dist/core/Nestjs/types/lazy-metadata.storage.js +0 -0
- package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +0 -0
- package/dist/core/Nestjs/types/metadata/class.metadata.js +0 -0
- package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +0 -0
- package/dist/core/Nestjs/types/metadata/directive.metadata.js +0 -0
- package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +0 -0
- package/dist/core/Nestjs/types/metadata/enum.metadata.js +0 -0
- package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +0 -0
- package/dist/core/Nestjs/types/metadata/extensions.metadata.js +0 -0
- package/dist/core/Nestjs/types/metadata/index.d.ts +0 -0
- package/dist/core/Nestjs/types/metadata/index.js +0 -0
- package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +0 -0
- package/dist/core/Nestjs/types/metadata/interface.metadata.js +0 -0
- package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +0 -0
- package/dist/core/Nestjs/types/metadata/object-type.metadata.js +0 -0
- package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +0 -0
- package/dist/core/Nestjs/types/metadata/param.metadata.js +0 -0
- package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +0 -0
- package/dist/core/Nestjs/types/metadata/property.metadata.js +0 -0
- package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +0 -0
- package/dist/core/Nestjs/types/metadata/resolver.metadata.js +0 -0
- package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +0 -0
- package/dist/core/Nestjs/types/metadata/union.metadata.js +0 -0
- package/dist/core/Nestjs/types/object-type.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/object-type.decorator.js +0 -0
- package/dist/core/Nestjs/types/omit-type.d.ts +0 -0
- package/dist/core/Nestjs/types/omit-type.js +0 -0
- package/dist/core/Nestjs/types/reflection.utils.d.ts +0 -0
- package/dist/core/Nestjs/types/reflection.utils.js +0 -0
- package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +0 -0
- package/dist/core/Nestjs/types/set-metadata.decorator.js +0 -0
- package/dist/core/Nestjs/types/type-metadata.storage.d.ts +0 -0
- package/dist/core/Nestjs/types/type-metadata.storage.js +0 -0
- package/dist/core/Nestjs/types/utils/enum.utils.d.ts +0 -0
- package/dist/core/Nestjs/types/utils/enum.utils.js +0 -0
- package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +0 -0
- package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +0 -0
- package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +0 -0
- package/dist/core/Nestjs/types/utils/mapped-types.utils.js +0 -0
- package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +0 -0
- package/dist/core/Nestjs/types/utils/model-properties-accessor.js +0 -0
- package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +0 -0
- package/dist/core/Nestjs/types/utils/type-helpers.utils.js +0 -0
- package/dist/core/types.d.ts +0 -0
- package/dist/core/types.js +0 -0
- package/dist/decorators.d.ts +0 -0
- package/dist/decorators.js +0 -0
- package/dist/generatorDatasource.d.ts +0 -0
- package/dist/generatorDatasource.js +0 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.js +0 -0
- package/dist/loadRelations.d.ts +0 -0
- package/dist/loadRelations.js +0 -0
- package/dist/outputKeys.d.ts +0 -0
- package/dist/outputKeys.js +0 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +0 -0
- package/package.json +1 -1
package/dist/BaseConnector.d.ts
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { Collection } from '@goatlab/js-utils';
|
|
2
2
|
import { FindByIdFilter, FluentHasManyParams, FluentBelongsToParams, FluentBelongsToManyParams, FluentQuery, LogicOperator, Primitives, PrimitivesArray, QueryFieldSelector, QueryOutput, SingleQueryOutput } from './types';
|
|
3
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>>;
|
|
6
4
|
insert(data: InputDTO): Promise<OutputDTO>;
|
|
7
5
|
insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
|
|
6
|
+
findById<T extends FindByIdFilter<ModelDTO>>(id: string, q?: T): Promise<SingleQueryOutput<T, ModelDTO, OutputDTO> | null>;
|
|
7
|
+
findByIds<T extends FindByIdFilter<ModelDTO>>(ids: string[], q?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
|
|
8
|
+
findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
|
|
9
|
+
findFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<SingleQueryOutput<T, ModelDTO, OutputDTO> | null>;
|
|
10
|
+
requireById(id: string, q?: FindByIdFilter<ModelDTO>): Promise<SingleQueryOutput<FindByIdFilter<ModelDTO>, ModelDTO, OutputDTO>>;
|
|
11
|
+
requireFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<SingleQueryOutput<T, ModelDTO, OutputDTO>>;
|
|
12
|
+
updateById(id: string, data: InputDTO): Promise<OutputDTO>;
|
|
13
|
+
replaceById(id: string, data: InputDTO): Promise<OutputDTO>;
|
|
14
|
+
deleteById(id: string): Promise<string>;
|
|
8
15
|
loadFirst(query?: FluentQuery<ModelDTO>): any;
|
|
9
16
|
loadById(id: string): any;
|
|
10
|
-
|
|
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>>;
|
|
17
|
+
raw(): any;
|
|
14
18
|
}
|
|
15
19
|
export declare abstract class BaseConnector<ModelDTO, InputDTO, OutputDTO> {
|
|
16
20
|
protected outputKeys: string[];
|
|
@@ -28,11 +32,14 @@ export declare abstract class BaseConnector<ModelDTO, InputDTO, OutputDTO> {
|
|
|
28
32
|
protected modelRelations: any;
|
|
29
33
|
isMongoDB: boolean;
|
|
30
34
|
constructor();
|
|
31
|
-
findByIds<T extends FindByIdFilter<ModelDTO>>(ids: string[], q?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
|
|
32
35
|
insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
|
|
33
36
|
updateById(id: string, data: InputDTO): Promise<OutputDTO>;
|
|
34
37
|
findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
|
|
35
38
|
findFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<SingleQueryOutput<T, ModelDTO, OutputDTO> | null>;
|
|
39
|
+
requireById(id: string, q?: FindByIdFilter<ModelDTO>): Promise<SingleQueryOutput<FindByIdFilter<ModelDTO>, ModelDTO, OutputDTO>>;
|
|
40
|
+
requireFirst<T extends FluentQuery<ModelDTO>>(query?: T): Promise<SingleQueryOutput<T, ModelDTO, OutputDTO>>;
|
|
41
|
+
findByIds<T extends FindByIdFilter<ModelDTO>>(ids: string[], q?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
|
|
42
|
+
findById<T extends FindByIdFilter<ModelDTO>>(id: string, q?: T): Promise<SingleQueryOutput<T, ModelDTO, OutputDTO> | null>;
|
|
36
43
|
collect(query: FluentQuery<ModelDTO>): Promise<Collection<OutputDTO>>;
|
|
37
44
|
pluck(path: QueryFieldSelector<ModelDTO>, query?: FluentQuery<ModelDTO>): Promise<Primitives[]>;
|
|
38
45
|
protected setRelatedQuery(r: {
|
package/dist/BaseConnector.js
CHANGED
|
@@ -16,9 +16,6 @@ class BaseConnector {
|
|
|
16
16
|
this.rawQuery = undefined;
|
|
17
17
|
this.outputKeys = [];
|
|
18
18
|
}
|
|
19
|
-
async findByIds(ids, q) {
|
|
20
|
-
throw new Error('findByIds() method not implemented');
|
|
21
|
-
}
|
|
22
19
|
async insertMany(data) {
|
|
23
20
|
throw new Error('get() method not implemented');
|
|
24
21
|
}
|
|
@@ -35,6 +32,57 @@ class BaseConnector {
|
|
|
35
32
|
}
|
|
36
33
|
return data[0];
|
|
37
34
|
}
|
|
35
|
+
async requireById(id, q) {
|
|
36
|
+
const found = await this.findByIds([id], {
|
|
37
|
+
select: q?.select,
|
|
38
|
+
include: q?.include,
|
|
39
|
+
limit: 1
|
|
40
|
+
});
|
|
41
|
+
found.map(d => {
|
|
42
|
+
if (this.isMongoDB) {
|
|
43
|
+
d['id'] = d['id'].toString();
|
|
44
|
+
}
|
|
45
|
+
this.clearEmpties(js_utils_1.Objects.deleteNulls(d));
|
|
46
|
+
});
|
|
47
|
+
if (!found[0]) {
|
|
48
|
+
throw new Error(`Object ${id} not found`);
|
|
49
|
+
}
|
|
50
|
+
return found[0];
|
|
51
|
+
}
|
|
52
|
+
async requireFirst(query) {
|
|
53
|
+
const found = await this.findMany({ ...query, limit: 1 });
|
|
54
|
+
found.map(d => {
|
|
55
|
+
if (this.isMongoDB) {
|
|
56
|
+
d['id'] = d['id'].toString();
|
|
57
|
+
}
|
|
58
|
+
this.clearEmpties(js_utils_1.Objects.deleteNulls(d));
|
|
59
|
+
});
|
|
60
|
+
if (!found[0]) {
|
|
61
|
+
const stringQuery = query ? JSON.stringify(query) : '';
|
|
62
|
+
throw new Error(`No objects found matching: ${stringQuery}`);
|
|
63
|
+
}
|
|
64
|
+
return found[0];
|
|
65
|
+
}
|
|
66
|
+
async findByIds(ids, q) {
|
|
67
|
+
let data = await this.findMany({
|
|
68
|
+
where: {
|
|
69
|
+
id: {
|
|
70
|
+
in: ids
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
limit: q?.limit,
|
|
74
|
+
select: q?.select,
|
|
75
|
+
include: q?.include
|
|
76
|
+
});
|
|
77
|
+
return data;
|
|
78
|
+
}
|
|
79
|
+
async findById(id, q) {
|
|
80
|
+
const result = await this.findByIds([id], { ...q, limit: 1 });
|
|
81
|
+
if (!result[0]) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
return result[0];
|
|
85
|
+
}
|
|
38
86
|
async collect(query) {
|
|
39
87
|
const data = await this.findMany(query);
|
|
40
88
|
if (!Array.isArray(data)) {
|
package/dist/Fluent.d.ts
CHANGED
|
File without changes
|
package/dist/Fluent.js
CHANGED
|
File without changes
|
package/dist/FluentEntity.d.ts
CHANGED
|
File without changes
|
package/dist/FluentEntity.js
CHANGED
|
File without changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LoadedResult, QueryOutput } from './../types';
|
|
2
2
|
import { FindManyOptions, Repository, MongoRepository } from 'typeorm';
|
|
3
3
|
import { BaseConnector, FluentConnectorInterface } from '../BaseConnector';
|
|
4
4
|
import type { AnyObject, FluentQuery } from '../types';
|
|
@@ -22,22 +22,21 @@ export declare class TypeOrmConnector<ModelDTO = AnyObject, InputDTO = ModelDTO,
|
|
|
22
22
|
constructor({ entity, dataSource, inputSchema, outputSchema }: TypeOrmConnectorParams<InputDTO, OutputDTO>);
|
|
23
23
|
insert(data: InputDTO): Promise<OutputDTO>;
|
|
24
24
|
insertMany(data: InputDTO[]): Promise<OutputDTO[]>;
|
|
25
|
+
findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO, OutputDTO>>;
|
|
26
|
+
updateById(id: string, data: InputDTO): Promise<OutputDTO>;
|
|
27
|
+
replaceById(id: string, data: InputDTO): Promise<OutputDTO>;
|
|
28
|
+
deleteById(id: string): Promise<string>;
|
|
29
|
+
clear(): Promise<boolean>;
|
|
30
|
+
loadFirst(query?: FluentQuery<ModelDTO>): LoadedResult<this>;
|
|
31
|
+
loadById(id: string): LoadedResult<this>;
|
|
25
32
|
raw(): Repository<ModelDTO>;
|
|
26
33
|
mongoRaw(): MongoRepository<ModelDTO>;
|
|
27
|
-
|
|
34
|
+
protected clone(): any;
|
|
35
|
+
private getOrderBy;
|
|
28
36
|
private getMongoSelect;
|
|
29
37
|
private getMongoLookup;
|
|
30
38
|
private customMongoRelatedSearch;
|
|
31
39
|
private generateTypeOrmQuery;
|
|
32
40
|
protected getTypeOrmWhere(where?: FluentQuery<ModelDTO>['where']): FindManyOptions['where'];
|
|
33
41
|
protected getTypeOrmMongoWhere(where?: FluentQuery<ModelDTO>['where']): FindManyOptions['where'];
|
|
34
|
-
updateById(id: string, data: InputDTO): Promise<OutputDTO>;
|
|
35
|
-
replaceById(id: string, data: InputDTO): Promise<OutputDTO>;
|
|
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>>;
|
|
42
|
-
private getOrderBy;
|
|
43
42
|
}
|
|
@@ -69,12 +69,6 @@ class TypeOrmConnector extends BaseConnector_1.BaseConnector {
|
|
|
69
69
|
return this.clearEmpties(js_utils_1.Objects.deleteNulls(d));
|
|
70
70
|
}));
|
|
71
71
|
}
|
|
72
|
-
raw() {
|
|
73
|
-
return this.repository;
|
|
74
|
-
}
|
|
75
|
-
mongoRaw() {
|
|
76
|
-
return this.repository;
|
|
77
|
-
}
|
|
78
72
|
async findMany(query) {
|
|
79
73
|
if (this.isMongoDB && query?.include) {
|
|
80
74
|
const mongoRelationResult = this.customMongoRelatedSearch(query);
|
|
@@ -108,6 +102,131 @@ class TypeOrmConnector extends BaseConnector_1.BaseConnector {
|
|
|
108
102
|
}
|
|
109
103
|
return this.outputSchema?.array().parse(found);
|
|
110
104
|
}
|
|
105
|
+
async updateById(id, data) {
|
|
106
|
+
const parsedId = this.isMongoDB
|
|
107
|
+
? js_utils_1.Ids.objectID(id)
|
|
108
|
+
: id;
|
|
109
|
+
const idFieldName = this.isMongoDB ? '_id' : 'id';
|
|
110
|
+
const dataToInsert = this.outputKeys.includes('updated')
|
|
111
|
+
? {
|
|
112
|
+
...data,
|
|
113
|
+
...{ updated: new Date() }
|
|
114
|
+
}
|
|
115
|
+
: data;
|
|
116
|
+
const validatedData = this.inputSchema.parse(dataToInsert);
|
|
117
|
+
const updateResults = await this.repository.update(id, validatedData);
|
|
118
|
+
if (updateResults.affected === 0) {
|
|
119
|
+
throw new Error('No rows where affected');
|
|
120
|
+
}
|
|
121
|
+
const dbResult = await this.repository.findOneOrFail({
|
|
122
|
+
where: {
|
|
123
|
+
[idFieldName]: parsedId
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
if (this.isMongoDB) {
|
|
127
|
+
dbResult['id'] = dbResult['id'].toString();
|
|
128
|
+
}
|
|
129
|
+
return this.outputSchema?.parse(this.clearEmpties(js_utils_1.Objects.deleteNulls(dbResult)));
|
|
130
|
+
}
|
|
131
|
+
async replaceById(id, data) {
|
|
132
|
+
const parsedId = this.isMongoDB
|
|
133
|
+
? js_utils_1.Ids.objectID(id)
|
|
134
|
+
: id;
|
|
135
|
+
const idFieldName = this.isMongoDB ? '_id' : 'id';
|
|
136
|
+
const value = await this.repository.findOneOrFail({
|
|
137
|
+
where: {
|
|
138
|
+
[idFieldName]: parsedId
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
const flatValue = js_utils_1.Objects.flatten(JSON.parse(JSON.stringify(value)));
|
|
142
|
+
Object.keys(flatValue).forEach(key => {
|
|
143
|
+
flatValue[key] = null;
|
|
144
|
+
});
|
|
145
|
+
const nullObject = js_utils_1.Objects.nest(flatValue);
|
|
146
|
+
const newValue = { ...nullObject, ...data };
|
|
147
|
+
delete newValue._id;
|
|
148
|
+
delete newValue.id;
|
|
149
|
+
delete newValue.created;
|
|
150
|
+
delete newValue.updated;
|
|
151
|
+
const dataToInsert = this.outputKeys.includes('updated')
|
|
152
|
+
? {
|
|
153
|
+
...data,
|
|
154
|
+
...{ updated: new Date() }
|
|
155
|
+
}
|
|
156
|
+
: data;
|
|
157
|
+
const validatedData = this.inputSchema.parse(dataToInsert);
|
|
158
|
+
const updateResults = await this.repository.update(id, validatedData);
|
|
159
|
+
if (updateResults.affected === 0) {
|
|
160
|
+
throw new Error('No rows where affected');
|
|
161
|
+
}
|
|
162
|
+
const val = await this.repository.findOneOrFail({
|
|
163
|
+
where: {
|
|
164
|
+
[idFieldName]: parsedId
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
if (this.isMongoDB) {
|
|
168
|
+
val['id'] = val['id'].toString();
|
|
169
|
+
}
|
|
170
|
+
return this.outputSchema.parse(this.clearEmpties(js_utils_1.Objects.deleteNulls(val)));
|
|
171
|
+
}
|
|
172
|
+
async deleteById(id) {
|
|
173
|
+
const parsedId = this.isMongoDB
|
|
174
|
+
? js_utils_1.Ids.objectID(id)
|
|
175
|
+
: id;
|
|
176
|
+
await this.repository.delete(parsedId);
|
|
177
|
+
return id;
|
|
178
|
+
}
|
|
179
|
+
async clear() {
|
|
180
|
+
await this.repository.clear();
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
loadFirst(query) {
|
|
184
|
+
const newInstance = this.clone();
|
|
185
|
+
newInstance.setRelatedQuery({
|
|
186
|
+
entity: this.entity,
|
|
187
|
+
repository: this,
|
|
188
|
+
query: {
|
|
189
|
+
...query,
|
|
190
|
+
limit: 1
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
return newInstance;
|
|
194
|
+
}
|
|
195
|
+
loadById(id) {
|
|
196
|
+
const newInstance = this.clone();
|
|
197
|
+
newInstance.setRelatedQuery({
|
|
198
|
+
entity: this.entity,
|
|
199
|
+
repository: this,
|
|
200
|
+
query: {
|
|
201
|
+
where: {
|
|
202
|
+
id
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
return newInstance;
|
|
207
|
+
}
|
|
208
|
+
raw() {
|
|
209
|
+
return this.repository;
|
|
210
|
+
}
|
|
211
|
+
mongoRaw() {
|
|
212
|
+
return this.repository;
|
|
213
|
+
}
|
|
214
|
+
clone() {
|
|
215
|
+
return new this.constructor();
|
|
216
|
+
}
|
|
217
|
+
getOrderBy(orderBy) {
|
|
218
|
+
if (!orderBy || orderBy.length === 0) {
|
|
219
|
+
return {};
|
|
220
|
+
}
|
|
221
|
+
const order = {};
|
|
222
|
+
for (const orderElement of orderBy) {
|
|
223
|
+
const flattenOrder = js_utils_1.Objects.flatten(orderElement);
|
|
224
|
+
for (const k of Object.keys(flattenOrder)) {
|
|
225
|
+
order[k] = flattenOrder[k];
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return js_utils_1.Objects.nest(order);
|
|
229
|
+
}
|
|
111
230
|
getMongoSelect(select) {
|
|
112
231
|
const selected = js_utils_1.Objects.flatten(select || {});
|
|
113
232
|
for (const k of Object.keys(selected)) {
|
|
@@ -268,7 +387,15 @@ class TypeOrmConnector extends BaseConnector_1.BaseConnector {
|
|
|
268
387
|
filter.take = query.paginated.perPage;
|
|
269
388
|
filter.skip = (query.paginated?.page - 1) * query?.paginated.perPage;
|
|
270
389
|
}
|
|
271
|
-
|
|
390
|
+
if (query?.select) {
|
|
391
|
+
const selectQuery = js_utils_1.Objects.flatten(query?.select || {});
|
|
392
|
+
if (this.isMongoDB) {
|
|
393
|
+
filter.select = Object.keys(selectQuery);
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
filter.select = selectQuery;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
272
399
|
filter.order = this.getOrderBy(query?.orderBy);
|
|
273
400
|
filter.relations = query?.include;
|
|
274
401
|
return filter;
|
|
@@ -629,144 +756,5 @@ class TypeOrmConnector extends BaseConnector_1.BaseConnector {
|
|
|
629
756
|
const filtered = this.clearEmpties(Filters.where);
|
|
630
757
|
return filtered;
|
|
631
758
|
}
|
|
632
|
-
async updateById(id, data) {
|
|
633
|
-
const parsedId = this.isMongoDB
|
|
634
|
-
? js_utils_1.Ids.objectID(id)
|
|
635
|
-
: id;
|
|
636
|
-
const idFieldName = this.isMongoDB ? '_id' : 'id';
|
|
637
|
-
const dataToInsert = this.outputKeys.includes('updated')
|
|
638
|
-
? {
|
|
639
|
-
...data,
|
|
640
|
-
...{ updated: new Date() }
|
|
641
|
-
}
|
|
642
|
-
: data;
|
|
643
|
-
const validatedData = this.inputSchema.parse(dataToInsert);
|
|
644
|
-
const updateResults = await this.repository.update(id, validatedData);
|
|
645
|
-
if (updateResults.affected === 0) {
|
|
646
|
-
throw new Error('No rows where affected');
|
|
647
|
-
}
|
|
648
|
-
const dbResult = await this.repository.findOneOrFail({
|
|
649
|
-
where: {
|
|
650
|
-
[idFieldName]: parsedId
|
|
651
|
-
}
|
|
652
|
-
});
|
|
653
|
-
if (this.isMongoDB) {
|
|
654
|
-
dbResult['id'] = dbResult['id'].toString();
|
|
655
|
-
}
|
|
656
|
-
return this.outputSchema?.parse(this.clearEmpties(js_utils_1.Objects.deleteNulls(dbResult)));
|
|
657
|
-
}
|
|
658
|
-
async replaceById(id, data) {
|
|
659
|
-
const parsedId = this.isMongoDB
|
|
660
|
-
? js_utils_1.Ids.objectID(id)
|
|
661
|
-
: id;
|
|
662
|
-
const idFieldName = this.isMongoDB ? '_id' : 'id';
|
|
663
|
-
const value = await this.repository.findOneOrFail({
|
|
664
|
-
where: {
|
|
665
|
-
[idFieldName]: parsedId
|
|
666
|
-
}
|
|
667
|
-
});
|
|
668
|
-
const flatValue = js_utils_1.Objects.flatten(JSON.parse(JSON.stringify(value)));
|
|
669
|
-
Object.keys(flatValue).forEach(key => {
|
|
670
|
-
flatValue[key] = null;
|
|
671
|
-
});
|
|
672
|
-
const nullObject = js_utils_1.Objects.nest(flatValue);
|
|
673
|
-
const newValue = { ...nullObject, ...data };
|
|
674
|
-
delete newValue._id;
|
|
675
|
-
delete newValue.id;
|
|
676
|
-
delete newValue.created;
|
|
677
|
-
delete newValue.updated;
|
|
678
|
-
const dataToInsert = this.outputKeys.includes('updated')
|
|
679
|
-
? {
|
|
680
|
-
...data,
|
|
681
|
-
...{ updated: new Date() }
|
|
682
|
-
}
|
|
683
|
-
: data;
|
|
684
|
-
const validatedData = this.inputSchema.parse(dataToInsert);
|
|
685
|
-
const updateResults = await this.repository.update(id, validatedData);
|
|
686
|
-
if (updateResults.affected === 0) {
|
|
687
|
-
throw new Error('No rows where affected');
|
|
688
|
-
}
|
|
689
|
-
const val = await this.repository.findOneOrFail({
|
|
690
|
-
where: {
|
|
691
|
-
[idFieldName]: parsedId
|
|
692
|
-
}
|
|
693
|
-
});
|
|
694
|
-
if (this.isMongoDB) {
|
|
695
|
-
val['id'] = val['id'].toString();
|
|
696
|
-
}
|
|
697
|
-
return this.outputSchema.parse(this.clearEmpties(js_utils_1.Objects.deleteNulls(val)));
|
|
698
|
-
}
|
|
699
|
-
async clear() {
|
|
700
|
-
await this.repository.clear();
|
|
701
|
-
return true;
|
|
702
|
-
}
|
|
703
|
-
loadFirst(query) {
|
|
704
|
-
const detachedClass = Object.assign(Object.create(Object.getPrototypeOf(this)), this);
|
|
705
|
-
detachedClass.setRelatedQuery({
|
|
706
|
-
entity: this.entity,
|
|
707
|
-
repository: this,
|
|
708
|
-
query
|
|
709
|
-
});
|
|
710
|
-
return detachedClass;
|
|
711
|
-
}
|
|
712
|
-
loadById(id) {
|
|
713
|
-
const newInstance = this.clone();
|
|
714
|
-
newInstance.setRelatedQuery({
|
|
715
|
-
entity: this.entity,
|
|
716
|
-
repository: this,
|
|
717
|
-
query: {
|
|
718
|
-
where: {
|
|
719
|
-
id
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
|
-
});
|
|
723
|
-
return newInstance;
|
|
724
|
-
}
|
|
725
|
-
async requireById(id, q) {
|
|
726
|
-
const found = await this.findByIds([id], {
|
|
727
|
-
select: q?.select,
|
|
728
|
-
include: q?.include,
|
|
729
|
-
limit: 1
|
|
730
|
-
});
|
|
731
|
-
found.map(d => {
|
|
732
|
-
if (this.isMongoDB) {
|
|
733
|
-
d['id'] = d['id'].toString();
|
|
734
|
-
}
|
|
735
|
-
this.clearEmpties(js_utils_1.Objects.deleteNulls(d));
|
|
736
|
-
});
|
|
737
|
-
if (!found[0]) {
|
|
738
|
-
throw new Error(`Object ${id} not found`);
|
|
739
|
-
}
|
|
740
|
-
return this.outputSchema?.parse(found[0]);
|
|
741
|
-
}
|
|
742
|
-
clone() {
|
|
743
|
-
return new this.constructor();
|
|
744
|
-
}
|
|
745
|
-
async findByIds(ids, q) {
|
|
746
|
-
let data = await this.findMany({
|
|
747
|
-
where: {
|
|
748
|
-
id: {
|
|
749
|
-
in: ids
|
|
750
|
-
}
|
|
751
|
-
},
|
|
752
|
-
limit: q?.limit,
|
|
753
|
-
select: q?.select,
|
|
754
|
-
include: q?.include
|
|
755
|
-
});
|
|
756
|
-
return this.outputSchema?.array().parse(data);
|
|
757
|
-
}
|
|
758
|
-
getOrderBy(orderBy) {
|
|
759
|
-
if (!orderBy || orderBy.length === 0) {
|
|
760
|
-
return {};
|
|
761
|
-
}
|
|
762
|
-
const order = {};
|
|
763
|
-
for (const orderElement of orderBy) {
|
|
764
|
-
const flattenOrder = js_utils_1.Objects.flatten(orderElement);
|
|
765
|
-
for (const k of Object.keys(flattenOrder)) {
|
|
766
|
-
order[k] = flattenOrder[k];
|
|
767
|
-
}
|
|
768
|
-
}
|
|
769
|
-
return js_utils_1.Objects.nest(order);
|
|
770
|
-
}
|
|
771
759
|
}
|
|
772
760
|
exports.TypeOrmConnector = TypeOrmConnector;
|
|
File without changes
|
|
File without changes
|
|
@@ -43,15 +43,15 @@ export declare const NestedSchema: z.ZodObject<{
|
|
|
43
43
|
c: boolean;
|
|
44
44
|
d: string[];
|
|
45
45
|
} | undefined;
|
|
46
|
-
a: string[];
|
|
47
46
|
c: number;
|
|
47
|
+
a: string[];
|
|
48
48
|
}, {
|
|
49
49
|
b?: {
|
|
50
50
|
c: boolean;
|
|
51
51
|
d: string[];
|
|
52
52
|
} | undefined;
|
|
53
|
-
a: string[];
|
|
54
53
|
c: number;
|
|
54
|
+
a: string[];
|
|
55
55
|
}>;
|
|
56
56
|
export declare const TypeORMDataModelSchema: z.ZodObject<{
|
|
57
57
|
id: z.ZodOptional<z.ZodString>;
|
|
@@ -75,15 +75,15 @@ export declare const TypeORMDataModelSchema: z.ZodObject<{
|
|
|
75
75
|
c: boolean;
|
|
76
76
|
d: string[];
|
|
77
77
|
} | undefined;
|
|
78
|
-
a: string[];
|
|
79
78
|
c: number;
|
|
79
|
+
a: string[];
|
|
80
80
|
}, {
|
|
81
81
|
b?: {
|
|
82
82
|
c: boolean;
|
|
83
83
|
d: string[];
|
|
84
84
|
} | undefined;
|
|
85
|
-
a: string[];
|
|
86
85
|
c: number;
|
|
86
|
+
a: string[];
|
|
87
87
|
}>>;
|
|
88
88
|
test: z.ZodBoolean;
|
|
89
89
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -95,8 +95,8 @@ export declare const TypeORMDataModelSchema: z.ZodObject<{
|
|
|
95
95
|
c: boolean;
|
|
96
96
|
d: string[];
|
|
97
97
|
} | undefined;
|
|
98
|
-
a: string[];
|
|
99
98
|
c: number;
|
|
99
|
+
a: string[];
|
|
100
100
|
} | undefined;
|
|
101
101
|
test: boolean;
|
|
102
102
|
}, {
|
|
@@ -108,8 +108,8 @@ export declare const TypeORMDataModelSchema: z.ZodObject<{
|
|
|
108
108
|
c: boolean;
|
|
109
109
|
d: string[];
|
|
110
110
|
} | undefined;
|
|
111
|
-
a: string[];
|
|
112
111
|
c: number;
|
|
112
|
+
a: string[];
|
|
113
113
|
} | undefined;
|
|
114
114
|
test: boolean;
|
|
115
115
|
}>;
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const basicTestSuite: (
|
|
1
|
+
export declare const basicTestSuite: (Repo: any) => void;
|