rez_core 5.0.211 → 6.1.0

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 (95) hide show
  1. package/dist/config/database.config.js +1 -1
  2. package/dist/config/database.config.js.map +1 -1
  3. package/dist/migrations/1732612800000-AddEntityJsonGinIndex.d.ts +6 -0
  4. package/dist/migrations/1732612800000-AddEntityJsonGinIndex.js +32 -0
  5. package/dist/migrations/1732612800000-AddEntityJsonGinIndex.js.map +1 -0
  6. package/dist/module/entity_json/controller/entity_json.controller.d.ts +2 -9
  7. package/dist/module/entity_json/controller/entity_json.controller.js.map +1 -1
  8. package/dist/module/entity_json/entity/entityJson.entity.d.ts +2 -1
  9. package/dist/module/entity_json/entity/entityJson.entity.js +5 -1
  10. package/dist/module/entity_json/entity/entityJson.entity.js.map +1 -1
  11. package/dist/module/entity_json/entity_json.module.js +7 -2
  12. package/dist/module/entity_json/entity_json.module.js.map +1 -1
  13. package/dist/module/entity_json/service/entity_json.service.d.ts +5 -12
  14. package/dist/module/entity_json/service/entity_json.service.js +111 -29
  15. package/dist/module/entity_json/service/entity_json.service.js.map +1 -1
  16. package/dist/module/filter/controller/filter.controller.d.ts +12 -0
  17. package/dist/module/filter/controller/filter.controller.js +1 -1
  18. package/dist/module/filter/controller/filter.controller.js.map +1 -1
  19. package/dist/module/filter/filter.module.js +11 -2
  20. package/dist/module/filter/filter.module.js.map +1 -1
  21. package/dist/module/filter/service/filter.service.d.ts +38 -2
  22. package/dist/module/filter/service/filter.service.js +42 -49
  23. package/dist/module/filter/service/filter.service.js.map +1 -1
  24. package/dist/module/filter/service/flatjson-filter.service.d.ts +32 -0
  25. package/dist/module/filter/service/flatjson-filter.service.js +632 -0
  26. package/dist/module/filter/service/flatjson-filter.service.js.map +1 -0
  27. package/dist/module/filter/service/saved-filter.service.d.ts +3 -2
  28. package/dist/module/filter/service/saved-filter.service.js +14 -18
  29. package/dist/module/filter/service/saved-filter.service.js.map +1 -1
  30. package/dist/module/linked_attributes/controller/linked_attributes.controller.d.ts +19 -0
  31. package/dist/module/linked_attributes/controller/linked_attributes.controller.js +77 -0
  32. package/dist/module/linked_attributes/controller/linked_attributes.controller.js.map +1 -1
  33. package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.d.ts +13 -0
  34. package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.js +64 -0
  35. package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.js.map +1 -0
  36. package/dist/module/linked_attributes/linked_attributes.module.js +4 -2
  37. package/dist/module/linked_attributes/linked_attributes.module.js.map +1 -1
  38. package/dist/module/linked_attributes/service/linked_attributes.service.d.ts +41 -1
  39. package/dist/module/linked_attributes/service/linked_attributes.service.js +265 -1
  40. package/dist/module/linked_attributes/service/linked_attributes.service.js.map +1 -1
  41. package/dist/module/meta/controller/attribute-master.controller.d.ts +3 -0
  42. package/dist/module/meta/controller/attribute-master.controller.js +12 -0
  43. package/dist/module/meta/controller/attribute-master.controller.js.map +1 -1
  44. package/dist/module/meta/entity.module.js +2 -2
  45. package/dist/module/meta/entity.module.js.map +1 -1
  46. package/dist/module/meta/service/attribute-master.service.d.ts +6 -1
  47. package/dist/module/meta/service/attribute-master.service.js +20 -2
  48. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  49. package/dist/module/meta/service/entity-master.service.js +1 -0
  50. package/dist/module/meta/service/entity-master.service.js.map +1 -1
  51. package/dist/module/meta/service/entity-relation.service.d.ts +4 -3
  52. package/dist/module/meta/service/entity-relation.service.js +10 -4
  53. package/dist/module/meta/service/entity-relation.service.js.map +1 -1
  54. package/dist/module/meta/service/entity-service-impl.service.d.ts +1 -1
  55. package/dist/module/meta/service/entity-service-impl.service.js +2 -2
  56. package/dist/module/meta/service/entity-service-impl.service.js.map +1 -1
  57. package/dist/module/meta/service/entity-table.service.d.ts +5 -4
  58. package/dist/module/meta/service/entity-table.service.js +45 -24
  59. package/dist/module/meta/service/entity-table.service.js.map +1 -1
  60. package/dist/module/meta/service/resolver.service.d.ts +1 -1
  61. package/dist/module/meta/service/resolver.service.js +6 -3
  62. package/dist/module/meta/service/resolver.service.js.map +1 -1
  63. package/dist/module/workflow-automation/service/workflow-automation.service.js +2 -3
  64. package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
  65. package/dist/table.config.d.ts +1 -1
  66. package/dist/tsconfig.build.tsbuildinfo +1 -1
  67. package/package.json +1 -1
  68. package/src/config/database.config.ts +1 -1
  69. package/src/migrations/1732612800000-AddEntityJsonGinIndex.ts +41 -0
  70. package/src/module/entity_json/controller/entity_json.controller.ts +13 -0
  71. package/src/module/entity_json/docs/FlatJson_Filterin_System.md +2804 -0
  72. package/src/module/entity_json/entity/entityJson.entity.ts +4 -1
  73. package/src/module/entity_json/entity_json.module.ts +9 -5
  74. package/src/module/entity_json/service/entity_json.service.ts +236 -49
  75. package/src/module/filter/controller/filter.controller.ts +4 -4
  76. package/src/module/filter/filter.module.ts +12 -3
  77. package/src/module/filter/service/filter.service.ts +130 -71
  78. package/src/module/filter/service/flatjson-filter.service.ts +903 -0
  79. package/src/module/filter/service/saved-filter.service.ts +16 -26
  80. package/src/module/filter/test/flatjson-filter.service.spec.ts +415 -0
  81. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +85 -0
  82. package/src/module/linked_attributes/dto/create-linked-attribute-smart.dto.ts +54 -0
  83. package/src/module/linked_attributes/linked_attributes.module.ts +5 -3
  84. package/src/module/linked_attributes/service/linked_attributes.service.ts +545 -2
  85. package/src/module/linked_attributes/test/linked-attributes.service.spec.ts +244 -0
  86. package/src/module/meta/controller/attribute-master.controller.ts +12 -0
  87. package/src/module/meta/entity.module.ts +3 -3
  88. package/src/module/meta/service/attribute-master.service.ts +29 -1
  89. package/src/module/meta/service/entity-master.service.ts +1 -0
  90. package/src/module/meta/service/entity-relation.service.ts +10 -6
  91. package/src/module/meta/service/entity-service-impl.service.ts +2 -1
  92. package/src/module/meta/service/entity-table.service.ts +82 -68
  93. package/src/module/meta/service/entity.service.ts +0 -1
  94. package/src/module/meta/service/resolver.service.ts +7 -3
  95. package/src/module/workflow-automation/service/workflow-automation.service.ts +2 -4
@@ -1,4 +1,9 @@
1
- import { BadRequestException, Inject, Injectable } from '@nestjs/common';
1
+ import {
2
+ BadRequestException,
3
+ forwardRef,
4
+ Inject,
5
+ Injectable,
6
+ } from '@nestjs/common';
2
7
  import { AttributeMasterService } from 'src/module/meta/service/attribute-master.service';
3
8
  import { EntityMasterService } from 'src/module/meta/service/entity-master.service';
4
9
  import { FilterCondition, FilterRequestDto } from '../dto/filter-request.dto';
@@ -11,21 +16,29 @@ import { LoggingService } from 'src/utils/service/loggingUtil.service';
11
16
  import { ConfigService } from '@nestjs/config';
12
17
  import { ReflectionHelper } from '../../../utils/service/reflection-helper.service';
13
18
  import { EntityManager } from 'typeorm';
19
+ import { FlatjsonFilterService } from './flatjson-filter.service';
14
20
 
15
21
  @Injectable()
16
22
  export class FilterService {
17
23
  constructor(
18
24
  private entityManager: EntityManager,
25
+ @Inject(forwardRef(() => AttributeMasterService))
19
26
  private readonly attributeMasterService: AttributeMasterService,
27
+ @Inject(forwardRef(() => EntityMasterService))
20
28
  private readonly entityMasterService: EntityMasterService,
21
- @Inject('SavedFilterService')
22
- private readonly savedFilterService: SavedFilterService,
23
29
  @Inject('EntityRelationService')
24
30
  private readonly entityRelationService: EntityRelationService,
31
+ @Inject('SavedFilterService')
32
+ private readonly savedFilterService: SavedFilterService,
33
+ @Inject(forwardRef(() => ResolverService))
25
34
  private readonly resolverService: ResolverService,
26
- @Inject() protected readonly loggingService: LoggingService,
35
+ @Inject(forwardRef(() => LoggingService))
36
+ protected readonly loggingService: LoggingService,
27
37
  private readonly configService: ConfigService,
38
+ @Inject(forwardRef(() => ReflectionHelper))
28
39
  private readonly reflectionHelper: ReflectionHelper,
40
+ @Inject(forwardRef(() => FlatjsonFilterService))
41
+ private readonly flatjsonFilterService: FlatjsonFilterService,
29
42
  ) {}
30
43
 
31
44
  schema = this.configService.get('DB_SCHEMA');
@@ -97,6 +110,51 @@ export class FilterService {
97
110
  ];
98
111
  }
99
112
 
113
+ /**
114
+ * Route to flatjson or traditional filtering based on configuration
115
+ */
116
+ async applyFilterWithRouting(dto: FilterRequestDto) {
117
+ // Check if flatjson filtering is enabled via config or query param
118
+ const useFlatjson = dto.queryParams?.use_flatjson === 'true';
119
+
120
+ if (useFlatjson) {
121
+ await this.loggingService.log(
122
+ 'info',
123
+ 'FilterService',
124
+ 'applyFilterWithRouting',
125
+ `Using FLATJSON filtering for ${dto.entity_type}`,
126
+ );
127
+
128
+ // Use new flatjson filtering service
129
+ const result = await this.flatjsonFilterService.applyFlatjsonFilter(dto);
130
+
131
+ // Transform to match existing response format
132
+ return {
133
+ success: true,
134
+ data: {
135
+ entity_tabs: result.tabCounts || [],
136
+ entity_list: result.data,
137
+ pagination: {
138
+ total: result.total,
139
+ page: result.page,
140
+ size: result.size,
141
+ totalPages: result.totalPages,
142
+ },
143
+ },
144
+ };
145
+ } else {
146
+ await this.loggingService.log(
147
+ 'info',
148
+ 'FilterService',
149
+ 'applyFilterWithRouting',
150
+ `Using TRADITIONAL filtering for ${dto.entity_type}`,
151
+ );
152
+
153
+ // Use traditional filtering
154
+ return this.applyFilterWrapper(dto);
155
+ }
156
+ }
157
+
100
158
  async applyFilterWrapper(dto: FilterRequestDto) {
101
159
  const {
102
160
  entity_type,
@@ -227,6 +285,7 @@ export class FilterService {
227
285
  id: user_id,
228
286
  appcode,
229
287
  organization_id,
288
+ enterprise_id,
230
289
  } = loggedInUser || {};
231
290
 
232
291
  // Fetch meta from entity table service
@@ -417,60 +476,60 @@ export class FilterService {
417
476
 
418
477
  const dataWhere = [...baseWhere];
419
478
 
420
- if (tabs?.columnName && tabs?.value) {
421
- const tabAttrMeta = attributeMetaMap[tabs.columnName];
422
- const tabValue = tabs.value.toLowerCase();
423
-
424
- if (tabValue === 'others') {
425
- // Extract 'value' (IDs) from showList, ignore 'all'
426
- const valuesToExclude = showList
427
- .filter((v) => v.label.toLowerCase() !== 'all')
428
- .map((v) => v.value);
429
-
430
- if (valuesToExclude.length > 0) {
431
- for (const value of valuesToExclude) {
432
- const resolvedId = await this.resolverService.getResolvedId(
433
- loggedInUser,
434
- tabs.columnName,
435
- value,
436
- entity_type,
437
- );
438
- if (resolvedId) {
439
- const tabCondition = this.buildCondition(
440
- {
441
- filter_attribute: tabs.columnName,
442
- filter_operator: 'not_equal',
443
- filter_value: [resolvedId],
444
- skip_id: true,
445
- },
446
- tabAttrMeta,
447
- );
448
- if (tabCondition) dataWhere.push(tabCondition);
449
- }
450
- }
451
- }
452
- } else if (tabValue !== 'all') {
453
- const resolvedId = await this.resolverService.getResolvedId(
454
- loggedInUser,
455
- tabs.columnName,
456
- tabs.value,
457
- entity_type,
458
- );
459
-
460
- if (resolvedId) {
461
- const tabCondition = this.buildCondition(
462
- {
463
- filter_attribute: tabs.columnName,
464
- filter_operator: 'equal',
465
- filter_value: [resolvedId],
466
- skip_id: true,
467
- },
468
- tabAttrMeta,
469
- );
470
- if (tabCondition) dataWhere.push(tabCondition);
471
- }
472
- }
473
- }
479
+ // if (tabs?.columnName && tabs?.value) {
480
+ // const tabAttrMeta = attributeMetaMap[tabs.columnName];
481
+ // const tabValue = tabs.value.toLowerCase();
482
+
483
+ // if (tabValue === 'others') {
484
+ // // Extract 'value' (IDs) from showList, ignore 'all'
485
+ // const valuesToExclude = showList
486
+ // .filter((v) => v.label.toLowerCase() !== 'all')
487
+ // .map((v) => v.value);
488
+
489
+ // if (valuesToExclude.length > 0) {
490
+ // for (const value of valuesToExclude) {
491
+ // const resolvedId = await this.resolverService.getResolvedId(
492
+ // loggedInUser,
493
+ // tabs.columnName,
494
+ // value,
495
+ // entity_type,
496
+ // );
497
+ // if (resolvedId) {
498
+ // const tabCondition = this.buildCondition(
499
+ // {
500
+ // filter_attribute: tabs.columnName,
501
+ // filter_operator: 'not_equal',
502
+ // filter_value: [resolvedId],
503
+ // skip_id: true,
504
+ // },
505
+ // tabAttrMeta,
506
+ // );
507
+ // if (tabCondition) dataWhere.push(tabCondition);
508
+ // }
509
+ // }
510
+ // }
511
+ // } else if (tabValue !== 'all') {
512
+ // const resolvedId = await this.resolverService.getResolvedId(
513
+ // loggedInUser,
514
+ // tabs.columnName,
515
+ // tabs.value,
516
+ // entity_type,
517
+ // );
518
+
519
+ // if (resolvedId) {
520
+ // const tabCondition = this.buildCondition(
521
+ // {
522
+ // filter_attribute: tabs.columnName,
523
+ // filter_operator: 'equal',
524
+ // filter_value: [resolvedId],
525
+ // skip_id: true,
526
+ // },
527
+ // tabAttrMeta,
528
+ // );
529
+ // if (tabCondition) dataWhere.push(tabCondition);
530
+ // }
531
+ // }
532
+ // }
474
533
 
475
534
  let qb = this.entityManager
476
535
  .createQueryBuilder()
@@ -513,11 +572,11 @@ export class FilterService {
513
572
 
514
573
  const formattedEntityList = entity_list.map(formatDatesInRow);
515
574
 
516
- const resolvedEntityList = await Promise.all(
517
- formattedEntityList.map((row) =>
518
- this.resolverService.getResolvedData(loggedInUser, row, entity_type),
519
- ),
520
- );
575
+ // const resolvedEntityList = await Promise.all(
576
+ // formattedEntityList.map((row) =>
577
+ // this.resolverService.getResolvedData(loggedInUser, row, entity_type),
578
+ // ),
579
+ // );
521
580
 
522
581
  const resolvedTabs = await Promise.all(
523
582
  filteredTabs.map(async (tab) => {
@@ -531,14 +590,14 @@ export class FilterService {
531
590
  return tab;
532
591
  }
533
592
 
534
- const resolvedVal = await this.resolverService.getResolvedValue(
535
- loggedInUser,
536
- tabAttrKey,
537
- tab.tab_value,
538
- entity_type,
539
- );
593
+ // const resolvedVal = await this.resolverService.getResolvedValue(
594
+ // loggedInUser,
595
+ // tabAttrKey,
596
+ // tab.tab_value,
597
+ // entity_type,
598
+ // );
540
599
 
541
- return { ...tab, tab_value: resolvedVal ?? tab.tab_value };
600
+ return { ...tab, tab_value: tab.tab_value ?? tab.tab_value };
542
601
  }),
543
602
  );
544
603
 
@@ -558,7 +617,7 @@ export class FilterService {
558
617
  success: true,
559
618
  data: {
560
619
  entity_tabs: resolvedTabs,
561
- entity_list: resolvedEntityList,
620
+ entity_list: formattedEntityList,
562
621
  pagination: {
563
622
  total,
564
623
  page,