rez_core 6.5.32 → 6.5.34

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 (397) hide show
  1. package/.claude/settings.local.json +26 -0
  2. package/.idea/250218_nodejs_core.iml +9 -0
  3. package/.idea/codeStyles/Project.xml +59 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/copilot.data.migration.agent.xml +6 -0
  6. package/.idea/copilot.data.migration.ask.xml +6 -0
  7. package/.idea/copilot.data.migration.ask2agent.xml +6 -0
  8. package/.idea/copilot.data.migration.edit.xml +6 -0
  9. package/.idea/inspectionProfiles/Project_Default.xml +6 -0
  10. package/.idea/misc.xml +6 -0
  11. package/.idea/modules.xml +8 -0
  12. package/.idea/prettier.xml +6 -0
  13. package/.idea/vcs.xml +6 -0
  14. package/dist/app.module.js +3 -3
  15. package/dist/app.module.js.map +1 -1
  16. package/dist/constant/status.constant.d.ts +4 -0
  17. package/dist/constant/status.constant.js +9 -0
  18. package/dist/constant/status.constant.js.map +1 -0
  19. package/dist/core.module.js +60 -38
  20. package/dist/core.module.js.map +1 -1
  21. package/dist/module/auth/strategies/jwt.strategy.d.ts +2 -1
  22. package/dist/module/auth/strategies/jwt.strategy.js +3 -2
  23. package/dist/module/auth/strategies/jwt.strategy.js.map +1 -1
  24. package/dist/module/dashboard/dashboard.module.js +1 -1
  25. package/dist/module/dashboard/dashboard.module.js.map +1 -1
  26. package/dist/module/dashboard/service/dashboard.service.js +1 -2
  27. package/dist/module/dashboard/service/dashboard.service.js.map +1 -1
  28. package/dist/module/enterprise/controller/enterprise.controller.d.ts +12 -0
  29. package/dist/module/enterprise/controller/enterprise.controller.js +57 -0
  30. package/dist/module/enterprise/controller/enterprise.controller.js.map +1 -0
  31. package/dist/module/enterprise/controller/meta.controller.d.ts +9 -0
  32. package/dist/module/enterprise/controller/meta.controller.js +43 -0
  33. package/dist/module/enterprise/controller/meta.controller.js.map +1 -0
  34. package/dist/module/enterprise/controller/organization.controller.d.ts +12 -4
  35. package/dist/module/enterprise/controller/organization.controller.js +64 -8
  36. package/dist/module/enterprise/controller/organization.controller.js.map +1 -1
  37. package/dist/module/enterprise/enterprise.module.js +10 -15
  38. package/dist/module/enterprise/enterprise.module.js.map +1 -1
  39. package/dist/module/enterprise/entity/enterprise.entity.d.ts +1 -3
  40. package/dist/module/enterprise/entity/enterprise.entity.js +4 -12
  41. package/dist/module/enterprise/entity/enterprise.entity.js.map +1 -1
  42. package/dist/module/enterprise/entity/organization-app-mapping.entity.d.ts +6 -1
  43. package/dist/module/enterprise/entity/organization-app-mapping.entity.js +21 -4
  44. package/dist/module/enterprise/entity/organization-app-mapping.entity.js.map +1 -1
  45. package/dist/module/enterprise/entity/organization.entity.d.ts +3 -18
  46. package/dist/module/enterprise/entity/organization.entity.js +8 -74
  47. package/dist/module/enterprise/entity/organization.entity.js.map +1 -1
  48. package/dist/module/enterprise/repository/enterprise.repository.d.ts +4 -2
  49. package/dist/module/enterprise/repository/enterprise.repository.js +19 -4
  50. package/dist/module/enterprise/repository/enterprise.repository.js.map +1 -1
  51. package/dist/module/enterprise/service/brand-profile.service.d.ts +0 -0
  52. package/dist/module/enterprise/service/brand-profile.service.js +1 -0
  53. package/dist/module/enterprise/service/brand-profile.service.js.map +1 -0
  54. package/dist/module/enterprise/service/brand.service.d.ts +0 -3
  55. package/dist/module/enterprise/service/brand.service.js +0 -17
  56. package/dist/module/enterprise/service/brand.service.js.map +1 -1
  57. package/dist/module/enterprise/service/enterprise.service.d.ts +2 -2
  58. package/dist/module/enterprise/service/enterprise.service.js +4 -4
  59. package/dist/module/enterprise/service/enterprise.service.js.map +1 -1
  60. package/dist/module/enterprise/service/organization.service.d.ts +4 -4
  61. package/dist/module/enterprise/service/organization.service.js +101 -24
  62. package/dist/module/enterprise/service/organization.service.js.map +1 -1
  63. package/dist/module/enterprise/service/populate-meta.service.d.ts +9 -0
  64. package/dist/module/{meta → enterprise}/service/populate-meta.service.js +2 -8
  65. package/dist/module/enterprise/service/populate-meta.service.js.map +1 -0
  66. package/dist/module/enterprise/service/school.service.d.ts +0 -0
  67. package/dist/module/enterprise/service/school.service.js +1 -0
  68. package/dist/module/enterprise/service/school.service.js.map +1 -0
  69. package/dist/module/entity_json/controller/entity_json.controller.d.ts +9 -2
  70. package/dist/module/entity_json/controller/entity_json.controller.js.map +1 -1
  71. package/dist/module/entity_json/entity/entityJson.entity.d.ts +1 -2
  72. package/dist/module/entity_json/entity/entityJson.entity.js +1 -5
  73. package/dist/module/entity_json/entity/entityJson.entity.js.map +1 -1
  74. package/dist/module/entity_json/entity_json.module.js +2 -7
  75. package/dist/module/entity_json/entity_json.module.js.map +1 -1
  76. package/dist/module/entity_json/service/entity_json.service.d.ts +10 -2
  77. package/dist/module/entity_json/service/entity_json.service.js +23 -98
  78. package/dist/module/entity_json/service/entity_json.service.js.map +1 -1
  79. package/dist/module/filter/controller/filter.controller.d.ts +0 -12
  80. package/dist/module/filter/controller/filter.controller.js +1 -1
  81. package/dist/module/filter/controller/filter.controller.js.map +1 -1
  82. package/dist/module/filter/filter.module.js +2 -11
  83. package/dist/module/filter/filter.module.js.map +1 -1
  84. package/dist/module/filter/service/filter.service.d.ts +2 -38
  85. package/dist/module/filter/service/filter.service.js +50 -43
  86. package/dist/module/filter/service/filter.service.js.map +1 -1
  87. package/dist/module/filter/service/saved-filter.service.d.ts +2 -3
  88. package/dist/module/filter/service/saved-filter.service.js +18 -14
  89. package/dist/module/filter/service/saved-filter.service.js.map +1 -1
  90. package/dist/module/integration/service/integration.service.d.ts +0 -1
  91. package/dist/module/integration/service/integration.service.js +1 -2
  92. package/dist/module/integration/service/integration.service.js.map +1 -1
  93. package/dist/module/integration/service/wrapper.service.js +0 -1
  94. package/dist/module/integration/service/wrapper.service.js.map +1 -1
  95. package/dist/module/layout/controller/layout.controller.d.ts +1 -3
  96. package/dist/module/layout/controller/layout.controller.js +3 -7
  97. package/dist/module/layout/controller/layout.controller.js.map +1 -1
  98. package/dist/module/layout/entity/header-section.entity.d.ts +0 -2
  99. package/dist/module/layout/entity/header-section.entity.js +0 -8
  100. package/dist/module/layout/entity/header-section.entity.js.map +1 -1
  101. package/dist/module/layout/layout.module.js +1 -2
  102. package/dist/module/layout/layout.module.js.map +1 -1
  103. package/dist/module/layout/repository/header-section.repository.d.ts +0 -1
  104. package/dist/module/layout/repository/header-section.repository.js +0 -5
  105. package/dist/module/layout/repository/header-section.repository.js.map +1 -1
  106. package/dist/module/layout/service/header-section.service.d.ts +1 -1
  107. package/dist/module/layout/service/header-section.service.js +1 -1
  108. package/dist/module/layout/service/header-section.service.js.map +1 -1
  109. package/dist/module/linked_attributes/controller/linked_attributes.controller.d.ts +0 -41
  110. package/dist/module/linked_attributes/controller/linked_attributes.controller.js +0 -90
  111. package/dist/module/linked_attributes/controller/linked_attributes.controller.js.map +1 -1
  112. package/dist/module/linked_attributes/linked_attributes.module.js +1 -8
  113. package/dist/module/linked_attributes/linked_attributes.module.js.map +1 -1
  114. package/dist/module/linked_attributes/service/linked_attributes.service.d.ts +1 -65
  115. package/dist/module/linked_attributes/service/linked_attributes.service.js +2 -287
  116. package/dist/module/linked_attributes/service/linked_attributes.service.js.map +1 -1
  117. package/dist/module/listmaster/service/list-master.service.js +1 -8
  118. package/dist/module/listmaster/service/list-master.service.js.map +1 -1
  119. package/dist/module/meta/controller/meta.controller.d.ts +1 -6
  120. package/dist/module/meta/controller/meta.controller.js +1 -19
  121. package/dist/module/meta/controller/meta.controller.js.map +1 -1
  122. package/dist/module/meta/entity/app-master.entity.d.ts +8 -4
  123. package/dist/module/meta/entity/app-master.entity.js +30 -12
  124. package/dist/module/meta/entity/app-master.entity.js.map +1 -1
  125. package/dist/module/meta/entity/entity-master.entity.d.ts +0 -1
  126. package/dist/module/meta/entity/entity-master.entity.js +1 -8
  127. package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
  128. package/dist/module/meta/entity.module.js +2 -5
  129. package/dist/module/meta/entity.module.js.map +1 -1
  130. package/dist/module/meta/repository/app-master.repository.js +1 -1
  131. package/dist/module/meta/repository/app-master.repository.js.map +1 -1
  132. package/dist/module/meta/service/attribute-master.service.d.ts +1 -6
  133. package/dist/module/meta/service/attribute-master.service.js +2 -22
  134. package/dist/module/meta/service/attribute-master.service.js.map +1 -1
  135. package/dist/module/meta/service/entity-master.service.js +0 -1
  136. package/dist/module/meta/service/entity-master.service.js.map +1 -1
  137. package/dist/module/meta/service/entity-relation.service.d.ts +3 -4
  138. package/dist/module/meta/service/entity-relation.service.js +4 -10
  139. package/dist/module/meta/service/entity-relation.service.js.map +1 -1
  140. package/dist/module/meta/service/entity-service-impl.service.d.ts +1 -1
  141. package/dist/module/meta/service/entity-service-impl.service.js +10 -14
  142. package/dist/module/meta/service/entity-service-impl.service.js.map +1 -1
  143. package/dist/module/meta/service/entity-table.service.d.ts +4 -5
  144. package/dist/module/meta/service/entity-table.service.js +25 -25
  145. package/dist/module/meta/service/entity-table.service.js.map +1 -1
  146. package/dist/module/meta/service/resolver.service.d.ts +1 -1
  147. package/dist/module/meta/service/resolver.service.js +3 -6
  148. package/dist/module/meta/service/resolver.service.js.map +1 -1
  149. package/dist/module/module/controller/module-access.controller.d.ts +3 -4
  150. package/dist/module/module/controller/module-access.controller.js +13 -8
  151. package/dist/module/module/controller/module-access.controller.js.map +1 -1
  152. package/dist/module/module/entity/menu.entity.d.ts +6 -4
  153. package/dist/module/module/entity/menu.entity.js +16 -12
  154. package/dist/module/module/entity/menu.entity.js.map +1 -1
  155. package/dist/module/module/entity/module-access.entity.d.ts +15 -0
  156. package/dist/module/module/entity/module-access.entity.js +50 -0
  157. package/dist/module/module/entity/module-access.entity.js.map +1 -1
  158. package/dist/module/module/entity/module-action.entity.d.ts +4 -2
  159. package/dist/module/module/entity/module-action.entity.js +11 -6
  160. package/dist/module/module/entity/module-action.entity.js.map +1 -1
  161. package/dist/module/module/entity/module.entity.d.ts +3 -5
  162. package/dist/module/module/entity/module.entity.js +8 -18
  163. package/dist/module/module/entity/module.entity.js.map +1 -1
  164. package/dist/module/module/module.module.d.ts +1 -1
  165. package/dist/module/module/module.module.js +5 -7
  166. package/dist/module/module/module.module.js.map +1 -1
  167. package/dist/module/module/repository/menu.repository.d.ts +3 -3
  168. package/dist/module/module/repository/menu.repository.js +36 -26
  169. package/dist/module/module/repository/menu.repository.js.map +1 -1
  170. package/dist/module/module/repository/module-access.repository.d.ts +6 -6
  171. package/dist/module/module/repository/module-access.repository.js +93 -47
  172. package/dist/module/module/repository/module-access.repository.js.map +1 -1
  173. package/dist/module/module/service/menu.service.d.ts +2 -4
  174. package/dist/module/module/service/menu.service.js +7 -10
  175. package/dist/module/module/service/menu.service.js.map +1 -1
  176. package/dist/module/module/service/module-access.service.d.ts +7 -10
  177. package/dist/module/module/service/module-access.service.js +22 -24
  178. package/dist/module/module/service/module-access.service.js.map +1 -1
  179. package/dist/module/notification/entity/notification.entity.d.ts +17 -2
  180. package/dist/module/notification/entity/notification.entity.js +68 -2
  181. package/dist/module/notification/entity/notification.entity.js.map +1 -1
  182. package/dist/module/notification/notification.module.js +0 -2
  183. package/dist/module/notification/notification.module.js.map +1 -1
  184. package/dist/module/notification/service/notification.service.d.ts +1 -3
  185. package/dist/module/notification/service/notification.service.js +2 -5
  186. package/dist/module/notification/service/notification.service.js.map +1 -1
  187. package/dist/module/notification/service/otp.service.js +0 -1
  188. package/dist/module/notification/service/otp.service.js.map +1 -1
  189. package/dist/module/user/controller/login.controller.d.ts +1 -3
  190. package/dist/module/user/controller/login.controller.js +2 -6
  191. package/dist/module/user/controller/login.controller.js.map +1 -1
  192. package/dist/module/user/controller/user.controller.d.ts +0 -2
  193. package/dist/module/user/controller/user.controller.js +0 -13
  194. package/dist/module/user/controller/user.controller.js.map +1 -1
  195. package/dist/module/user/dto/create-user.dto.d.ts +6 -3
  196. package/dist/module/user/dto/create-user.dto.js +17 -11
  197. package/dist/module/user/dto/create-user.dto.js.map +1 -1
  198. package/dist/module/user/entity/role.entity.d.ts +18 -6
  199. package/dist/module/user/entity/role.entity.js +64 -19
  200. package/dist/module/user/entity/role.entity.js.map +1 -1
  201. package/dist/module/user/entity/user-role-mapping.entity.d.ts +10 -0
  202. package/dist/module/user/entity/user-role-mapping.entity.js +33 -1
  203. package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
  204. package/dist/module/user/entity/user-session.entity.d.ts +0 -2
  205. package/dist/module/user/entity/user-session.entity.js +2 -20
  206. package/dist/module/user/entity/user-session.entity.js.map +1 -1
  207. package/dist/module/user/entity/user.entity.d.ts +17 -5
  208. package/dist/module/user/entity/user.entity.js +61 -15
  209. package/dist/module/user/entity/user.entity.js.map +1 -1
  210. package/dist/module/user/repository/role.repository.d.ts +6 -2
  211. package/dist/module/user/repository/role.repository.js +16 -8
  212. package/dist/module/user/repository/role.repository.js.map +1 -1
  213. package/dist/module/user/repository/user-role-mapping.repository.d.ts +1 -0
  214. package/dist/module/user/repository/user-role-mapping.repository.js +3 -0
  215. package/dist/module/user/repository/user-role-mapping.repository.js.map +1 -1
  216. package/dist/module/user/repository/user.repository.d.ts +4 -2
  217. package/dist/module/user/repository/user.repository.js +19 -7
  218. package/dist/module/user/repository/user.repository.js.map +1 -1
  219. package/dist/module/user/repository/userSession.repository.d.ts +1 -0
  220. package/dist/module/user/repository/userSession.repository.js +3 -0
  221. package/dist/module/user/repository/userSession.repository.js.map +1 -1
  222. package/dist/module/user/service/login.service.d.ts +3 -5
  223. package/dist/module/user/service/login.service.js +43 -42
  224. package/dist/module/user/service/login.service.js.map +1 -1
  225. package/dist/module/user/service/role.service.d.ts +24 -11
  226. package/dist/module/user/service/role.service.js +42 -38
  227. package/dist/module/user/service/role.service.js.map +1 -1
  228. package/dist/module/user/service/user-role-mapping.service.d.ts +2 -0
  229. package/dist/module/user/service/user-role-mapping.service.js +6 -0
  230. package/dist/module/user/service/user-role-mapping.service.js.map +1 -1
  231. package/dist/module/user/service/user-session.service.d.ts +3 -4
  232. package/dist/module/user/service/user-session.service.js +10 -11
  233. package/dist/module/user/service/user-session.service.js.map +1 -1
  234. package/dist/module/user/service/user.service.d.ts +29 -22
  235. package/dist/module/user/service/user.service.js +44 -59
  236. package/dist/module/user/service/user.service.js.map +1 -1
  237. package/dist/module/user/user.module.js +1 -7
  238. package/dist/module/user/user.module.js.map +1 -1
  239. package/dist/module/workflow/repository/action-data.repository.d.ts +1 -1
  240. package/dist/module/workflow/repository/action-data.repository.js +6 -8
  241. package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
  242. package/dist/module/workflow/repository/action.repository.d.ts +1 -1
  243. package/dist/module/workflow/repository/action.repository.js +10 -10
  244. package/dist/module/workflow/repository/action.repository.js.map +1 -1
  245. package/dist/module/workflow/repository/form-master.repository.d.ts +1 -1
  246. package/dist/module/workflow/repository/form-master.repository.js +2 -2
  247. package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
  248. package/dist/module/workflow/service/action-data.service.js +1 -2
  249. package/dist/module/workflow/service/action-data.service.js.map +1 -1
  250. package/dist/module/workflow/service/action.service.js +2 -2
  251. package/dist/module/workflow/service/action.service.js.map +1 -1
  252. package/dist/module/workflow/service/comm-template.service.js +0 -2
  253. package/dist/module/workflow/service/comm-template.service.js.map +1 -1
  254. package/dist/module/workflow/service/entity-modification.service.js +0 -1
  255. package/dist/module/workflow/service/entity-modification.service.js.map +1 -1
  256. package/dist/module/workflow/service/form-master.service.js +2 -2
  257. package/dist/module/workflow/service/form-master.service.js.map +1 -1
  258. package/dist/module/workflow/service/populate-workflow.service.d.ts +1 -1
  259. package/dist/module/workflow/service/populate-workflow.service.js +1 -1
  260. package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
  261. package/dist/module/workflow/service/task.service.js +0 -3
  262. package/dist/module/workflow/service/task.service.js.map +1 -1
  263. package/dist/module/workflow/service/workflow-meta.service.js +2 -7
  264. package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
  265. package/dist/module/workflow/service/workflow.service.js +2 -2
  266. package/dist/module/workflow/service/workflow.service.js.map +1 -1
  267. package/dist/module/workflow/workflow.module.js +2 -0
  268. package/dist/module/workflow/workflow.module.js.map +1 -1
  269. package/dist/module/workflow-automation/service/workflow-automation.service.js +11 -6
  270. package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
  271. package/dist/module/workflow-automation/workflow-automation.module.js +3 -1
  272. package/dist/module/workflow-automation/workflow-automation.module.js.map +1 -1
  273. package/dist/module/workflow-schedule/service/workflow-schedule.service.js +0 -2
  274. package/dist/module/workflow-schedule/service/workflow-schedule.service.js.map +1 -1
  275. package/dist/table.config.d.ts +2 -4
  276. package/dist/table.config.js +0 -2
  277. package/dist/table.config.js.map +1 -1
  278. package/dist/tsconfig.build.tsbuildinfo +1 -1
  279. package/package.json +2 -2
  280. package/server.log +850 -0
  281. package/src/app.module.ts +5 -5
  282. package/src/constant/status.constant.ts +4 -0
  283. package/src/core.module.ts +55 -44
  284. package/src/module/auth/strategies/jwt.strategy.ts +4 -2
  285. package/src/module/dashboard/dashboard.module.ts +3 -3
  286. package/src/module/dashboard/service/dashboard.service.ts +1 -2
  287. package/src/module/enterprise/controller/enterprise.controller.ts +40 -0
  288. package/src/module/enterprise/controller/meta.controller.ts +23 -0
  289. package/src/module/enterprise/controller/organization.controller.ts +60 -4
  290. package/src/module/enterprise/enterprise.module.ts +16 -18
  291. package/src/module/enterprise/entity/enterprise.entity.ts +5 -11
  292. package/src/module/enterprise/entity/organization-app-mapping.entity.ts +18 -4
  293. package/src/module/enterprise/entity/organization.entity.ts +9 -59
  294. package/src/module/enterprise/repository/enterprise.repository.ts +26 -4
  295. package/src/module/enterprise/service/brand-profile.service.ts +10 -0
  296. package/src/module/enterprise/service/brand.service.ts +75 -5
  297. package/src/module/enterprise/service/enterprise.service.ts +10 -4
  298. package/src/module/enterprise/service/organization.service.ts +140 -23
  299. package/src/module/{meta → enterprise}/service/populate-meta.service.ts +2 -5
  300. package/src/module/enterprise/service/school.service.ts +5 -0
  301. package/src/module/entity_json/controller/entity_json.controller.ts +0 -13
  302. package/src/module/entity_json/entity/entityJson.entity.ts +1 -4
  303. package/src/module/entity_json/entity_json.module.ts +5 -9
  304. package/src/module/entity_json/service/entity_json.service.ts +49 -233
  305. package/src/module/filter/controller/filter.controller.ts +3 -1
  306. package/src/module/filter/filter.module.ts +3 -12
  307. package/src/module/filter/service/filter.service.ts +73 -130
  308. package/src/module/filter/service/saved-filter.service.ts +26 -16
  309. package/src/module/integration/service/integration.service.ts +2 -6
  310. package/src/module/integration/service/wrapper.service.ts +0 -1
  311. package/src/module/layout/controller/layout.controller.ts +1 -8
  312. package/src/module/layout/entity/header-section.entity.ts +0 -6
  313. package/src/module/layout/layout.module.ts +1 -1
  314. package/src/module/layout/repository/header-section.repository.ts +0 -6
  315. package/src/module/layout/service/header-section.service.ts +1 -1
  316. package/src/module/linked_attributes/controller/linked_attributes.controller.ts +0 -100
  317. package/src/module/linked_attributes/linked_attributes.module.ts +2 -9
  318. package/src/module/linked_attributes/service/linked_attributes.service.ts +3 -578
  319. package/src/module/listmaster/service/list-master.service.ts +1 -9
  320. package/src/module/meta/controller/meta.controller.ts +3 -25
  321. package/src/module/meta/entity/app-master.entity.ts +22 -9
  322. package/src/module/meta/entity/entity-master.entity.ts +3 -9
  323. package/src/module/meta/entity.module.ts +5 -6
  324. package/src/module/meta/repository/app-master.repository.ts +1 -1
  325. package/src/module/meta/service/attribute-master.service.ts +1 -31
  326. package/src/module/meta/service/entity-master.service.ts +0 -1
  327. package/src/module/meta/service/entity-relation.service.ts +6 -10
  328. package/src/module/meta/service/entity-service-impl.service.ts +19 -14
  329. package/src/module/meta/service/entity-table.service.ts +20 -15
  330. package/src/module/meta/service/entity.service.ts +1 -0
  331. package/src/module/meta/service/resolver.service.ts +0 -4
  332. package/src/module/module/controller/module-access.controller.ts +14 -9
  333. package/src/module/module/entity/menu.entity.ts +14 -10
  334. package/src/module/module/entity/module-access.entity.ts +41 -1
  335. package/src/module/module/entity/module-action.entity.ts +10 -6
  336. package/src/module/module/entity/module.entity.ts +7 -14
  337. package/src/module/module/module.module.ts +2 -3
  338. package/src/module/module/repository/menu.repository.ts +41 -28
  339. package/src/module/module/repository/module-access.repository.ts +108 -62
  340. package/src/module/module/service/menu.service.ts +7 -9
  341. package/src/module/module/service/module-access.service.ts +22 -34
  342. package/src/module/notification/entity/notification.entity.ts +53 -3
  343. package/src/module/notification/notification.module.ts +0 -2
  344. package/src/module/notification/service/notification.service.ts +0 -1
  345. package/src/module/notification/service/otp.service.ts +4 -3
  346. package/src/module/user/controller/login.controller.ts +7 -8
  347. package/src/module/user/controller/user.controller.ts +0 -9
  348. package/src/module/user/dto/create-user.dto.ts +19 -6
  349. package/src/module/user/entity/role.entity.ts +59 -16
  350. package/src/module/user/entity/user-role-mapping.entity.ts +29 -3
  351. package/src/module/user/entity/user-session.entity.ts +3 -19
  352. package/src/module/user/entity/user.entity.ts +48 -13
  353. package/src/module/user/repository/role.repository.ts +24 -12
  354. package/src/module/user/repository/user-role-mapping.repository.ts +5 -1
  355. package/src/module/user/repository/user.repository.ts +28 -8
  356. package/src/module/user/repository/userSession.repository.ts +5 -1
  357. package/src/module/user/service/login.service.ts +47 -51
  358. package/src/module/user/service/role.service.ts +53 -60
  359. package/src/module/user/service/user-role-mapping.service.ts +23 -1
  360. package/src/module/user/service/user-session.service.ts +14 -11
  361. package/src/module/user/service/user.service.ts +63 -95
  362. package/src/module/user/user.module.ts +3 -5
  363. package/src/module/workflow/repository/action-data.repository.ts +6 -8
  364. package/src/module/workflow/repository/action.repository.ts +11 -11
  365. package/src/module/workflow/repository/form-master.repository.ts +2 -2
  366. package/src/module/workflow/service/action-data.service.ts +3 -2
  367. package/src/module/workflow/service/action.service.ts +2 -2
  368. package/src/module/workflow/service/comm-template.service.ts +0 -2
  369. package/src/module/workflow/service/entity-modification.service.ts +0 -1
  370. package/src/module/workflow/service/form-master.service.ts +2 -2
  371. package/src/module/workflow/service/populate-workflow.service.ts +1 -1
  372. package/src/module/workflow/service/task.service.ts +0 -3
  373. package/src/module/workflow/service/workflow-meta.service.ts +2 -7
  374. package/src/module/workflow/service/workflow.service.ts +2 -2
  375. package/src/module/workflow/workflow.module.ts +2 -0
  376. package/src/module/workflow-automation/service/workflow-automation.service.ts +19 -7
  377. package/src/module/workflow-automation/workflow-automation.module.ts +4 -3
  378. package/src/module/workflow-schedule/service/workflow-schedule.service.ts +0 -2
  379. package/src/resources/dev.properties.yaml +2 -2
  380. package/src/table.config.ts +0 -2
  381. package/dist/migrations/1732612800000-AddEntityJsonGinIndex.d.ts +0 -6
  382. package/dist/migrations/1732612800000-AddEntityJsonGinIndex.js +0 -32
  383. package/dist/migrations/1732612800000-AddEntityJsonGinIndex.js.map +0 -1
  384. package/dist/module/filter/service/flatjson-filter.service.d.ts +0 -32
  385. package/dist/module/filter/service/flatjson-filter.service.js +0 -632
  386. package/dist/module/filter/service/flatjson-filter.service.js.map +0 -1
  387. package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.d.ts +0 -13
  388. package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.js +0 -64
  389. package/dist/module/linked_attributes/dto/create-linked-attribute-smart.dto.js.map +0 -1
  390. package/dist/module/meta/service/populate-meta.service.d.ts +0 -13
  391. package/dist/module/meta/service/populate-meta.service.js.map +0 -1
  392. package/src/migrations/1732612800000-AddEntityJsonGinIndex.ts +0 -41
  393. package/src/module/entity_json/docs/FlatJson_Filterin_System.md +0 -2804
  394. package/src/module/filter/service/flatjson-filter.service.ts +0 -903
  395. package/src/module/filter/test/flatjson-filter.service.spec.ts +0 -415
  396. package/src/module/linked_attributes/dto/create-linked-attribute-smart.dto.ts +0 -54
  397. package/src/module/linked_attributes/test/linked-attributes.service.spec.ts +0 -244
@@ -1,632 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.FlatjsonFilterService = void 0;
16
- const common_1 = require("@nestjs/common");
17
- const typeorm_1 = require("typeorm");
18
- const entity_master_service_1 = require("../../meta/service/entity-master.service");
19
- const attribute_master_service_1 = require("../../meta/service/attribute-master.service");
20
- const resolver_service_1 = require("../../meta/service/resolver.service");
21
- const loggingUtil_service_1 = require("../../../utils/service/loggingUtil.service");
22
- const config_1 = require("@nestjs/config");
23
- const entityJson_entity_1 = require("../../entity_json/entity/entityJson.entity");
24
- const saved_filter_repository_1 = require("../repository/saved-filter.repository");
25
- const entity_json_service_1 = require("../../entity_json/service/entity_json.service");
26
- let FlatjsonFilterService = class FlatjsonFilterService {
27
- constructor(entityManager, entityMasterService, attributeMasterService, resolverService, loggingService, configService, savedFilterRepositoryService, entityJsonService) {
28
- this.entityManager = entityManager;
29
- this.entityMasterService = entityMasterService;
30
- this.attributeMasterService = attributeMasterService;
31
- this.resolverService = resolverService;
32
- this.loggingService = loggingService;
33
- this.configService = configService;
34
- this.savedFilterRepositoryService = savedFilterRepositoryService;
35
- this.entityJsonService = entityJsonService;
36
- }
37
- async applyFlatjsonFilter(dto) {
38
- const { entity_type, quickFilter = [], savedFilterCode, attributeFilter = [], sortby = [], tabs, page = 1, size = 20, loggedInUser, } = dto;
39
- await this.loggingService.log('info', 'FlatjsonFilterService', 'applyFlatjsonFilter', `Filtering entity: ${entity_type}`);
40
- let attributes = await this.entityJsonService.getAttributeForFlatJSON(entity_type, loggedInUser, 'filter_attribute');
41
- if (!attributes?.length) {
42
- attributes =
43
- await this.attributeMasterService.findAttributesByMappedEntityType(entity_type, loggedInUser);
44
- }
45
- attributes = attributes ?? [];
46
- const attributeMetaMap = {};
47
- attributes.forEach((attr) => {
48
- attributeMetaMap[attr.flat_json_key] = attr;
49
- });
50
- await this.loggingService.log('debug', 'FlatjsonFilterService', 'applyFlatjsonFilter', `Loaded ${attributes.length} attributes`);
51
- let allFilters = [...quickFilter, ...attributeFilter];
52
- if (savedFilterCode) {
53
- const savedFilterDetails = await this.savedFilterRepositoryService.getDetailsByCode(savedFilterCode);
54
- allFilters = [...allFilters, ...savedFilterDetails];
55
- }
56
- await this.loggingService.log('debug', 'FlatjsonFilterService', 'applyFlatjsonFilter', `Total filters: ${allFilters.length}`);
57
- const jsonbConditions = this.buildJsonbConditions(allFilters, attributeMetaMap);
58
- const qb = this.entityManager
59
- .getRepository(entityJson_entity_1.EntityJson)
60
- .createQueryBuilder('ej')
61
- .where('ej.entity_type = :entity_type', { entity_type })
62
- .andWhere('ej.organization_id = :orgId', {
63
- orgId: loggedInUser.organization_id,
64
- });
65
- jsonbConditions.forEach((condition, index) => {
66
- qb.andWhere(condition.query, condition.params);
67
- });
68
- if (tabs?.columnName && tabs?.value) {
69
- const tabMeta = attributeMetaMap[tabs.columnName];
70
- if (tabMeta) {
71
- const flatJsonKey = tabMeta.flat_json_key ||
72
- `${entity_type}__${tabs.columnName}`;
73
- qb.andWhere(`json_data->>'${flatJsonKey}' = :tabValue`, {
74
- tabValue: tabs.value,
75
- });
76
- }
77
- }
78
- let tabCounts = [];
79
- if (tabs?.columnName && !tabs?.value) {
80
- const tabMeta = attributeMetaMap[tabs.columnName];
81
- if (tabMeta) {
82
- const flatJsonKey = tabMeta.flat_json_key ||
83
- `${entity_type}__${tabs.columnName}`;
84
- tabCounts = await this.getJsonbTabCounts(entity_type, flatJsonKey, jsonbConditions);
85
- }
86
- }
87
- if (sortby && sortby.length > 0) {
88
- this.applyJsonbSorting(qb, sortby, attributeMetaMap);
89
- }
90
- else {
91
- qb.orderBy('ej.created_at', 'DESC');
92
- }
93
- const totalCount = await qb.getCount();
94
- if (page && size) {
95
- const skip = (page - 1) * size;
96
- qb.skip(skip).take(size);
97
- }
98
- const results = await qb.getMany();
99
- await this.loggingService.log('info', 'FlatjsonFilterService', 'applyFlatjsonFilter', `Found ${totalCount} total, returning ${results.length} records`);
100
- const jsonDataResults = results.map((r) => r.json_data);
101
- return {
102
- data: jsonDataResults,
103
- total: totalCount,
104
- page: page || 1,
105
- size: size || 20,
106
- totalPages: size ? Math.ceil(totalCount / size) : 1,
107
- tabCounts: tabCounts.length > 0 ? tabCounts : undefined,
108
- };
109
- }
110
- buildJsonbConditions(filters, attributeMetaMap) {
111
- const conditions = [];
112
- for (const filter of filters) {
113
- const meta = attributeMetaMap[filter.filter_attribute];
114
- const condition = this.buildJsonbCondition(filter, meta);
115
- if (condition) {
116
- conditions.push(condition);
117
- }
118
- else {
119
- console.warn(`Could not build condition for filter: ${filter.filter_attribute}`);
120
- }
121
- }
122
- return conditions;
123
- }
124
- async resolveEntityData(entityJsonRecords, entity_type, loggedInUser) {
125
- if (entityJsonRecords.length === 0)
126
- return [];
127
- const entityIds = entityJsonRecords.map((ej) => ej.entity_id);
128
- try {
129
- const fullEntities = await this.resolverService.getResolvedData(entity_type, entityIds, loggedInUser);
130
- return entityJsonRecords.map((ej) => {
131
- const fullEntity = fullEntities.find((e) => e.id === ej.entity_id);
132
- return {
133
- ...fullEntity,
134
- _flatjson: ej.json_data,
135
- };
136
- });
137
- }
138
- catch (error) {
139
- console.error('Error resolving entity data:', error);
140
- return entityJsonRecords.map((ej) => ({
141
- id: ej.entity_id,
142
- entity_type: ej.entity_type,
143
- ...ej.json_data,
144
- }));
145
- }
146
- }
147
- buildJsonbCondition(filter, meta) {
148
- if (!meta)
149
- return null;
150
- const flatJsonKey = meta.flat_json_key ||
151
- `${meta.mapped_entity_type}__${filter.filter_attribute}`;
152
- const op = filter.filter_operator;
153
- const val = filter.filter_value;
154
- const key = `param_${filter.filter_attribute}_${Math.random().toString(36).substring(2, 8)}`;
155
- switch (meta.data_type) {
156
- case 'text':
157
- return this.buildTextCondition(flatJsonKey, op, val, key);
158
- case 'number':
159
- return this.buildNumberCondition(flatJsonKey, op, val, key);
160
- case 'date':
161
- return this.buildDateCondition(flatJsonKey, op, val, key);
162
- case 'select':
163
- case 'radio':
164
- return this.buildSelectCondition(flatJsonKey, op, val, key);
165
- case 'multiselect':
166
- case 'checkbox':
167
- return this.buildMultiSelectCondition(flatJsonKey, op, val, key);
168
- case 'year':
169
- return this.buildYearCondition(flatJsonKey, op, val, key);
170
- default:
171
- return null;
172
- }
173
- }
174
- buildTextCondition(flatJsonKey, operator, value, paramKey) {
175
- const lowerValue = value ? String(value).toLowerCase() : '';
176
- switch (operator) {
177
- case 'equal':
178
- return {
179
- query: `json_data->>'${flatJsonKey}' = :${paramKey}`,
180
- params: { [paramKey]: lowerValue },
181
- };
182
- case 'not_equal':
183
- return {
184
- query: `json_data->>'${flatJsonKey}' != :${paramKey}`,
185
- params: { [paramKey]: lowerValue },
186
- };
187
- case 'contains':
188
- return {
189
- query: `json_data->>'${flatJsonKey}' LIKE :${paramKey}`,
190
- params: { [paramKey]: `%${lowerValue}%` },
191
- };
192
- case 'not_contains':
193
- return {
194
- query: `json_data->>'${flatJsonKey}' NOT LIKE :${paramKey}`,
195
- params: { [paramKey]: `%${lowerValue}%` },
196
- };
197
- case 'starts_with':
198
- return {
199
- query: `json_data->>'${flatJsonKey}' LIKE :${paramKey}`,
200
- params: { [paramKey]: `${lowerValue}%` },
201
- };
202
- case 'ends_with':
203
- return {
204
- query: `json_data->>'${flatJsonKey}' LIKE :${paramKey}`,
205
- params: { [paramKey]: `%${lowerValue}` },
206
- };
207
- case 'empty':
208
- return {
209
- query: `(json_data->>'${flatJsonKey}' IS NULL OR json_data->>'${flatJsonKey}' = '')`,
210
- params: {},
211
- };
212
- case 'not_empty':
213
- return {
214
- query: `(json_data->>'${flatJsonKey}' IS NOT NULL AND json_data->>'${flatJsonKey}' != '')`,
215
- params: {},
216
- };
217
- default:
218
- console.warn(`Unsupported text operator: ${operator}`);
219
- return null;
220
- }
221
- }
222
- buildNumberCondition(flatJsonKey, operator, value, paramKey) {
223
- const jsonbField = `(json_data->>'${flatJsonKey}')::numeric`;
224
- switch (operator) {
225
- case 'equal':
226
- return {
227
- query: `${jsonbField} = :${paramKey}`,
228
- params: { [paramKey]: Number(value) },
229
- };
230
- case 'not_equal':
231
- return {
232
- query: `${jsonbField} != :${paramKey}`,
233
- params: { [paramKey]: Number(value) },
234
- };
235
- case 'greater_than':
236
- return {
237
- query: `${jsonbField} > :${paramKey}`,
238
- params: { [paramKey]: Number(value) },
239
- };
240
- case 'less_than':
241
- return {
242
- query: `${jsonbField} < :${paramKey}`,
243
- params: { [paramKey]: Number(value) },
244
- };
245
- case 'greater_than_equal_to':
246
- return {
247
- query: `${jsonbField} >= :${paramKey}`,
248
- params: { [paramKey]: Number(value) },
249
- };
250
- case 'less_than_equal_to':
251
- return {
252
- query: `${jsonbField} <= :${paramKey}`,
253
- params: { [paramKey]: Number(value) },
254
- };
255
- case 'between': {
256
- let range;
257
- if (typeof value === 'string') {
258
- range = value.split(',').map((v) => Number(v.trim()));
259
- }
260
- else if (Array.isArray(value)) {
261
- range = value.map((v) => Number(v));
262
- }
263
- else {
264
- return null;
265
- }
266
- if (range.length !== 2)
267
- return null;
268
- return {
269
- query: `${jsonbField} BETWEEN :${paramKey}_min AND :${paramKey}_max`,
270
- params: {
271
- [`${paramKey}_min`]: range[0],
272
- [`${paramKey}_max`]: range[1],
273
- },
274
- };
275
- }
276
- case 'empty':
277
- return {
278
- query: `json_data->>'${flatJsonKey}' IS NULL`,
279
- params: {},
280
- };
281
- case 'not_empty':
282
- return {
283
- query: `json_data->>'${flatJsonKey}' IS NOT NULL`,
284
- params: {},
285
- };
286
- default:
287
- console.warn(`Unsupported number operator: ${operator}`);
288
- return null;
289
- }
290
- }
291
- buildDateCondition(flatJsonKey, operator, value, paramKey) {
292
- const jsonbField = `(json_data->>'${flatJsonKey}')::bigint`;
293
- const toEpochMs = (dateStr) => {
294
- return new Date(dateStr).getTime();
295
- };
296
- const daysAgo = (days) => {
297
- const d = new Date();
298
- d.setDate(d.getDate() - days);
299
- return d.getTime();
300
- };
301
- const daysFromNow = (days) => {
302
- const d = new Date();
303
- d.setDate(d.getDate() + days);
304
- return d.getTime();
305
- };
306
- const subtractBusinessDays = (days) => {
307
- let d = new Date();
308
- let count = 0;
309
- while (count < days) {
310
- d.setDate(d.getDate() - 1);
311
- const day = d.getDay();
312
- if (day !== 0 && day !== 6) {
313
- count++;
314
- }
315
- }
316
- return d.getTime();
317
- };
318
- const numVal = Number(value);
319
- switch (operator) {
320
- case 'equal':
321
- case 'is':
322
- return {
323
- query: `${jsonbField} = :${paramKey}`,
324
- params: { [paramKey]: toEpochMs(value) },
325
- };
326
- case 'before':
327
- case 'is_before':
328
- return {
329
- query: `${jsonbField} < :${paramKey}`,
330
- params: { [paramKey]: toEpochMs(value) },
331
- };
332
- case 'after':
333
- case 'is_after':
334
- return {
335
- query: `${jsonbField} > :${paramKey}`,
336
- params: { [paramKey]: toEpochMs(value) },
337
- };
338
- case 'is_on_or_before':
339
- return {
340
- query: `${jsonbField} <= :${paramKey}`,
341
- params: { [paramKey]: toEpochMs(value) },
342
- };
343
- case 'is_on_or_after':
344
- return {
345
- query: `${jsonbField} >= :${paramKey}`,
346
- params: { [paramKey]: toEpochMs(value) },
347
- };
348
- case 'is_day_before':
349
- if (isNaN(numVal))
350
- return null;
351
- return {
352
- query: `${jsonbField} <= :${paramKey}`,
353
- params: { [paramKey]: daysAgo(numVal) },
354
- };
355
- case 'is_day_after':
356
- if (isNaN(numVal))
357
- return null;
358
- return {
359
- query: `${jsonbField} >= :${paramKey}`,
360
- params: { [paramKey]: daysFromNow(numVal) },
361
- };
362
- case 'is_before_business_days':
363
- if (isNaN(numVal))
364
- return null;
365
- return {
366
- query: `${jsonbField} <= :${paramKey}`,
367
- params: { [paramKey]: subtractBusinessDays(numVal) },
368
- };
369
- case 'between': {
370
- let range;
371
- if (typeof value === 'string') {
372
- range = value.split(',').map((v) => v.trim());
373
- }
374
- else if (Array.isArray(value)) {
375
- range = value;
376
- }
377
- else {
378
- return null;
379
- }
380
- if (range.length !== 2)
381
- return null;
382
- return {
383
- query: `${jsonbField} BETWEEN :${paramKey}_start AND :${paramKey}_end`,
384
- params: {
385
- [`${paramKey}_start`]: toEpochMs(range[0]),
386
- [`${paramKey}_end`]: toEpochMs(range[1]),
387
- },
388
- };
389
- }
390
- case 'in_last_day':
391
- if (isNaN(numVal))
392
- return null;
393
- return {
394
- query: `${jsonbField} BETWEEN :${paramKey}_start AND :${paramKey}_end`,
395
- params: {
396
- [`${paramKey}_start`]: daysAgo(numVal),
397
- [`${paramKey}_end`]: Date.now(),
398
- },
399
- };
400
- case 'in_next_day':
401
- if (isNaN(numVal))
402
- return null;
403
- return {
404
- query: `${jsonbField} BETWEEN :${paramKey}_start AND :${paramKey}_end`,
405
- params: {
406
- [`${paramKey}_start`]: Date.now(),
407
- [`${paramKey}_end`]: daysFromNow(numVal),
408
- },
409
- };
410
- case 'today': {
411
- const todayStart = new Date().setHours(0, 0, 0, 0);
412
- const todayEnd = new Date().setHours(23, 59, 59, 999);
413
- return {
414
- query: `${jsonbField} BETWEEN :${paramKey}_start AND :${paramKey}_end`,
415
- params: {
416
- [`${paramKey}_start`]: todayStart,
417
- [`${paramKey}_end`]: todayEnd,
418
- },
419
- };
420
- }
421
- case 'empty':
422
- return {
423
- query: `json_data->>'${flatJsonKey}' IS NULL`,
424
- params: {},
425
- };
426
- case 'not_empty':
427
- return {
428
- query: `json_data->>'${flatJsonKey}' IS NOT NULL`,
429
- params: {},
430
- };
431
- default:
432
- console.warn(`Unsupported date operator: ${operator}`);
433
- return null;
434
- }
435
- }
436
- buildSelectCondition(flatJsonKey, operator, value, paramKey) {
437
- switch (operator) {
438
- case 'equal':
439
- if (Array.isArray(value)) {
440
- return {
441
- query: `json_data->>'${flatJsonKey}' = ANY(:${paramKey})`,
442
- params: { [paramKey]: value.map(String) },
443
- };
444
- }
445
- return {
446
- query: `json_data->>'${flatJsonKey}' = :${paramKey}`,
447
- params: { [paramKey]: String(value) },
448
- };
449
- case 'not_equal':
450
- if (Array.isArray(value)) {
451
- return {
452
- query: `json_data->>'${flatJsonKey}' != ALL(:${paramKey})`,
453
- params: { [paramKey]: value.map(String) },
454
- };
455
- }
456
- return {
457
- query: `json_data->>'${flatJsonKey}' != :${paramKey}`,
458
- params: { [paramKey]: String(value) },
459
- };
460
- case 'in': {
461
- const inValues = Array.isArray(value) ? value : [value];
462
- return {
463
- query: `json_data->>'${flatJsonKey}' = ANY(:${paramKey})`,
464
- params: { [paramKey]: inValues.map(String) },
465
- };
466
- }
467
- case 'not_in': {
468
- const notInValues = Array.isArray(value) ? value : [value];
469
- return {
470
- query: `json_data->>'${flatJsonKey}' != ALL(:${paramKey})`,
471
- params: { [paramKey]: notInValues.map(String) },
472
- };
473
- }
474
- case 'empty':
475
- return {
476
- query: `json_data->>'${flatJsonKey}' IS NULL`,
477
- params: {},
478
- };
479
- case 'not_empty':
480
- return {
481
- query: `json_data->>'${flatJsonKey}' IS NOT NULL`,
482
- params: {},
483
- };
484
- default:
485
- console.warn(`Unsupported select operator: ${operator}`);
486
- return null;
487
- }
488
- }
489
- buildMultiSelectCondition(flatJsonKey, operator, value, paramKey) {
490
- let arr;
491
- if (Array.isArray(value)) {
492
- arr = value.map(String);
493
- }
494
- else if (typeof value === 'string') {
495
- arr = value.split(',').map((v) => v.trim());
496
- }
497
- else {
498
- arr = [String(value)];
499
- }
500
- if (arr.length === 0) {
501
- return { query: '1=1', params: {} };
502
- }
503
- switch (operator) {
504
- case 'contains':
505
- case 'has':
506
- if (arr.length === 1) {
507
- return {
508
- query: `json_data->'${flatJsonKey}' ? :${paramKey}`,
509
- params: { [paramKey]: arr[0] },
510
- };
511
- }
512
- return {
513
- query: `json_data->'${flatJsonKey}' ?| ARRAY[:...${paramKey}]::text[]`,
514
- params: { [paramKey]: arr },
515
- };
516
- case 'contains_all':
517
- return {
518
- query: `json_data->'${flatJsonKey}' ?& ARRAY[:...${paramKey}]::text[]`,
519
- params: { [paramKey]: arr },
520
- };
521
- case 'contains_any':
522
- return {
523
- query: `json_data->'${flatJsonKey}' ?| ARRAY[:...${paramKey}]::text[]`,
524
- params: { [paramKey]: arr },
525
- };
526
- case 'not_contains':
527
- if (arr.length === 1) {
528
- return {
529
- query: `NOT (json_data->'${flatJsonKey}' ? :${paramKey})`,
530
- params: { [paramKey]: arr[0] },
531
- };
532
- }
533
- return {
534
- query: `NOT (json_data->'${flatJsonKey}' ?| ARRAY[:...${paramKey}]::text[])`,
535
- params: { [paramKey]: arr },
536
- };
537
- case 'equal':
538
- return {
539
- query: `json_data->'${flatJsonKey}'::jsonb = :${paramKey}::jsonb`,
540
- params: { [paramKey]: JSON.stringify(arr) },
541
- };
542
- case 'empty':
543
- return {
544
- query: `(json_data->>'${flatJsonKey}' IS NULL OR json_data->'${flatJsonKey}' = '[]'::jsonb)`,
545
- params: {},
546
- };
547
- case 'not_empty':
548
- return {
549
- query: `(json_data->>'${flatJsonKey}' IS NOT NULL AND json_data->'${flatJsonKey}' != '[]'::jsonb)`,
550
- params: {},
551
- };
552
- default:
553
- console.warn(`Unsupported multiselect operator: ${operator}`);
554
- return null;
555
- }
556
- }
557
- buildYearCondition(flatJsonKey, operator, value, paramKey) {
558
- return this.buildNumberCondition(flatJsonKey, operator, value, paramKey);
559
- }
560
- async getJsonbTabCounts(entity_type, flatJsonKey, whereClauses) {
561
- const qb = this.entityManager
562
- .getRepository(entityJson_entity_1.EntityJson)
563
- .createQueryBuilder('ej')
564
- .select(`json_data->>'${flatJsonKey}'`, 'tab_value')
565
- .addSelect('COUNT(*)', 'tab_value_count')
566
- .where('ej.entity_type = :entity_type', { entity_type })
567
- .groupBy(`json_data->>'${flatJsonKey}'`);
568
- whereClauses.forEach((condition) => {
569
- qb.andWhere(condition.query, condition.params);
570
- });
571
- const results = await qb.getRawMany();
572
- return results
573
- .filter((r) => r.tab_value != null && r.tab_value !== '')
574
- .map((r) => ({
575
- tab_value: r.tab_value,
576
- tab_value_count: parseInt(r.tab_value_count, 10),
577
- }))
578
- .sort((a, b) => b.tab_value_count - a.tab_value_count);
579
- }
580
- applyJsonbSorting(qb, sortby, attributeMetaMap) {
581
- sortby.forEach((sort, index) => {
582
- const meta = attributeMetaMap[sort.sortColum];
583
- if (!meta) {
584
- console.warn(`No metadata found for sort column: ${sort.sortColum}`);
585
- return;
586
- }
587
- const flatJsonKey = meta.flat_json_key || `${meta.mapped_entity_type}__${sort.sortColum}`;
588
- const direction = sort.sortType === 'ASC' ? 'ASC' : 'DESC';
589
- let sortExpression;
590
- switch (meta.data_type) {
591
- case 'number':
592
- case 'year':
593
- sortExpression = `(json_data->>'${flatJsonKey}')::numeric`;
594
- break;
595
- case 'date':
596
- sortExpression = `(json_data->>'${flatJsonKey}')::bigint`;
597
- break;
598
- case 'text':
599
- case 'select':
600
- case 'radio':
601
- default:
602
- sortExpression = `json_data->>'${flatJsonKey}'`;
603
- break;
604
- }
605
- if (index === 0) {
606
- qb.orderBy(sortExpression, direction);
607
- }
608
- else {
609
- qb.addOrderBy(sortExpression, direction);
610
- }
611
- });
612
- }
613
- };
614
- exports.FlatjsonFilterService = FlatjsonFilterService;
615
- exports.FlatjsonFilterService = FlatjsonFilterService = __decorate([
616
- (0, common_1.Injectable)(),
617
- __param(1, (0, common_1.Inject)((0, common_1.forwardRef)(() => entity_master_service_1.EntityMasterService))),
618
- __param(2, (0, common_1.Inject)((0, common_1.forwardRef)(() => attribute_master_service_1.AttributeMasterService))),
619
- __param(3, (0, common_1.Inject)((0, common_1.forwardRef)(() => resolver_service_1.ResolverService))),
620
- __param(4, (0, common_1.Inject)((0, common_1.forwardRef)(() => loggingUtil_service_1.LoggingService))),
621
- __param(6, (0, common_1.Inject)((0, common_1.forwardRef)(() => saved_filter_repository_1.SavedFilterRepositoryService))),
622
- __param(7, (0, common_1.Inject)((0, common_1.forwardRef)(() => entity_json_service_1.EntityJSONService))),
623
- __metadata("design:paramtypes", [typeorm_1.EntityManager,
624
- entity_master_service_1.EntityMasterService,
625
- attribute_master_service_1.AttributeMasterService,
626
- resolver_service_1.ResolverService,
627
- loggingUtil_service_1.LoggingService,
628
- config_1.ConfigService,
629
- saved_filter_repository_1.SavedFilterRepositoryService,
630
- entity_json_service_1.EntityJSONService])
631
- ], FlatjsonFilterService);
632
- //# sourceMappingURL=flatjson-filter.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"flatjson-filter.service.js","sourceRoot":"","sources":["../../../../src/module/filter/service/flatjson-filter.service.ts"],"names":[],"mappings":"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"}