@punks/backend-entity-manager 0.0.165 → 0.0.167

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 (20) hide show
  1. package/dist/cjs/index.js +66 -28
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/abstractions/searchParameters.d.ts +1 -1
  4. package/dist/cjs/types/integrations/repository/typeorm/queryBuilder.d.ts +5 -0
  5. package/dist/cjs/types/platforms/nest/__test__/server/entities/appDirectories/appDirectory.types.d.ts +1 -1
  6. package/dist/cjs/types/platforms/nest/__test__/server/entities/appEmailLogs/appEmailLog.types.d.ts +1 -1
  7. package/dist/cjs/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.types.d.ts +1 -1
  8. package/dist/cjs/types/platforms/nest/__test__/server/entities/appFileReferences/appFileReference.types.d.ts +1 -1
  9. package/dist/cjs/types/platforms/nest/__test__/server/entities/crmContacts/crmContact.types.d.ts +1 -1
  10. package/dist/esm/index.js +67 -29
  11. package/dist/esm/index.js.map +1 -1
  12. package/dist/esm/types/abstractions/searchParameters.d.ts +1 -1
  13. package/dist/esm/types/integrations/repository/typeorm/queryBuilder.d.ts +5 -0
  14. package/dist/esm/types/platforms/nest/__test__/server/entities/appDirectories/appDirectory.types.d.ts +1 -1
  15. package/dist/esm/types/platforms/nest/__test__/server/entities/appEmailLogs/appEmailLog.types.d.ts +1 -1
  16. package/dist/esm/types/platforms/nest/__test__/server/entities/appEntityVersions/appEntityVersion.types.d.ts +1 -1
  17. package/dist/esm/types/platforms/nest/__test__/server/entities/appFileReferences/appFileReference.types.d.ts +1 -1
  18. package/dist/esm/types/platforms/nest/__test__/server/entities/crmContacts/crmContact.types.d.ts +1 -1
  19. package/dist/index.d.ts +6 -1
  20. package/package.json +1 -1
package/dist/cjs/index.js CHANGED
@@ -632,7 +632,7 @@ class EntitiesDeleteCommand {
632
632
  return undefined;
633
633
  }
634
634
  const contextService = this.services.resolveAuthenticationContextProvider();
635
- return await contextService.getContext();
635
+ return await contextService?.getContext();
636
636
  }
637
637
  async authorize() {
638
638
  const authorization = this.services.resolveAuthorizationMiddleware();
@@ -1722,7 +1722,7 @@ class EntitiesCountQuery {
1722
1722
  return undefined;
1723
1723
  }
1724
1724
  const contextService = this.services.resolveAuthenticationContextProvider();
1725
- return await contextService.getContext();
1725
+ return await contextService?.getContext();
1726
1726
  }
1727
1727
  async authorizeSearch(context) {
1728
1728
  const authorization = this.services.resolveAuthorizationMiddleware();
@@ -1753,7 +1753,7 @@ class EntityExistsQuery {
1753
1753
  return undefined;
1754
1754
  }
1755
1755
  const contextService = this.services.resolveAuthenticationContextProvider();
1756
- return await contextService.getContext();
1756
+ return await contextService?.getContext();
1757
1757
  }
1758
1758
  async authorizeSearch(context) {
1759
1759
  const authorization = this.services.resolveAuthorizationMiddleware();
@@ -1927,7 +1927,7 @@ class EntityVersionsSearchQuery {
1927
1927
  return undefined;
1928
1928
  }
1929
1929
  const contextService = this.services.resolveAuthenticationContextProvider();
1930
- return await contextService.getContext();
1930
+ return await contextService?.getContext();
1931
1931
  }
1932
1932
  async authorizeSearch(context) {
1933
1933
  const authorization = this.services.resolveAuthorizationMiddleware();
@@ -22220,10 +22220,7 @@ class TypeOrmQueryBuilder extends QueryBuilderBase {
22220
22220
  const request = {
22221
22221
  filters,
22222
22222
  };
22223
- return await this.getRepository().deleteBy({
22224
- ...(context ? this.buildContextFilter(context) : {}),
22225
- ...this.buildWhereClause(request),
22226
- });
22223
+ return await this.getRepository().deleteBy(this.buildWhere(request, context));
22227
22224
  }
22228
22225
  async find(request, context) {
22229
22226
  const results = await this.findPagedQueryResults({
@@ -22255,20 +22252,13 @@ class TypeOrmQueryBuilder extends QueryBuilderBase {
22255
22252
  }
22256
22253
  async getFieldDistinctValues(field, request, context) {
22257
22254
  return await this.getRepository().distinct(field, {
22258
- where: {
22259
- ...(context ? this.buildContextFilter(context) : {}),
22260
- ...this.buildWhereClause(request),
22261
- },
22255
+ where: this.buildWhere(request, context),
22262
22256
  });
22263
22257
  }
22264
22258
  async findPagedQueryResults(request, context) {
22265
22259
  return await this.getRepository().find({
22266
- where: {
22267
- ...(context ? this.buildContextFilter(context) : {}),
22268
- ...this.buildWhereClause(request),
22269
- },
22270
- relations: request.relations ??
22271
- this.getRelationsToLoad(request, context, exports.QueryBuilderOperation.Search),
22260
+ where: this.buildWhere(request, context),
22261
+ relations: this.buildSearchRelations(request, context),
22272
22262
  order: this.buildSortingClause(request),
22273
22263
  ...this.buildPagingParameters(request),
22274
22264
  });
@@ -22286,28 +22276,30 @@ class TypeOrmQueryBuilder extends QueryBuilderBase {
22286
22276
  }
22287
22277
  async countQueryResults(request, context) {
22288
22278
  return await this.getRepository().count({
22289
- where: {
22290
- ...(context ? this.buildContextFilter(context) : {}),
22291
- ...this.buildWhereClause(request),
22292
- },
22279
+ where: this.buildWhere(request, context),
22293
22280
  });
22294
22281
  }
22282
+ buildTextSearchClause(request) {
22283
+ if (!request.query ||
22284
+ !request.query.term ||
22285
+ !request.query.fields?.length) {
22286
+ return {};
22287
+ }
22288
+ return request.query.fields?.map((field) => ({
22289
+ [field]: typeorm.ILike(`%${request.query?.term}%`),
22290
+ }));
22291
+ }
22295
22292
  async calculateFacet(field, request, context, relations) {
22296
- const where = {
22297
- ...(context ? this.buildContextFilter(context) : {}),
22298
- ...this.buildWhereClause(request),
22299
- };
22300
22293
  let query = this.getRepository()
22301
22294
  .getInnerRepository()
22302
22295
  .createQueryBuilder("entity");
22303
- // .leftJoin("entity.contact", "contact")
22304
22296
  for (const relation of relations?.columns ?? []) {
22305
22297
  query = query.leftJoin(`entity.${relation}`, relation);
22306
22298
  }
22307
22299
  const results = await query
22308
22300
  .select(field, "value")
22309
22301
  .addSelect(`COUNT(${field})`, "count")
22310
- .where(where)
22302
+ .where(this.buildWhere(request, context))
22311
22303
  .addGroupBy(field)
22312
22304
  .orderBy(field)
22313
22305
  .getRawMany();
@@ -22333,6 +22325,52 @@ class TypeOrmQueryBuilder extends QueryBuilderBase {
22333
22325
  }
22334
22326
  return this.repository;
22335
22327
  }
22328
+ buildSearchRelations(request, context) {
22329
+ return (request.relations ??
22330
+ this.getRelationsToLoad(request, context, exports.QueryBuilderOperation.Search));
22331
+ }
22332
+ buildWhere(request, context) {
22333
+ return this.mergeWhereClauses(context ? this.buildContextFilter(context) : {}, this.buildWhereClause(request), this.buildTextSearchClause(request));
22334
+ }
22335
+ mergeWhereClauses(...clauses) {
22336
+ return clauses.reduce((a, b) => this.mergeWheres(a, b));
22337
+ }
22338
+ mergeWheres(a, b) {
22339
+ if (Array.isArray(a) && Array.isArray(b)) {
22340
+ const result = [];
22341
+ for (const x of a) {
22342
+ for (const y of b) {
22343
+ result.push({
22344
+ ...x,
22345
+ ...y,
22346
+ });
22347
+ }
22348
+ }
22349
+ return result;
22350
+ }
22351
+ if (!Array.isArray(a) && !Array.isArray(b)) {
22352
+ return {
22353
+ ...a,
22354
+ ...b,
22355
+ };
22356
+ }
22357
+ if (Array.isArray(a) && !Array.isArray(b)) {
22358
+ return a.map((x) => ({
22359
+ ...x,
22360
+ ...b,
22361
+ }));
22362
+ }
22363
+ if (!Array.isArray(a) && Array.isArray(b)) {
22364
+ return b.map((x) => ({
22365
+ ...a,
22366
+ ...x,
22367
+ }));
22368
+ }
22369
+ return {
22370
+ ...a,
22371
+ ...b,
22372
+ };
22373
+ }
22336
22374
  }
22337
22375
 
22338
22376
  class TypeOrmRepository {