@punks/backend-entity-manager 0.0.96 → 0.0.98
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/dist/cjs/index.js +109 -10
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/__test__/entity/foo.d.ts +1 -1
- package/dist/cjs/types/__test__/providers/typeorm/converter/foo.d.ts +9 -0
- package/dist/cjs/types/__test__/providers/typeorm/entity/foo.d.ts +1 -83
- package/dist/cjs/types/__test__/providers/typeorm/init/foo.d.ts +6 -0
- package/dist/cjs/types/__test__/providers/typeorm/manager/foo.d.ts +4 -0
- package/dist/cjs/types/__test__/providers/typeorm/models/foo.d.ts +56 -0
- package/dist/cjs/types/__test__/providers/typeorm/queries/foo.d.ts +12 -0
- package/dist/cjs/types/__test__/providers/typeorm/repository/foo.d.ts +6 -0
- package/dist/cjs/types/__test__/providers/typeorm/serializer/foo.d.ts +6 -0
- package/dist/cjs/types/integrations/repository/typeorm/clause.d.ts +32 -0
- package/dist/cjs/types/integrations/repository/typeorm/facets.d.ts +7 -0
- package/dist/cjs/types/integrations/repository/typeorm/queryBuilder.d.ts +6 -1
- package/dist/cjs/types/integrations/repository/typeorm/queryClauseBuilder.d.ts +8 -0
- package/dist/cjs/types/integrations/repository/typeorm/repository.d.ts +1 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appCompanies/appCompany.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appDivisions/appDivision.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appOrganizations/appOrganization.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appRoles/appRole.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appTenants/appTenant.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appUserGroupMembers/appUserGroupMember.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appUserGroups/appUserGroup.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appUserProfiles/appUserProfile.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appUserRoles/appUserRole.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/appUsers/appUser.query.d.ts +1 -1
- package/dist/cjs/types/platforms/nest/__test__/server/entities/foos/foo.models.d.ts +2 -0
- package/dist/cjs/types/platforms/nest/__test__/server/entities/foos/foo.query.d.ts +1 -1
- package/dist/esm/index.js +110 -11
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/__test__/entity/foo.d.ts +1 -1
- package/dist/esm/types/__test__/providers/typeorm/converter/foo.d.ts +9 -0
- package/dist/esm/types/__test__/providers/typeorm/entity/foo.d.ts +1 -83
- package/dist/esm/types/__test__/providers/typeorm/init/foo.d.ts +6 -0
- package/dist/esm/types/__test__/providers/typeorm/manager/foo.d.ts +4 -0
- package/dist/esm/types/__test__/providers/typeorm/models/foo.d.ts +56 -0
- package/dist/esm/types/__test__/providers/typeorm/queries/foo.d.ts +12 -0
- package/dist/esm/types/__test__/providers/typeorm/repository/foo.d.ts +6 -0
- package/dist/esm/types/__test__/providers/typeorm/serializer/foo.d.ts +6 -0
- package/dist/esm/types/integrations/repository/typeorm/clause.d.ts +32 -0
- package/dist/esm/types/integrations/repository/typeorm/facets.d.ts +7 -0
- package/dist/esm/types/integrations/repository/typeorm/queryBuilder.d.ts +6 -1
- package/dist/esm/types/integrations/repository/typeorm/queryClauseBuilder.d.ts +8 -0
- package/dist/esm/types/integrations/repository/typeorm/repository.d.ts +1 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/appCompanies/appCompany.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appDivisions/appDivision.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appOrganizations/appOrganization.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appRoles/appRole.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appTenants/appTenant.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appUserGroupMembers/appUserGroupMember.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appUserGroups/appUserGroup.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appUserProfiles/appUserProfile.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appUserRoles/appUserRole.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/appUsers/appUser.query.d.ts +1 -1
- package/dist/esm/types/platforms/nest/__test__/server/entities/foos/foo.models.d.ts +2 -0
- package/dist/esm/types/platforms/nest/__test__/server/entities/foos/foo.query.d.ts +1 -1
- package/dist/index.d.ts +50 -2
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -21442,10 +21442,90 @@ class QueryBuilderBase {
|
|
|
21442
21442
|
}
|
|
21443
21443
|
}
|
|
21444
21444
|
|
|
21445
|
+
class QueryClauseBuilder {
|
|
21446
|
+
stringFilter(filter) {
|
|
21447
|
+
const clauses = [];
|
|
21448
|
+
if (!!filter?.gte) {
|
|
21449
|
+
clauses.push(typeorm.MoreThanOrEqual(filter.gte));
|
|
21450
|
+
}
|
|
21451
|
+
if (!!filter?.gt) {
|
|
21452
|
+
clauses.push(typeorm.MoreThan(filter.gt));
|
|
21453
|
+
}
|
|
21454
|
+
if (!!filter?.lte) {
|
|
21455
|
+
clauses.push(typeorm.LessThanOrEqual(filter.lte));
|
|
21456
|
+
}
|
|
21457
|
+
if (!!filter?.lt) {
|
|
21458
|
+
clauses.push(typeorm.LessThan(filter.lt));
|
|
21459
|
+
}
|
|
21460
|
+
if (!!filter?.in) {
|
|
21461
|
+
clauses.push(typeorm.In(filter.in));
|
|
21462
|
+
}
|
|
21463
|
+
if (!!filter?.eq) {
|
|
21464
|
+
clauses.push(typeorm.Equal(filter.eq));
|
|
21465
|
+
}
|
|
21466
|
+
if (!!filter?.like) {
|
|
21467
|
+
clauses.push(typeorm.Like(filter.like.replaceAll("*", "%")));
|
|
21468
|
+
}
|
|
21469
|
+
if (!!filter?.ne) {
|
|
21470
|
+
clauses.push(typeorm.Not(typeorm.Equal(filter.ne)));
|
|
21471
|
+
}
|
|
21472
|
+
if (!!filter?.notIn) {
|
|
21473
|
+
clauses.push(typeorm.Not(typeorm.In(filter.notIn)));
|
|
21474
|
+
}
|
|
21475
|
+
if (!!filter?.notLike) {
|
|
21476
|
+
clauses.push(typeorm.Not(typeorm.Like(filter.notLike.replaceAll("*", "%"))));
|
|
21477
|
+
}
|
|
21478
|
+
return typeorm.And(...clauses);
|
|
21479
|
+
}
|
|
21480
|
+
numericFilter(filter) {
|
|
21481
|
+
const clauses = [];
|
|
21482
|
+
if (!!filter?.gte) {
|
|
21483
|
+
clauses.push(typeorm.MoreThanOrEqual(filter.gte));
|
|
21484
|
+
}
|
|
21485
|
+
if (!!filter?.gt) {
|
|
21486
|
+
clauses.push(typeorm.MoreThan(filter.gt));
|
|
21487
|
+
}
|
|
21488
|
+
if (!!filter?.lte) {
|
|
21489
|
+
clauses.push(typeorm.LessThanOrEqual(filter.lte));
|
|
21490
|
+
}
|
|
21491
|
+
if (!!filter?.lt) {
|
|
21492
|
+
clauses.push(typeorm.LessThan(filter.lt));
|
|
21493
|
+
}
|
|
21494
|
+
return typeorm.And(...clauses);
|
|
21495
|
+
}
|
|
21496
|
+
dateFilter(filter) {
|
|
21497
|
+
const clauses = [];
|
|
21498
|
+
if (!!filter?.gte) {
|
|
21499
|
+
clauses.push(typeorm.MoreThanOrEqual(filter.gte));
|
|
21500
|
+
}
|
|
21501
|
+
if (!!filter?.gt) {
|
|
21502
|
+
clauses.push(typeorm.MoreThan(filter.gt));
|
|
21503
|
+
}
|
|
21504
|
+
if (!!filter?.lte) {
|
|
21505
|
+
clauses.push(typeorm.LessThanOrEqual(filter.lte));
|
|
21506
|
+
}
|
|
21507
|
+
if (!!filter?.lt) {
|
|
21508
|
+
clauses.push(typeorm.LessThan(filter.lt));
|
|
21509
|
+
}
|
|
21510
|
+
return typeorm.And(...clauses);
|
|
21511
|
+
}
|
|
21512
|
+
boolFilter(filter) {
|
|
21513
|
+
const clauses = [];
|
|
21514
|
+
if (!backendCore.isNullOrUndefined(filter?.eq)) {
|
|
21515
|
+
clauses.push(typeorm.Equal(filter.eq));
|
|
21516
|
+
}
|
|
21517
|
+
if (!backendCore.isNullOrUndefined(filter?.ne)) {
|
|
21518
|
+
clauses.push(typeorm.Not(typeorm.Equal(filter.ne)));
|
|
21519
|
+
}
|
|
21520
|
+
return typeorm.And(...clauses);
|
|
21521
|
+
}
|
|
21522
|
+
}
|
|
21523
|
+
|
|
21445
21524
|
class TypeOrmQueryBuilder extends QueryBuilderBase {
|
|
21446
21525
|
constructor(services) {
|
|
21447
21526
|
super();
|
|
21448
21527
|
this.services = services;
|
|
21528
|
+
this.clause = new QueryClauseBuilder();
|
|
21449
21529
|
}
|
|
21450
21530
|
async exists(filters, context) {
|
|
21451
21531
|
return (await this.count(filters, context)) > 0;
|
|
@@ -21469,7 +21549,9 @@ class TypeOrmQueryBuilder extends QueryBuilderBase {
|
|
|
21469
21549
|
// todo: execute inside read transaction in order to perform the three queries on the same dataset
|
|
21470
21550
|
const queryResults = await this.countQueryResults(request, context);
|
|
21471
21551
|
const results = await this.findPagedQueryResults(request, context);
|
|
21472
|
-
const facets =
|
|
21552
|
+
const facets = request.options?.includeFacets
|
|
21553
|
+
? await this.calculateFacets(request, context)
|
|
21554
|
+
: undefined;
|
|
21473
21555
|
return {
|
|
21474
21556
|
items: results,
|
|
21475
21557
|
request,
|
|
@@ -21481,6 +21563,9 @@ class TypeOrmQueryBuilder extends QueryBuilderBase {
|
|
|
21481
21563
|
facets,
|
|
21482
21564
|
};
|
|
21483
21565
|
}
|
|
21566
|
+
async getFieldFacet() {
|
|
21567
|
+
this.getRepository().find({});
|
|
21568
|
+
}
|
|
21484
21569
|
async findPagedQueryResults(request, context) {
|
|
21485
21570
|
return await this.getRepository().find({
|
|
21486
21571
|
where: {
|
|
@@ -21510,15 +21595,15 @@ class TypeOrmQueryBuilder extends QueryBuilderBase {
|
|
|
21510
21595
|
},
|
|
21511
21596
|
});
|
|
21512
21597
|
}
|
|
21513
|
-
|
|
21514
|
-
|
|
21515
|
-
|
|
21516
|
-
|
|
21517
|
-
|
|
21518
|
-
|
|
21519
|
-
|
|
21520
|
-
|
|
21521
|
-
|
|
21598
|
+
async calculateFacet(field, request, context) {
|
|
21599
|
+
const values = await this.getRepository().distinct(field, {
|
|
21600
|
+
...(context ? this.buildContextFilter(context) : {}),
|
|
21601
|
+
...this.buildWhereClause(request),
|
|
21602
|
+
});
|
|
21603
|
+
return {
|
|
21604
|
+
values,
|
|
21605
|
+
};
|
|
21606
|
+
}
|
|
21522
21607
|
getRepository() {
|
|
21523
21608
|
if (!this.repository) {
|
|
21524
21609
|
this.repository = this.services.resolveRepository();
|
|
@@ -21535,6 +21620,20 @@ class TypeOrmRepository {
|
|
|
21535
21620
|
getInnerRepository() {
|
|
21536
21621
|
return this.innerRepository;
|
|
21537
21622
|
}
|
|
21623
|
+
async distinct(field, condition) {
|
|
21624
|
+
this.logger.debug("Getting distinct values", { field });
|
|
21625
|
+
const columnName = this.innerRepository.metadata.findColumnWithPropertyName(field)?.databaseName;
|
|
21626
|
+
if (!columnName) {
|
|
21627
|
+
throw new Error(`Column '${field}' not found`);
|
|
21628
|
+
}
|
|
21629
|
+
const results = await this.innerRepository
|
|
21630
|
+
.createQueryBuilder()
|
|
21631
|
+
.select(`DISTINCT ${columnName}`)
|
|
21632
|
+
.where(condition)
|
|
21633
|
+
.orderBy(columnName)
|
|
21634
|
+
.getRawMany();
|
|
21635
|
+
return results.map((x) => x[columnName]);
|
|
21636
|
+
}
|
|
21538
21637
|
async exists(id) {
|
|
21539
21638
|
if (backendCore.isNullOrUndefined(id)) {
|
|
21540
21639
|
throw new Error("Invalid 'id' parameter.");
|