@autofleet/sadot 1.0.5 → 1.0.7

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 (325) hide show
  1. package/dist/_virtual/_@oxc-project_runtime@0.89.0/helpers/decorate.cjs +1 -0
  2. package/dist/_virtual/_@oxc-project_runtime@0.89.0/helpers/decorate.js +1 -0
  3. package/dist/_virtual/_@oxc-project_runtime@0.89.0/helpers/decorateMetadata.cjs +1 -0
  4. package/dist/_virtual/_@oxc-project_runtime@0.89.0/helpers/decorateMetadata.js +1 -0
  5. package/dist/_virtual/rolldown_runtime.cjs +1 -0
  6. package/dist/api/index.cjs +2 -0
  7. package/dist/api/index.cjs.map +1 -0
  8. package/dist/api/index.js +2 -12
  9. package/dist/api/index.js.map +1 -0
  10. package/dist/api/v1/definition/index.cjs +2 -0
  11. package/dist/api/v1/definition/index.cjs.map +1 -0
  12. package/dist/api/v1/definition/index.js +2 -116
  13. package/dist/api/v1/definition/index.js.map +1 -0
  14. package/dist/api/v1/definition/validations.cjs +2 -0
  15. package/dist/api/v1/definition/validations.cjs.map +1 -0
  16. package/dist/api/v1/definition/validations.js +2 -77
  17. package/dist/api/v1/definition/validations.js.map +1 -0
  18. package/dist/api/v1/errors.cjs +2 -0
  19. package/dist/api/v1/errors.cjs.map +1 -0
  20. package/dist/api/v1/errors.js +2 -12
  21. package/dist/api/v1/errors.js.map +1 -0
  22. package/dist/api/v1/index.cjs +2 -0
  23. package/dist/api/v1/index.cjs.map +1 -0
  24. package/dist/api/v1/index.js +2 -13
  25. package/dist/api/v1/index.js.map +1 -0
  26. package/dist/api/v1/validator/index.cjs +2 -0
  27. package/dist/api/v1/validator/index.cjs.map +1 -0
  28. package/dist/api/v1/validator/index.js +2 -143
  29. package/dist/api/v1/validator/index.js.map +1 -0
  30. package/dist/api/v1/validator/validations.cjs +2 -0
  31. package/dist/api/v1/validator/validations.cjs.map +1 -0
  32. package/dist/api/v1/validator/validations.js +2 -38
  33. package/dist/api/v1/validator/validations.js.map +1 -0
  34. package/dist/errors/index.cjs +3 -0
  35. package/dist/errors/index.cjs.map +1 -0
  36. package/dist/errors/index.js +3 -66
  37. package/dist/errors/index.js.map +1 -0
  38. package/dist/events/index.cjs +2 -0
  39. package/dist/events/index.cjs.map +1 -0
  40. package/dist/events/index.js +2 -54
  41. package/dist/events/index.js.map +1 -0
  42. package/dist/hooks/enrich.cjs +2 -0
  43. package/dist/hooks/enrich.cjs.map +1 -0
  44. package/dist/hooks/enrich.js +2 -198
  45. package/dist/hooks/enrich.js.map +1 -0
  46. package/dist/hooks/find.cjs +2 -0
  47. package/dist/hooks/find.cjs.map +1 -0
  48. package/dist/hooks/find.js +2 -29
  49. package/dist/hooks/find.js.map +1 -0
  50. package/dist/hooks/hooks.cjs +2 -0
  51. package/dist/hooks/hooks.cjs.map +1 -0
  52. package/dist/hooks/hooks.js +2 -388
  53. package/dist/hooks/hooks.js.map +1 -0
  54. package/dist/hooks/index.cjs +1 -0
  55. package/dist/hooks/index.js +1 -17
  56. package/dist/hooks/utils/updateInstanceValues.cjs +2 -0
  57. package/dist/hooks/utils/updateInstanceValues.cjs.map +1 -0
  58. package/dist/hooks/utils/updateInstanceValues.js +2 -50
  59. package/dist/hooks/utils/updateInstanceValues.js.map +1 -0
  60. package/dist/index.cjs +2 -0
  61. package/dist/index.cjs.map +1 -0
  62. package/dist/index.d.cts +19 -0
  63. package/dist/index.d.ts +18 -12
  64. package/dist/index.js +2 -67
  65. package/dist/index.js.map +1 -0
  66. package/dist/models/CustomFieldDefinition.cjs +2 -0
  67. package/dist/models/CustomFieldDefinition.cjs.map +1 -0
  68. package/dist/models/CustomFieldDefinition.js +2 -192
  69. package/dist/models/CustomFieldDefinition.js.map +1 -0
  70. package/dist/models/CustomFieldEntries.cjs +2 -0
  71. package/dist/models/CustomFieldEntries.cjs.map +1 -0
  72. package/dist/models/CustomFieldEntries.js +2 -123
  73. package/dist/models/CustomFieldEntries.js.map +1 -0
  74. package/dist/models/CustomFieldValue.cjs +2 -0
  75. package/dist/models/CustomFieldValue.cjs.map +1 -0
  76. package/dist/models/CustomFieldValue.js +2 -151
  77. package/dist/models/CustomFieldValue.js.map +1 -0
  78. package/dist/models/CustomValidator.cjs +2 -0
  79. package/dist/models/CustomValidator.cjs.map +1 -0
  80. package/dist/models/CustomValidator.js +2 -98
  81. package/dist/models/CustomValidator.js.map +1 -0
  82. package/dist/models/index.cjs +2 -0
  83. package/dist/models/index.cjs.map +1 -0
  84. package/dist/models/index.js +2 -131
  85. package/dist/models/index.js.map +1 -0
  86. package/dist/models/tests/AssociatedTestModel.cjs +2 -0
  87. package/dist/models/tests/AssociatedTestModel.cjs.map +1 -0
  88. package/dist/models/tests/AssociatedTestModel.js +2 -71
  89. package/dist/models/tests/AssociatedTestModel.js.map +1 -0
  90. package/dist/models/tests/TestModel.cjs +2 -0
  91. package/dist/models/tests/TestModel.cjs.map +1 -0
  92. package/dist/models/tests/TestModel.js +2 -69
  93. package/dist/models/tests/TestModel.js.map +1 -0
  94. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.cjs +2 -0
  95. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.cjs.map +1 -0
  96. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.js +2 -53
  97. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.js.map +1 -0
  98. package/dist/models/tests/contextAwareModels/ContextTestModel.cjs +2 -0
  99. package/dist/models/tests/contextAwareModels/ContextTestModel.cjs.map +1 -0
  100. package/dist/models/tests/contextAwareModels/ContextTestModel.js +2 -47
  101. package/dist/models/tests/contextAwareModels/ContextTestModel.js.map +1 -0
  102. package/dist/repository/definition.cjs +2 -0
  103. package/dist/repository/definition.cjs.map +1 -0
  104. package/dist/repository/definition.js +2 -121
  105. package/dist/repository/definition.js.map +1 -0
  106. package/dist/repository/entries.cjs +2 -0
  107. package/dist/repository/entries.cjs.map +1 -0
  108. package/dist/repository/entries.js +2 -92
  109. package/dist/repository/entries.js.map +1 -0
  110. package/dist/repository/utils/formatValues.cjs +2 -0
  111. package/dist/repository/utils/formatValues.cjs.map +1 -0
  112. package/dist/repository/utils/formatValues.js +2 -16
  113. package/dist/repository/utils/formatValues.js.map +1 -0
  114. package/dist/repository/validator.cjs +2 -0
  115. package/dist/repository/validator.cjs.map +1 -0
  116. package/dist/repository/validator.js +2 -69
  117. package/dist/repository/validator.js.map +1 -0
  118. package/dist/repository/value.cjs +2 -0
  119. package/dist/repository/value.cjs.map +1 -0
  120. package/dist/repository/value.js +2 -124
  121. package/dist/repository/value.js.map +1 -0
  122. package/dist/scopes/filter.cjs +2 -0
  123. package/dist/scopes/filter.cjs.map +1 -0
  124. package/dist/scopes/filter.d.cts +23 -0
  125. package/dist/scopes/filter.d.ts +22 -29
  126. package/dist/scopes/filter.js +2 -75
  127. package/dist/scopes/filter.js.map +1 -0
  128. package/dist/scopes/helpers/filter.helpers.cjs +46 -0
  129. package/dist/scopes/helpers/filter.helpers.cjs.map +1 -0
  130. package/dist/scopes/helpers/filter.helpers.d.cts +17 -0
  131. package/dist/scopes/helpers/filter.helpers.d.ts +15 -40
  132. package/dist/scopes/helpers/filter.helpers.js +25 -183
  133. package/dist/scopes/helpers/filter.helpers.js.map +1 -0
  134. package/dist/scopes/index.cjs +1 -0
  135. package/dist/scopes/index.js +1 -6
  136. package/dist/types/index.d.cts +44 -0
  137. package/dist/types/index.d.ts +41 -44
  138. package/dist/utils/constants/index.cjs +2 -0
  139. package/dist/utils/constants/index.cjs.map +1 -0
  140. package/dist/utils/constants/index.d.cts +22 -0
  141. package/dist/utils/constants/index.d.ts +20 -17
  142. package/dist/utils/constants/index.js +2 -22
  143. package/dist/utils/constants/index.js.map +1 -0
  144. package/dist/utils/db/index.cjs +2 -0
  145. package/dist/utils/db/index.cjs.map +1 -0
  146. package/dist/utils/db/index.js +2 -24
  147. package/dist/utils/db/index.js.map +1 -0
  148. package/dist/utils/helpers/index.cjs +2 -0
  149. package/dist/utils/helpers/index.cjs.map +1 -0
  150. package/dist/utils/helpers/index.d.cts +31 -0
  151. package/dist/utils/helpers/index.d.ts +28 -23
  152. package/dist/utils/helpers/index.js +2 -40
  153. package/dist/utils/helpers/index.js.map +1 -0
  154. package/dist/utils/init.cjs +2 -0
  155. package/dist/utils/init.cjs.map +1 -0
  156. package/dist/utils/init.js +2 -112
  157. package/dist/utils/init.js.map +1 -0
  158. package/dist/utils/logger/index.cjs +2 -0
  159. package/dist/utils/logger/index.cjs.map +1 -0
  160. package/dist/utils/logger/index.js +2 -42
  161. package/dist/utils/logger/index.js.map +1 -0
  162. package/dist/utils/scopeAttributes.cjs +2 -0
  163. package/dist/utils/scopeAttributes.cjs.map +1 -0
  164. package/dist/utils/scopeAttributes.js +2 -11
  165. package/dist/utils/scopeAttributes.js.map +1 -0
  166. package/dist/utils/validations/index.cjs +2 -0
  167. package/dist/utils/validations/index.cjs.map +1 -0
  168. package/dist/utils/validations/index.js +2 -41
  169. package/dist/utils/validations/index.js.map +1 -0
  170. package/dist/utils/validations/schema/custom-fields.cjs +2 -0
  171. package/dist/utils/validations/schema/custom-fields.cjs.map +1 -0
  172. package/dist/utils/validations/schema/custom-fields.d.cts +7 -0
  173. package/dist/utils/validations/schema/custom-fields.d.ts +6 -2
  174. package/dist/utils/validations/schema/custom-fields.js +2 -9
  175. package/dist/utils/validations/schema/custom-fields.js.map +1 -0
  176. package/dist/utils/validations/schema/validator-schema.cjs +2 -0
  177. package/dist/utils/validations/schema/validator-schema.cjs.map +1 -0
  178. package/dist/utils/validations/schema/validator-schema.js +2 -95
  179. package/dist/utils/validations/schema/validator-schema.js.map +1 -0
  180. package/dist/utils/validations/validators/index.cjs +2 -0
  181. package/dist/utils/validations/validators/index.cjs.map +1 -0
  182. package/dist/utils/validations/validators/index.js +2 -40
  183. package/dist/utils/validations/validators/index.js.map +1 -0
  184. package/dist/utils/validations/validators/select.validator.cjs +2 -0
  185. package/dist/utils/validations/validators/select.validator.cjs.map +1 -0
  186. package/dist/utils/validations/validators/select.validator.js +2 -12
  187. package/dist/utils/validations/validators/select.validator.js.map +1 -0
  188. package/dist/utils/validations/validators/status.validator.cjs +2 -0
  189. package/dist/utils/validations/validators/status.validator.cjs.map +1 -0
  190. package/dist/utils/validations/validators/status.validator.js +2 -15
  191. package/dist/utils/validations/validators/status.validator.js.map +1 -0
  192. package/package.json +26 -23
  193. package/.nvmrc +0 -1
  194. package/dist/api/index.d.ts +0 -3
  195. package/dist/api/v1/definition/index.d.ts +0 -3
  196. package/dist/api/v1/definition/validations.d.ts +0 -2
  197. package/dist/api/v1/errors.d.ts +0 -4
  198. package/dist/api/v1/index.d.ts +0 -3
  199. package/dist/api/v1/validator/index.d.ts +0 -3
  200. package/dist/api/v1/validator/validations.d.ts +0 -6
  201. package/dist/errors/index.d.ts +0 -24
  202. package/dist/events/index.d.ts +0 -5
  203. package/dist/hooks/create.d.ts +0 -10
  204. package/dist/hooks/create.js +0 -95
  205. package/dist/hooks/enrich.d.ts +0 -25
  206. package/dist/hooks/find.d.ts +0 -1
  207. package/dist/hooks/hooks.d.ts +0 -17
  208. package/dist/hooks/index.d.ts +0 -5
  209. package/dist/hooks/update.d.ts +0 -10
  210. package/dist/hooks/update.js +0 -49
  211. package/dist/hooks/utils/updateInstanceValues.d.ts +0 -15
  212. package/dist/hooks/workaround.d.ts +0 -10
  213. package/dist/hooks/workaround.js +0 -37
  214. package/dist/models/CustomFieldDefinition.d.ts +0 -25
  215. package/dist/models/CustomFieldEntries.d.ts +0 -15
  216. package/dist/models/CustomFieldValue.d.ts +0 -16
  217. package/dist/models/CustomValidator.d.ts +0 -17
  218. package/dist/models/index.d.ts +0 -18
  219. package/dist/models/tests/AssociatedTestModel.d.ts +0 -12
  220. package/dist/models/tests/TestModel.d.ts +0 -12
  221. package/dist/models/tests/contextAwareModels/ContextAwareTestModel.d.ts +0 -10
  222. package/dist/models/tests/contextAwareModels/ContextTestModel.d.ts +0 -13
  223. package/dist/repository/definition.d.ts +0 -36
  224. package/dist/repository/entries.d.ts +0 -13
  225. package/dist/repository/utils/formatValues.d.ts +0 -3
  226. package/dist/repository/validator.d.ts +0 -28
  227. package/dist/repository/value.d.ts +0 -28
  228. package/dist/scopes/index.d.ts +0 -2
  229. package/dist/tests/api/test-api.d.ts +0 -2
  230. package/dist/tests/api/test-api.js +0 -38
  231. package/dist/tests/functional/searching/index.d.ts +0 -8
  232. package/dist/tests/functional/searching/index.js +0 -44
  233. package/dist/tests/helpers/commonHooks.d.ts +0 -6
  234. package/dist/tests/helpers/commonHooks.js +0 -62
  235. package/dist/tests/helpers/database-config.d.ts +0 -16
  236. package/dist/tests/helpers/database-config.js +0 -17
  237. package/dist/tests/helpers/index.d.ts +0 -7
  238. package/dist/tests/helpers/index.js +0 -33
  239. package/dist/tests/mocks/definition.mock.d.ts +0 -48
  240. package/dist/tests/mocks/definition.mock.js +0 -78
  241. package/dist/tests/mocks/events.mock.d.ts +0 -4
  242. package/dist/tests/mocks/events.mock.js +0 -21
  243. package/dist/tests/mocks/testModel.d.ts +0 -12
  244. package/dist/tests/mocks/testModel.js +0 -35
  245. package/dist/types/definition/index.d.ts +0 -25
  246. package/dist/types/definition/index.js +0 -2
  247. package/dist/types/entries/index.d.ts +0 -25
  248. package/dist/types/entries/index.js +0 -2
  249. package/dist/types/index.js +0 -2
  250. package/dist/types/value/index.d.ts +0 -15
  251. package/dist/types/value/index.js +0 -2
  252. package/dist/utils/db/index.d.ts +0 -4
  253. package/dist/utils/init.d.ts +0 -7
  254. package/dist/utils/logger/index.d.ts +0 -3
  255. package/dist/utils/scopeAttributes.d.ts +0 -2
  256. package/dist/utils/validations/index.d.ts +0 -8
  257. package/dist/utils/validations/schema/validator-schema.d.ts +0 -9
  258. package/dist/utils/validations/type.d.ts +0 -15
  259. package/dist/utils/validations/type.js +0 -2
  260. package/dist/utils/validations/validators/index.d.ts +0 -14
  261. package/dist/utils/validations/validators/select.validator.d.ts +0 -5
  262. package/dist/utils/validations/validators/status.validator.d.ts +0 -12
  263. package/src/api/index.ts +0 -10
  264. package/src/api/v1/definition/index.ts +0 -104
  265. package/src/api/v1/definition/validations.ts +0 -75
  266. package/src/api/v1/errors.ts +0 -13
  267. package/src/api/v1/index.ts +0 -11
  268. package/src/api/v1/validator/index.ts +0 -141
  269. package/src/api/v1/validator/validations.ts +0 -38
  270. package/src/errors/index.ts +0 -70
  271. package/src/events/index.ts +0 -63
  272. package/src/hooks/create.ts +0 -81
  273. package/src/hooks/enrich.ts +0 -255
  274. package/src/hooks/find.ts +0 -27
  275. package/src/hooks/hooks.ts +0 -479
  276. package/src/hooks/index.ts +0 -20
  277. package/src/hooks/update.ts +0 -55
  278. package/src/hooks/utils/updateInstanceValues.ts +0 -63
  279. package/src/hooks/workaround.ts +0 -47
  280. package/src/index.ts +0 -52
  281. package/src/models/CustomFieldDefinition.ts +0 -162
  282. package/src/models/CustomFieldEntries.ts +0 -81
  283. package/src/models/CustomFieldValue.ts +0 -118
  284. package/src/models/CustomValidator.ts +0 -78
  285. package/src/models/index.ts +0 -165
  286. package/src/models/tests/AssociatedTestModel.ts +0 -57
  287. package/src/models/tests/TestModel.ts +0 -54
  288. package/src/models/tests/contextAwareModels/ContextAwareTestModel.ts +0 -43
  289. package/src/models/tests/contextAwareModels/ContextTestModel.ts +0 -38
  290. package/src/repository/definition.ts +0 -175
  291. package/src/repository/entries.ts +0 -88
  292. package/src/repository/utils/formatValues.ts +0 -14
  293. package/src/repository/validator.ts +0 -119
  294. package/src/repository/value.ts +0 -116
  295. package/src/scopes/filter.ts +0 -100
  296. package/src/scopes/helpers/filter.helpers.ts +0 -227
  297. package/src/scopes/index.ts +0 -6
  298. package/src/tests/api/test-api.ts +0 -40
  299. package/src/tests/functional/searching/index.ts +0 -39
  300. package/src/tests/helpers/commonHooks.ts +0 -43
  301. package/src/tests/helpers/database-config.ts +0 -15
  302. package/src/tests/helpers/index.ts +0 -35
  303. package/src/tests/mocks/definition.mock.ts +0 -84
  304. package/src/tests/mocks/events.mock.ts +0 -21
  305. package/src/tests/mocks/testModel.ts +0 -37
  306. package/src/types/definition/index.ts +0 -24
  307. package/src/types/entries/index.ts +0 -27
  308. package/src/types/index.ts +0 -52
  309. package/src/types/value/index.ts +0 -14
  310. package/src/utils/constants/index.ts +0 -25
  311. package/src/utils/db/index.ts +0 -21
  312. package/src/utils/helpers/index.ts +0 -66
  313. package/src/utils/init.ts +0 -122
  314. package/src/utils/logger/index.ts +0 -14
  315. package/src/utils/scopeAttributes.ts +0 -12
  316. package/src/utils/validations/index.ts +0 -46
  317. package/src/utils/validations/schema/README.md +0 -93
  318. package/src/utils/validations/schema/custom-fields.ts +0 -8
  319. package/src/utils/validations/schema/validator-schema.ts +0 -106
  320. package/src/utils/validations/type.ts +0 -20
  321. package/src/utils/validations/validators/index.ts +0 -38
  322. package/src/utils/validations/validators/select.validator.ts +0 -12
  323. package/src/utils/validations/validators/status.validator.ts +0 -22
  324. package/tsconfig.build.json +0 -7
  325. package/tsconfig.json +0 -16
@@ -1,92 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatConditionsForEntries = exports.formatConditionsForValues = exports.getSortCustomFieldsSubQuery = exports.getFilterCustomFieldsSubQuery = exports.CE_TABLE_ALIAS = exports.CV_VALUE_COLUMN = exports.CV_TABLE_ALIAS = exports.CD_NAME_COLUMN = exports.CD_TABLE_ALIAS = exports.OR_DELIMITER = exports.AND_DELIMITER = exports.castIfNeeded = exports.castValueToJsonbNumeric = exports.castValueToJsonbBoolean = exports.castValueToJsonbText = exports.castValueToJsonb = exports.isDate = exports.isBooleanString = exports.isConditionStringArray = exports.SubQueryType = void 0;
4
- var SubQueryType;
5
- (function (SubQueryType) {
6
- SubQueryType["VALUES"] = "values";
7
- SubQueryType["ENTRIES"] = "entries";
8
- })(SubQueryType || (exports.SubQueryType = SubQueryType = {}));
9
- const isConditionStringArray = (input) => Array.isArray(input) && typeof input[0] === 'string';
10
- exports.isConditionStringArray = isConditionStringArray;
11
- const isBooleanString = (input) => ['true', 'false'].includes(input.toString());
12
- exports.isBooleanString = isBooleanString;
13
- const isDate = (input) => input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
14
- exports.isDate = isDate;
15
- const castValueToJsonb = (value, type) => `to_jsonb(${value}::${type})`;
16
- exports.castValueToJsonb = castValueToJsonb;
17
- const castValueToJsonbText = (value) => (0, exports.castValueToJsonb)(value, 'text');
18
- exports.castValueToJsonbText = castValueToJsonbText;
19
- const castValueToJsonbBoolean = (value) => (0, exports.castValueToJsonb)(value, 'boolean');
20
- exports.castValueToJsonbBoolean = castValueToJsonbBoolean;
21
- const castValueToJsonbNumeric = (value) => (0, exports.castValueToJsonb)(value, 'numeric');
22
- exports.castValueToJsonbNumeric = castValueToJsonbNumeric;
23
- const castIfNeeded = (columnName, conditionValue) => {
24
- if ((0, exports.isDate)(conditionValue)) {
25
- return (0, exports.castValueToJsonb)(columnName, 'timestamp');
26
- }
27
- return columnName;
28
- };
29
- exports.castIfNeeded = castIfNeeded;
30
- exports.AND_DELIMITER = ' AND ';
31
- exports.OR_DELIMITER = ' OR ';
32
- exports.CD_TABLE_ALIAS = 'cd';
33
- exports.CD_NAME_COLUMN = `${exports.CD_TABLE_ALIAS}.name`;
34
- exports.CV_TABLE_ALIAS = 'cv';
35
- exports.CV_VALUE_COLUMN = `${exports.CV_TABLE_ALIAS}.value`;
36
- exports.CE_TABLE_ALIAS = 'ce';
37
- const getSingleConditionWithOperator = (value, operator, replacementKey, reverseReplacementsMap) => {
38
- let type = 'text';
39
- if ((0, exports.isDate)(value)) {
40
- type = 'date';
41
- }
42
- else if (!Number.isNaN(Number(value))) {
43
- type = 'numeric';
44
- }
45
- else if ((0, exports.isBooleanString)(value)) {
46
- type = 'boolean';
47
- }
48
- const replacedValue = reverseReplacementsMap.get(value);
49
- return `(jsonb_extract_path_text(${exports.CE_TABLE_ALIAS}.custom_fields, :${replacementKey})::${type}) ${operator} :${replacedValue}`;
50
- };
51
- const getFormattedValue = (value) => {
52
- let formattedValue = value;
53
- if ((0, exports.isBooleanString)(value)) {
54
- formattedValue = value === 'true';
55
- }
56
- else if (!Number.isNaN(Number(value))) {
57
- formattedValue = Number(value);
58
- }
59
- return formattedValue;
60
- };
61
- const getJSONSubQuery = (value, key) => {
62
- const formattedValue = getFormattedValue(value);
63
- const jsonQuery = JSON.stringify({ [key]: formattedValue });
64
- let jsonQueryWithStringBoolean;
65
- if ((0, exports.isBooleanString)(value)) {
66
- jsonQueryWithStringBoolean = `${exports.CE_TABLE_ALIAS}.custom_fields @> '${JSON.stringify({ [key]: value })}'`;
67
- }
68
- return `
1
+ let e=function(e){return e.VALUES=`values`,e.ENTRIES=`entries`,e}({});const t=e=>Array.isArray(e)&&typeof e[0]==`string`,n=e=>[`true`,`false`].includes(e.toString()),r=e=>e instanceof Date||Object.prototype.toString.call(e)===`[object Date]`,i=(e,t)=>`to_jsonb(${e}::${t})`,a=e=>i(e,`text`),o=e=>i(e,`boolean`),s=e=>i(e,`numeric`),c=(e,t)=>r(t)?i(e,`timestamp`):e,l=` AND `,u=` OR `,d=`cv.value`,f=(e,t,i,a)=>{let o=`text`;r(e)?o=`date`:Number.isNaN(Number(e))?n(e)&&(o=`boolean`):o=`numeric`;let s=a.get(e);return`(jsonb_extract_path_text(ce.custom_fields, :${i})::${o}) ${t} :${s}`},p=e=>{let t=e;return n(e)?t=e===`true`:Number.isNaN(Number(e))||(t=Number(e)),t},m=(e,t)=>{let r=p(e),i=JSON.stringify({[t]:r}),a;return n(e)&&(a=`ce.custom_fields @> '${JSON.stringify({[t]:e})}'`),`
69
2
  (
70
- ${jsonQueryWithStringBoolean ? `${jsonQueryWithStringBoolean} OR` : ''}
71
- ${exports.CE_TABLE_ALIAS}.custom_fields @> '${jsonQuery}'
3
+ ${a?`${a} OR`:``}
4
+ ce.custom_fields @> '${i}'
72
5
  )
73
- `;
74
- };
75
- const getFilterCustomFieldsSubQuery = (queryType, modelType, conditionsStrings) => {
76
- switch (queryType) {
77
- case SubQueryType.VALUES:
78
- return `
79
- SELECT ${exports.CV_TABLE_ALIAS}.model_id
80
- FROM custom_field_values AS ${exports.CV_TABLE_ALIAS}
81
- INNER JOIN custom_field_definitions AS ${exports.CD_TABLE_ALIAS} ON ${exports.CV_TABLE_ALIAS}.custom_field_definition_id = ${exports.CD_TABLE_ALIAS}.id
82
- ${exports.AND_DELIMITER}${exports.CD_TABLE_ALIAS}.model_type = '${modelType}'
83
- WHERE ${conditionsStrings.join(exports.OR_DELIMITER)}
84
- ${exports.AND_DELIMITER}${exports.CV_TABLE_ALIAS}.deleted_at IS NULL${exports.AND_DELIMITER}${exports.CD_TABLE_ALIAS}.deleted_at IS NULL
85
- GROUP BY ${exports.CV_TABLE_ALIAS}.model_id
86
- HAVING COUNT(DISTINCT ${exports.CV_TABLE_ALIAS}.custom_field_definition_id) = ${conditionsStrings.length}
87
- `.replace(/\n/g, '');
88
- case SubQueryType.ENTRIES:
89
- return `
6
+ `},h=(t,n,r)=>{switch(t){case e.VALUES:return`
7
+ SELECT cv.model_id
8
+ FROM custom_field_values AS cv
9
+ INNER JOIN custom_field_definitions AS cd ON cv.custom_field_definition_id = cd.id
10
+ ${l}cd.model_type = '${n}'
11
+ WHERE ${r.join(u)}
12
+ ${l}cv.deleted_at IS NULL${l}cd.deleted_at IS NULL
13
+ GROUP BY cv.model_id
14
+ HAVING COUNT(DISTINCT cv.custom_field_definition_id) = ${r.length}
15
+ `.replace(/\n/g,``);case e.ENTRIES:return`
90
16
  SELECT ce.model_id
91
17
  FROM custom_field_entries ce
92
18
  JOIN custom_field_definitions cfd
@@ -94,111 +20,27 @@ const getFilterCustomFieldsSubQuery = (queryType, modelType, conditionsStrings)
94
20
  AND ce.entity_id = cfd.entity_id
95
21
  WHERE
96
22
  cfd.deleted_at IS NULL AND
97
- ${conditionsStrings.join(exports.AND_DELIMITER)}
98
- `;
99
- default:
100
- throw new Error('Invalid query type');
101
- }
102
- };
103
- exports.getFilterCustomFieldsSubQuery = getFilterCustomFieldsSubQuery;
104
- const getSortCustomFieldsSubQuery = (queryType, modelType, replacementKey) => {
105
- switch (queryType) {
106
- case SubQueryType.VALUES:
107
- return `(
23
+ ${r.join(l)}
24
+ `;default:throw Error(`Invalid query type`)}},g=(t,n,r)=>{switch(t){case e.VALUES:return`(
108
25
  SELECT value
109
26
  FROM (SELECT cv.model_id, cv.value
110
27
  FROM custom_field_values AS cv INNER JOIN custom_field_definitions AS cd
111
28
  ON cv.custom_field_definition_id = cd.id
112
- ${exports.AND_DELIMITER}cd.model_type = '${modelType}'
113
- WHERE cv.model_id = "${modelType}"."id"
114
- ${exports.AND_DELIMITER}cd.name = :${replacementKey}
29
+ ${l}cd.model_type = '${n}'
30
+ WHERE cv.model_id = "${n}"."id"
31
+ ${l}cd.name = :${r}
115
32
  ) AS CustomFieldAggregation
116
33
  )
117
- `;
118
- case SubQueryType.ENTRIES:
119
- return `(
34
+ `;case e.ENTRIES:return`(
120
35
  SELECT
121
36
  customFields.value
122
37
  FROM
123
- custom_field_entries AS ${exports.CE_TABLE_ALIAS},
38
+ custom_field_entries AS ce,
124
39
  jsonb_each_text(custom_fields) AS customFields
125
40
  WHERE
126
- customFields.key = :${replacementKey}${exports.AND_DELIMITER}
127
- ${exports.CE_TABLE_ALIAS}.model_type = '${modelType}'${exports.AND_DELIMITER}
128
- ${exports.CE_TABLE_ALIAS}.model_id = "${modelType}"."id"
41
+ customFields.key = :${r}${l}
42
+ ce.model_type = '${n}'${l}
43
+ ce.model_id = "${n}"."id"
129
44
  )
130
- `;
131
- default:
132
- throw new Error('Invalid query type');
133
- }
134
- };
135
- exports.getSortCustomFieldsSubQuery = getSortCustomFieldsSubQuery;
136
- const formatConditionsForValues = (key, condition, reverseReplacementsMap) => {
137
- const replacementKey = reverseReplacementsMap.get(key);
138
- if (!replacementKey) {
139
- return false;
140
- }
141
- const columnCondition = `(${exports.CD_NAME_COLUMN} = :${replacementKey})`;
142
- if (Array.isArray(condition)) {
143
- if (condition.length === 0) {
144
- // if empty array, the condition is ignored
145
- return false;
146
- }
147
- if ((0, exports.isConditionStringArray)(condition)) {
148
- const values = condition.flatMap((v) => {
149
- const valRandom = reverseReplacementsMap.get(v);
150
- if ((0, exports.isBooleanString)(v)) {
151
- return [(0, exports.castValueToJsonbText)(`:${valRandom}`), (0, exports.castValueToJsonbBoolean)(`:${valRandom}`)];
152
- }
153
- if (!Number.isNaN(Number(v))) {
154
- return (0, exports.castValueToJsonbNumeric)(`:${valRandom}`);
155
- }
156
- return (0, exports.castValueToJsonbText)(`:${valRandom}`);
157
- }).join(',');
158
- return `(${columnCondition}${exports.AND_DELIMITER}${exports.CV_VALUE_COLUMN} IN (${values}))`;
159
- }
160
- return condition.map((c) => {
161
- const valRep = reverseReplacementsMap.get(c.value);
162
- const valueAsJsonb = (0, exports.castValueToJsonbText)(`:${valRep}`);
163
- return `(${columnCondition}${exports.AND_DELIMITER}${(0, exports.castIfNeeded)(exports.CV_VALUE_COLUMN, c.value)} ${c.operator} ${valueAsJsonb})`;
164
- }).join(exports.AND_DELIMITER);
165
- }
166
- if (typeof condition === 'string' || typeof condition === 'number') {
167
- const conditionRep = reverseReplacementsMap.get(condition);
168
- const valueAsJsonb = !Number.isNaN(Number(condition)) ? (0, exports.castValueToJsonbNumeric)(`:${conditionRep}`) : (0, exports.castValueToJsonbText)(`:${conditionRep}`);
169
- const valueAsJsonbBoolean = (0, exports.isBooleanString)(condition) ? `${exports.OR_DELIMITER}${exports.CV_VALUE_COLUMN} = ${(0, exports.castValueToJsonbBoolean)(`:${conditionRep}`)}` : '';
170
- return `(${columnCondition}${exports.AND_DELIMITER}(${(0, exports.castIfNeeded)(exports.CV_VALUE_COLUMN, condition)} = ${valueAsJsonb}${valueAsJsonbBoolean}))`;
171
- }
172
- if (condition?.operator) {
173
- const valueRep = reverseReplacementsMap.get(condition.value);
174
- const valueAsJsonb = (0, exports.castValueToJsonbText)(`:${valueRep}`);
175
- return `( ${columnCondition}${exports.AND_DELIMITER}${(0, exports.castIfNeeded)(exports.CV_VALUE_COLUMN, condition.value)} ${condition.operator} ${valueAsJsonb})`;
176
- }
177
- return false;
178
- };
179
- exports.formatConditionsForValues = formatConditionsForValues;
180
- const formatConditionsForEntries = (key, condition, reverseReplacementsMap) => {
181
- const replacementKey = reverseReplacementsMap.get(key);
182
- if (!replacementKey) {
183
- return false;
184
- }
185
- if (Array.isArray(condition)) {
186
- if (condition.length === 0) {
187
- // if empty array, the condition is ignored
188
- return false;
189
- }
190
- if ((0, exports.isConditionStringArray)(condition)) {
191
- const values = condition.map((value) => getJSONSubQuery(value, key)).join(`${exports.OR_DELIMITER}\n`);
192
- return `( ${values})`;
193
- }
194
- return condition.map((c) => getSingleConditionWithOperator(c.value, c.operator, replacementKey, reverseReplacementsMap)).join(exports.AND_DELIMITER);
195
- }
196
- if (typeof condition === 'string' || typeof condition === 'number') {
197
- return getJSONSubQuery(condition, key);
198
- }
199
- if (condition?.operator) {
200
- return getSingleConditionWithOperator(condition.value, condition.operator, replacementKey, reverseReplacementsMap);
201
- }
202
- return false;
203
- };
204
- exports.formatConditionsForEntries = formatConditionsForEntries;
45
+ `;default:throw Error(`Invalid query type`)}},_=(e,r,i)=>{let f=i.get(e);if(!f)return!1;let p=`(cd.name = :${f})`;if(Array.isArray(r)){if(r.length===0)return!1;if(t(r)){let e=r.flatMap(e=>{let t=i.get(e);return n(e)?[a(`:${t}`),o(`:${t}`)]:Number.isNaN(Number(e))?a(`:${t}`):s(`:${t}`)}).join(`,`);return`(${p}${l}${d} IN (${e}))`}return r.map(e=>{let t=i.get(e.value),n=a(`:${t}`);return`(${p}${l}${c(d,e.value)} ${e.operator} ${n})`}).join(l)}if(typeof r==`string`||typeof r==`number`){let e=i.get(r),t=Number.isNaN(Number(r))?a(`:${e}`):s(`:${e}`),f=n(r)?`${u}${d} = ${o(`:${e}`)}`:``;return`(${p}${l}(${c(d,r)} = ${t}${f}))`}if(r?.operator){let e=i.get(r.value),t=a(`:${e}`);return`( ${p}${l}${c(d,r.value)} ${r.operator} ${t})`}return!1},v=(e,n,r)=>{let i=r.get(e);return i?Array.isArray(n)?n.length===0?!1:t(n)?`( ${n.map(t=>m(t,e)).join(`${u}\n`)})`:n.map(e=>f(e.value,e.operator,i,r)).join(l):typeof n==`string`||typeof n==`number`?m(n,e):n?.operator?f(n.value,n.operator,i,r):!1:!1};export{e as SubQueryType,v as formatConditionsForEntries,_ as formatConditionsForValues,h as getFilterCustomFieldsSubQuery,g as getSortCustomFieldsSubQuery};
46
+ //# sourceMappingURL=filter.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.helpers.js","names":["CD_NAME_COLUMN: `${typeof CD_TABLE_ALIAS}.name`","CV_VALUE_COLUMN: `${typeof CV_TABLE_ALIAS}.value`","formattedValue: string | number | boolean"],"sources":["../../../src/scopes/helpers/filter.helpers.ts"],"sourcesContent":["import type { WhereOptions } from 'sequelize';\n\n/**\n * Type representing possible condition values.\n * Currently supporting strings and arrays of strings.\n * More types to be added (TBA).\n */\nexport type ConditionWithOperator = {\n operator: string;\n value: string;\n};\nexport type ConditionValue = ConditionWithOperator | ConditionWithOperator[] | string | string[];\n\nexport type CustomFieldSort = {\n field: string;\n direction: 'ASC' | 'DESC';\n}\n\nexport type CustomFieldFilterOptions = {\n where?: WhereOptions;\n replacements?: Record<string, string>;\n}\n\nexport enum SubQueryType {\n VALUES = 'values',\n ENTRIES = 'entries',\n}\n\nexport const isConditionStringArray = (input: any): input is string[] => Array.isArray(input) && typeof input[0] === 'string';\nexport const isBooleanString = (input: string): boolean => ['true', 'false'].includes(input.toString());\nexport const isDate = (input: any): input is Date => input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';\n\nexport const castValueToJsonb = (value: string, type: string) => `to_jsonb(${value}::${type})`;\nexport const castValueToJsonbText = (value: string): string => castValueToJsonb(value, 'text');\nexport const castValueToJsonbBoolean = (value: string): string => castValueToJsonb(value, 'boolean');\nexport const castValueToJsonbNumeric = (value: string): string => castValueToJsonb(value, 'numeric');\nexport const castIfNeeded = (columnName: string, conditionValue: string): string => {\n if (isDate(conditionValue)) {\n return castValueToJsonb(columnName, 'timestamp');\n }\n return columnName;\n};\n\nexport const AND_DELIMITER = ' AND ';\nexport const OR_DELIMITER = ' OR ';\nexport const CD_TABLE_ALIAS = 'cd';\nexport const CD_NAME_COLUMN: `${typeof CD_TABLE_ALIAS}.name` = `${CD_TABLE_ALIAS}.name`;\nexport const CV_TABLE_ALIAS = 'cv';\nexport const CV_VALUE_COLUMN: `${typeof CV_TABLE_ALIAS}.value` = `${CV_TABLE_ALIAS}.value`;\nexport const CE_TABLE_ALIAS = 'ce';\n\nconst getSingleConditionWithOperator = (value: any, operator: string, replacementKey: string, reverseReplacementsMap: Map<string, string>) => {\n let type = 'text';\n if (isDate(value)) {\n type = 'date';\n } else if (!Number.isNaN(Number(value))) {\n type = 'numeric';\n } else if (isBooleanString(value)) {\n type = 'boolean';\n }\n const replacedValue = reverseReplacementsMap.get(value);\n\n return `(jsonb_extract_path_text(${CE_TABLE_ALIAS}.custom_fields, :${replacementKey})::${type}) ${operator} :${replacedValue}`;\n};\n\nconst getFormattedValue = (value: string) => {\n let formattedValue: string | number | boolean = value;\n if (isBooleanString(value)) {\n formattedValue = value === 'true';\n } else if (!Number.isNaN(Number(value))) {\n formattedValue = Number(value);\n }\n\n return formattedValue;\n};\n\nconst getJSONSubQuery = (value: string, key: string) => {\n const formattedValue = getFormattedValue(value);\n const jsonQuery = JSON.stringify({ [key]: formattedValue });\n let jsonQueryWithStringBoolean;\n if (isBooleanString(value)) {\n jsonQueryWithStringBoolean = `${CE_TABLE_ALIAS}.custom_fields @> '${JSON.stringify({ [key]: value })}'`;\n }\n return `\n (\n ${jsonQueryWithStringBoolean ? `${jsonQueryWithStringBoolean} OR` : ''}\n ${CE_TABLE_ALIAS}.custom_fields @> '${jsonQuery}'\n )\n `;\n};\n\nexport const getFilterCustomFieldsSubQuery = (queryType: SubQueryType, modelType: string, conditionsStrings: Array<string | boolean>): string => {\n switch (queryType) {\n case SubQueryType.VALUES:\n return `\n SELECT ${CV_TABLE_ALIAS}.model_id\n FROM custom_field_values AS ${CV_TABLE_ALIAS}\n INNER JOIN custom_field_definitions AS ${CD_TABLE_ALIAS} ON ${CV_TABLE_ALIAS}.custom_field_definition_id = ${CD_TABLE_ALIAS}.id\n ${AND_DELIMITER}${CD_TABLE_ALIAS}.model_type = '${modelType}'\n WHERE ${conditionsStrings.join(OR_DELIMITER)}\n ${AND_DELIMITER}${CV_TABLE_ALIAS}.deleted_at IS NULL${AND_DELIMITER}${CD_TABLE_ALIAS}.deleted_at IS NULL\n GROUP BY ${CV_TABLE_ALIAS}.model_id\n HAVING COUNT(DISTINCT ${CV_TABLE_ALIAS}.custom_field_definition_id) = ${conditionsStrings.length}\n `.replace(/\\n/g, '');\n case SubQueryType.ENTRIES:\n return `\n SELECT ce.model_id\n FROM custom_field_entries ce\n JOIN custom_field_definitions cfd\n ON ce.model_type = cfd.model_type\n AND ce.entity_id = cfd.entity_id\n WHERE\n cfd.deleted_at IS NULL AND\n ${conditionsStrings.join(AND_DELIMITER)}\n `;\n default:\n throw new Error('Invalid query type');\n }\n};\n\nexport const getSortCustomFieldsSubQuery = (queryType: SubQueryType, modelType: string, replacementKey: string): string => {\n switch (queryType) {\n case SubQueryType.VALUES:\n return `(\n SELECT value\n FROM (SELECT cv.model_id, cv.value\n FROM custom_field_values AS cv INNER JOIN custom_field_definitions AS cd\n ON cv.custom_field_definition_id = cd.id\n ${AND_DELIMITER}cd.model_type = '${modelType}'\n WHERE cv.model_id = \"${modelType}\".\"id\"\n ${AND_DELIMITER}cd.name = :${replacementKey}\n ) AS CustomFieldAggregation\n )\n `;\n case SubQueryType.ENTRIES:\n return `(\n SELECT\n customFields.value\n FROM\n custom_field_entries AS ${CE_TABLE_ALIAS},\n jsonb_each_text(custom_fields) AS customFields\n WHERE\n customFields.key = :${replacementKey}${AND_DELIMITER}\n ${CE_TABLE_ALIAS}.model_type = '${modelType}'${AND_DELIMITER}\n ${CE_TABLE_ALIAS}.model_id = \"${modelType}\".\"id\"\n )\n `;\n default:\n throw new Error('Invalid query type');\n }\n};\n\nexport const formatConditionsForValues = (key: string, condition: ConditionValue, reverseReplacementsMap: Map<string, string>): false | string => {\n const replacementKey = reverseReplacementsMap.get(key);\n if (!replacementKey) {\n return false;\n }\n\n const columnCondition = `(${CD_NAME_COLUMN} = :${replacementKey})`;\n if (Array.isArray(condition)) {\n if (condition.length === 0) {\n // if empty array, the condition is ignored\n return false;\n }\n\n if (isConditionStringArray(condition)) {\n const values = condition.flatMap((v) => {\n const valRandom = reverseReplacementsMap.get(v);\n if (isBooleanString(v)) {\n return [castValueToJsonbText(`:${valRandom}`), castValueToJsonbBoolean(`:${valRandom}`)];\n }\n if (!Number.isNaN(Number(v))) {\n return castValueToJsonbNumeric(`:${valRandom}`);\n }\n return castValueToJsonbText(`:${valRandom}`);\n }).join(',');\n return `(${columnCondition}${AND_DELIMITER}${CV_VALUE_COLUMN} IN (${values}))`;\n }\n return condition.map((c) => {\n const valRep = reverseReplacementsMap.get(c.value);\n const valueAsJsonb = castValueToJsonbText(`:${valRep}`);\n\n return `(${columnCondition}${AND_DELIMITER}${castIfNeeded(CV_VALUE_COLUMN, c.value)} ${c.operator} ${valueAsJsonb})`;\n }).join(AND_DELIMITER);\n }\n if (typeof condition === 'string' || typeof condition === 'number') {\n const conditionRep = reverseReplacementsMap.get(condition);\n const valueAsJsonb = !Number.isNaN(Number(condition)) ? castValueToJsonbNumeric(`:${conditionRep}`) : castValueToJsonbText(`:${conditionRep}`);\n const valueAsJsonbBoolean = isBooleanString(condition) ? `${OR_DELIMITER}${CV_VALUE_COLUMN} = ${castValueToJsonbBoolean(`:${conditionRep}`)}` : '';\n return `(${columnCondition}${AND_DELIMITER}(${castIfNeeded(CV_VALUE_COLUMN, condition)} = ${valueAsJsonb}${valueAsJsonbBoolean}))`;\n }\n if (condition?.operator) {\n const valueRep = reverseReplacementsMap.get(condition.value);\n const valueAsJsonb = castValueToJsonbText(`:${valueRep}`);\n return `( ${columnCondition}${AND_DELIMITER}${castIfNeeded(CV_VALUE_COLUMN, condition.value)} ${condition.operator} ${valueAsJsonb})`;\n }\n return false;\n};\n\nexport const formatConditionsForEntries = (key: string, condition: ConditionValue, reverseReplacementsMap: Map<string, string>): false | string => {\n const replacementKey = reverseReplacementsMap.get(key);\n if (!replacementKey) {\n return false;\n }\n\n if (Array.isArray(condition)) {\n if (condition.length === 0) {\n // if empty array, the condition is ignored\n return false;\n }\n\n if (isConditionStringArray(condition)) {\n const values = condition.map((value) => getJSONSubQuery(value, key)).join(`${OR_DELIMITER}\\n`);\n return `( ${values})`;\n }\n return condition.map((c) => getSingleConditionWithOperator(c.value, c.operator, replacementKey, reverseReplacementsMap)).join(AND_DELIMITER);\n }\n\n if (typeof condition === 'string' || typeof condition === 'number') {\n return getJSONSubQuery(condition, key);\n }\n\n if (condition?.operator) {\n return getSingleConditionWithOperator(condition.value, condition.operator, replacementKey, reverseReplacementsMap);\n }\n return false;\n};\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ const e=require(`./filter.cjs`);
@@ -1,6 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.customFieldsFilterScope = void 0;
4
- /* eslint-disable import/prefer-default-export */
5
- const filter_1 = require("./filter");
6
- Object.defineProperty(exports, "customFieldsFilterScope", { enumerable: true, get: function () { return filter_1.customFieldsFilterScope; } });
1
+ import{customFieldsFilterScope as e}from"./filter.js";export{};
@@ -0,0 +1,44 @@
1
+ import { ModelCtor, Sequelize } from "sequelize-typescript";
2
+ import { IncludeOptions } from "sequelize";
3
+ import { getUser } from "@autofleet/zehut";
4
+
5
+ //#region src/types/index.d.ts
6
+ type ModelFetcher = (name: string) => any;
7
+ type ModelOptions = {
8
+ /**
9
+ * Include options for the model
10
+ */
11
+ include?: (entityIds: string | string[]) => IncludeOptions[];
12
+ /**
13
+ * Custom association for the model
14
+ * @param model - The model to associate with
15
+ */
16
+ customAssociation?: (model: ModelCtor) => void;
17
+ /**
18
+ * Whether to use the entity id from the instance per scope attribute
19
+ */
20
+ useEntityIdFromInclude?: boolean;
21
+ /**
22
+ * Which attributes to include in the model
23
+ */
24
+ attributes?: string[];
25
+ };
26
+ type Models = {
27
+ name: string;
28
+ scopeAttributes: any[];
29
+ modelOptions?: ModelOptions;
30
+ creationWebhookHandler?: (instance: any) => any;
31
+ updateWebhookHandler?: (instance: any) => any;
32
+ deletionWebhookHandler?: (instance: any) => any;
33
+ };
34
+ type CustomFieldOptions = {
35
+ models: Models[];
36
+ databaseConfig: any;
37
+ getUser: typeof getUser;
38
+ sequelize?: Sequelize;
39
+ useCustomFieldsEntries?: boolean;
40
+ useValidators?: boolean;
41
+ };
42
+ //#endregion
43
+ export { CustomFieldOptions, ModelFetcher, Models };
44
+ //# sourceMappingURL=index.d.cts.map
@@ -1,47 +1,44 @@
1
- import type { IncludeOptions, Transaction } from 'sequelize';
2
- import type { ModelCtor, Sequelize } from 'sequelize-typescript';
3
- import type { getUser as GetUserType } from '@autofleet/zehut';
4
- import type CustomFieldDefinition from '../models/CustomFieldDefinition';
5
- import type CustomValidator from '../models/CustomValidator';
6
- export type ModelFetcher = (name: string) => any;
7
- export interface TransactionOptions extends Record<string, any> {
8
- transaction?: Transaction & {
9
- definitionCache?: Map<string, CustomFieldDefinition[]>;
10
- validationsCache?: Map<string, CustomValidator[]>;
11
- };
12
- }
13
- export type ModelOptions = {
14
- /**
15
- * Include options for the model
16
- */
17
- include?: (entityIds: string | string[]) => IncludeOptions[];
18
- /**
19
- * Custom association for the model
20
- * @param model - The model to associate with
21
- */
22
- customAssociation?: (model: ModelCtor) => void;
23
- /**
24
- * Whether to use the entity id from the instance per scope attribute
25
- */
26
- useEntityIdFromInclude?: boolean;
27
- /**
28
- * Which attributes to include in the model
29
- */
30
- attributes?: string[];
1
+ import { IncludeOptions } from "sequelize";
2
+ import { ModelCtor, Sequelize } from "sequelize-typescript";
3
+ import { getUser } from "@autofleet/zehut";
4
+
5
+ //#region src/types/index.d.ts
6
+ type ModelFetcher = (name: string) => any;
7
+ type ModelOptions = {
8
+ /**
9
+ * Include options for the model
10
+ */
11
+ include?: (entityIds: string | string[]) => IncludeOptions[];
12
+ /**
13
+ * Custom association for the model
14
+ * @param model - The model to associate with
15
+ */
16
+ customAssociation?: (model: ModelCtor) => void;
17
+ /**
18
+ * Whether to use the entity id from the instance per scope attribute
19
+ */
20
+ useEntityIdFromInclude?: boolean;
21
+ /**
22
+ * Which attributes to include in the model
23
+ */
24
+ attributes?: string[];
31
25
  };
32
- export type Models = {
33
- name: string;
34
- scopeAttributes: any[];
35
- modelOptions?: ModelOptions;
36
- creationWebhookHandler?: (instance: any) => any;
37
- updateWebhookHandler?: (instance: any) => any;
38
- deletionWebhookHandler?: (instance: any) => any;
26
+ type Models = {
27
+ name: string;
28
+ scopeAttributes: any[];
29
+ modelOptions?: ModelOptions;
30
+ creationWebhookHandler?: (instance: any) => any;
31
+ updateWebhookHandler?: (instance: any) => any;
32
+ deletionWebhookHandler?: (instance: any) => any;
39
33
  };
40
- export type CustomFieldOptions = {
41
- models: Models[];
42
- databaseConfig: any;
43
- getUser: typeof GetUserType;
44
- sequelize?: Sequelize;
45
- useCustomFieldsEntries?: boolean;
46
- useValidators?: boolean;
34
+ type CustomFieldOptions = {
35
+ models: Models[];
36
+ databaseConfig: any;
37
+ getUser: typeof getUser;
38
+ sequelize?: Sequelize;
39
+ useCustomFieldsEntries?: boolean;
40
+ useValidators?: boolean;
47
41
  };
42
+ //#endregion
43
+ export { CustomFieldOptions, ModelFetcher, Models };
44
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ const e=require(`../../_virtual/rolldown_runtime.cjs`);let t=require(`@autofleet/common-types`);t=e.__toESM(t);const n=[`businessModelId`,`fleetId`,`demandSourceId`];let r=function(e){return e.NUMBER=`number`,e.BOOLEAN=`boolean`,e.DATE=`date`,e.DATETIME=`datetime`,e.TEXT=`text`,e.IMAGE=`image`,e.SELECT=`select`,e.STATUS=`status`,e.FILE=`file`,e}({});const i=t.customFields.CUSTOM_FIELDS_FILTER_SCOPE;exports.CUSTOM_FIELDS_FILTER_SCOPE=i,exports.CustomFieldDefinitionType=r,exports.supportedEntities=n;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["CUSTOM_FIELDS_FILTER_SCOPE: typeof customFields.CUSTOM_FIELDS_FILTER_SCOPE","customFields"],"sources":["../../../src/utils/constants/index.ts"],"sourcesContent":["import { customFields } from '@autofleet/common-types';\n\nexport const supportedEntities = ['businessModelId', 'fleetId', 'demandSourceId'] as const;\n\n/**\n * Supported custom field types\n */\nexport enum CustomFieldDefinitionType {\n NUMBER = 'number',\n BOOLEAN = 'boolean',\n DATE = 'date',\n DATETIME = 'datetime',\n TEXT = 'text',\n IMAGE = 'image',\n SELECT = 'select',\n STATUS = 'status',\n FILE = 'file',\n}\n\n// eslint-disable-next-line prefer-destructuring\nconst CUSTOM_FIELDS_FILTER_SCOPE: typeof customFields.CUSTOM_FIELDS_FILTER_SCOPE = customFields.CUSTOM_FIELDS_FILTER_SCOPE;\n\nexport {\n /** @deprecated Use the value from `@autofleet/common-types` instead */\n CUSTOM_FIELDS_FILTER_SCOPE,\n};\n"],"mappings":"+GAEA,MAAa,EAAoB,CAAC,kBAAmB,UAAW,iBAAiB,CAKjF,IAAY,EAAA,SAAA,EAAL,OACL,GAAA,OAAA,SACA,EAAA,QAAA,UACA,EAAA,KAAA,OACA,EAAA,SAAA,WACA,EAAA,KAAA,OACA,EAAA,MAAA,QACA,EAAA,OAAA,SACA,EAAA,OAAA,SACA,EAAA,KAAA,cAIF,MAAMA,EAA6EC,EAAAA,aAAa"}
@@ -0,0 +1,22 @@
1
+ import { customFields } from "@autofleet/common-types";
2
+
3
+ //#region src/utils/constants/index.d.ts
4
+ declare const supportedEntities: readonly ["businessModelId", "fleetId", "demandSourceId"];
5
+ /**
6
+ * Supported custom field types
7
+ */
8
+ declare enum CustomFieldDefinitionType {
9
+ NUMBER = "number",
10
+ BOOLEAN = "boolean",
11
+ DATE = "date",
12
+ DATETIME = "datetime",
13
+ TEXT = "text",
14
+ IMAGE = "image",
15
+ SELECT = "select",
16
+ STATUS = "status",
17
+ FILE = "file",
18
+ }
19
+ declare const CUSTOM_FIELDS_FILTER_SCOPE: typeof customFields.CUSTOM_FIELDS_FILTER_SCOPE;
20
+ //#endregion
21
+ export { CUSTOM_FIELDS_FILTER_SCOPE, CustomFieldDefinitionType, supportedEntities };
22
+ //# sourceMappingURL=index.d.cts.map
@@ -1,19 +1,22 @@
1
- declare const CUSTOM_FIELDS_FILTER_SCOPE: "filterByCustomFields";
2
- export declare const supportedEntities: string[];
1
+ import { customFields } from "@autofleet/common-types";
2
+
3
+ //#region src/utils/constants/index.d.ts
4
+ declare const supportedEntities: readonly ["businessModelId", "fleetId", "demandSourceId"];
3
5
  /**
4
- * Supported custom field types
5
- */
6
- export declare enum CustomFieldDefinitionType {
7
- NUMBER = "number",
8
- BOOLEAN = "boolean",
9
- DATE = "date",
10
- DATETIME = "datetime",
11
- TEXT = "text",
12
- IMAGE = "image",
13
- SELECT = "select",
14
- STATUS = "status",
15
- FILE = "file"
6
+ * Supported custom field types
7
+ */
8
+ declare enum CustomFieldDefinitionType {
9
+ NUMBER = "number",
10
+ BOOLEAN = "boolean",
11
+ DATE = "date",
12
+ DATETIME = "datetime",
13
+ TEXT = "text",
14
+ IMAGE = "image",
15
+ SELECT = "select",
16
+ STATUS = "status",
17
+ FILE = "file",
16
18
  }
17
- export {
18
- /** @deprecated Use the value from `@autofleet/common-types` instead */
19
- CUSTOM_FIELDS_FILTER_SCOPE, };
19
+ declare const CUSTOM_FIELDS_FILTER_SCOPE: typeof customFields.CUSTOM_FIELDS_FILTER_SCOPE;
20
+ //#endregion
21
+ export { CUSTOM_FIELDS_FILTER_SCOPE, CustomFieldDefinitionType, supportedEntities };
22
+ //# sourceMappingURL=index.d.ts.map
@@ -1,22 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CUSTOM_FIELDS_FILTER_SCOPE = exports.CustomFieldDefinitionType = exports.supportedEntities = void 0;
4
- const common_types_1 = require("@autofleet/common-types");
5
- const { CUSTOM_FIELDS_FILTER_SCOPE } = common_types_1.customFields;
6
- exports.CUSTOM_FIELDS_FILTER_SCOPE = CUSTOM_FIELDS_FILTER_SCOPE;
7
- exports.supportedEntities = ['businessModelId', 'fleetId', 'demandSourceId'];
8
- /**
9
- * Supported custom field types
10
- */
11
- var CustomFieldDefinitionType;
12
- (function (CustomFieldDefinitionType) {
13
- CustomFieldDefinitionType["NUMBER"] = "number";
14
- CustomFieldDefinitionType["BOOLEAN"] = "boolean";
15
- CustomFieldDefinitionType["DATE"] = "date";
16
- CustomFieldDefinitionType["DATETIME"] = "datetime";
17
- CustomFieldDefinitionType["TEXT"] = "text";
18
- CustomFieldDefinitionType["IMAGE"] = "image";
19
- CustomFieldDefinitionType["SELECT"] = "select";
20
- CustomFieldDefinitionType["STATUS"] = "status";
21
- CustomFieldDefinitionType["FILE"] = "file";
22
- })(CustomFieldDefinitionType || (exports.CustomFieldDefinitionType = CustomFieldDefinitionType = {}));
1
+ import{customFields as e}from"@autofleet/common-types";const t=[`businessModelId`,`fleetId`,`demandSourceId`];let n=function(e){return e.NUMBER=`number`,e.BOOLEAN=`boolean`,e.DATE=`date`,e.DATETIME=`datetime`,e.TEXT=`text`,e.IMAGE=`image`,e.SELECT=`select`,e.STATUS=`status`,e.FILE=`file`,e}({});const r=e.CUSTOM_FIELDS_FILTER_SCOPE;export{r as CUSTOM_FIELDS_FILTER_SCOPE,n as CustomFieldDefinitionType,t as supportedEntities};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["CUSTOM_FIELDS_FILTER_SCOPE: typeof customFields.CUSTOM_FIELDS_FILTER_SCOPE"],"sources":["../../../src/utils/constants/index.ts"],"sourcesContent":["import { customFields } from '@autofleet/common-types';\n\nexport const supportedEntities = ['businessModelId', 'fleetId', 'demandSourceId'] as const;\n\n/**\n * Supported custom field types\n */\nexport enum CustomFieldDefinitionType {\n NUMBER = 'number',\n BOOLEAN = 'boolean',\n DATE = 'date',\n DATETIME = 'datetime',\n TEXT = 'text',\n IMAGE = 'image',\n SELECT = 'select',\n STATUS = 'status',\n FILE = 'file',\n}\n\n// eslint-disable-next-line prefer-destructuring\nconst CUSTOM_FIELDS_FILTER_SCOPE: typeof customFields.CUSTOM_FIELDS_FILTER_SCOPE = customFields.CUSTOM_FIELDS_FILTER_SCOPE;\n\nexport {\n /** @deprecated Use the value from `@autofleet/common-types` instead */\n CUSTOM_FIELDS_FILTER_SCOPE,\n};\n"],"mappings":"uDAEA,MAAa,EAAoB,CAAC,kBAAmB,UAAW,iBAAiB,CAKjF,IAAY,EAAA,SAAA,EAAL,OACL,GAAA,OAAA,SACA,EAAA,QAAA,UACA,EAAA,KAAA,OACA,EAAA,SAAA,WACA,EAAA,KAAA,OACA,EAAA,MAAA,QACA,EAAA,OAAA,SACA,EAAA,OAAA,SACA,EAAA,KAAA,cAIF,MAAMA,EAA6E,EAAa"}
@@ -0,0 +1,2 @@
1
+ const e=require(`../../_virtual/rolldown_runtime.cjs`);let t=require(`sequelize`);t=e.__toESM(t);let n=require(`sequelize-typescript`);n=e.__toESM(n);var r=e=>{let t=process.env.NODE_ENV||`test`,r=e[t],i;return i=r.use_env_variable?new n.Sequelize(process.env[r.use_env_variable],r):new n.Sequelize(r.database,r.username,r.password,r),i};exports.default=r;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["env: string","sequelize: Sequelize","Sequelize","sequelize"],"sources":["../../../src/utils/db/index.ts"],"sourcesContent":["import { Sequelize } from 'sequelize-typescript';\nimport { QueryTypes } from 'sequelize';\n\nexport default (databaseConfig: any): Sequelize => {\n const ENV_DEV = 'test';\n const env: string = process.env.NODE_ENV || ENV_DEV;\n const config = databaseConfig[env];\n let sequelize: Sequelize;\n if (config.use_env_variable) {\n sequelize = new Sequelize(process.env[config.use_env_variable], config);\n } else {\n sequelize = new Sequelize(config.database, config.username, config.password, config);\n }\n return sequelize;\n};\n\nexport const createSequelizeMeta = (sequelize: Sequelize): Promise<{ name: string; }[]> => sequelize.query(`\nCREATE TABLE IF NOT EXISTS \"SequelizeMeta\" (\n name character varying(255) PRIMARY KEY\n);\n`, { type: QueryTypes.SELECT });\n"],"mappings":"sJAGA,IAAA,EAAgB,GAAmC,CAEjD,IAAMA,EAAc,QAAQ,IAAI,UADhB,OAEV,EAAS,EAAe,GAC1BC,EAMJ,MALA,CAGE,EAHE,EAAO,iBACG,IAAIC,EAAAA,UAAU,QAAQ,IAAI,EAAO,kBAAmB,EAAO,CAE3D,IAAIA,EAAAA,UAAU,EAAO,SAAU,EAAO,SAAU,EAAO,SAAU,EAAO,CAE/EC"}
@@ -1,24 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createSequelizeMeta = void 0;
4
- const sequelize_typescript_1 = require("sequelize-typescript");
5
- const sequelize_1 = require("sequelize");
6
- exports.default = (databaseConfig) => {
7
- const ENV_DEV = 'test';
8
- const env = process.env.NODE_ENV || ENV_DEV;
9
- const config = databaseConfig[env];
10
- let sequelize;
11
- if (config.use_env_variable) {
12
- sequelize = new sequelize_typescript_1.Sequelize(process.env[config.use_env_variable], config);
13
- }
14
- else {
15
- sequelize = new sequelize_typescript_1.Sequelize(config.database, config.username, config.password, config);
16
- }
17
- return sequelize;
18
- };
19
- const createSequelizeMeta = (sequelize) => sequelize.query(`
20
- CREATE TABLE IF NOT EXISTS "SequelizeMeta" (
21
- name character varying(255) PRIMARY KEY
22
- );
23
- `, { type: sequelize_1.QueryTypes.SELECT });
24
- exports.createSequelizeMeta = createSequelizeMeta;
1
+ import"sequelize";import{Sequelize as e}from"sequelize-typescript";var t=t=>{let n=process.env.NODE_ENV||`test`,r=t[n],i;return i=r.use_env_variable?new e(process.env[r.use_env_variable],r):new e(r.database,r.username,r.password,r),i};export{t as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["env: string","sequelize: Sequelize"],"sources":["../../../src/utils/db/index.ts"],"sourcesContent":["import { Sequelize } from 'sequelize-typescript';\nimport { QueryTypes } from 'sequelize';\n\nexport default (databaseConfig: any): Sequelize => {\n const ENV_DEV = 'test';\n const env: string = process.env.NODE_ENV || ENV_DEV;\n const config = databaseConfig[env];\n let sequelize: Sequelize;\n if (config.use_env_variable) {\n sequelize = new Sequelize(process.env[config.use_env_variable], config);\n } else {\n sequelize = new Sequelize(config.database, config.username, config.password, config);\n }\n return sequelize;\n};\n\nexport const createSequelizeMeta = (sequelize: Sequelize): Promise<{ name: string; }[]> => sequelize.query(`\nCREATE TABLE IF NOT EXISTS \"SequelizeMeta\" (\n name character varying(255) PRIMARY KEY\n);\n`, { type: QueryTypes.SELECT });\n"],"mappings":"mEAGA,IAAA,EAAgB,GAAmC,CAEjD,IAAMA,EAAc,QAAQ,IAAI,UADhB,OAEV,EAAS,EAAe,GAC1BC,EAMJ,MALA,CAGE,EAHE,EAAO,iBACG,IAAI,EAAU,QAAQ,IAAI,EAAO,kBAAmB,EAAO,CAE3D,IAAI,EAAU,EAAO,SAAU,EAAO,SAAU,EAAO,SAAU,EAAO,CAE/E"}
@@ -0,0 +1,2 @@
1
+ const e=require(`../../_virtual/rolldown_runtime.cjs`),t=require(`../constants/index.cjs`);let n=require(`sequelize`);n=e.__toESM(n);let r=require(`sequelize-typescript`);r=e.__toESM(r);let i=require(`node:crypto`);i=e.__toESM(i);const a=(e=5)=>Array.from({length:e},()=>`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`.charAt((0,i.randomInt)(52))).join(``),o=(e,i,a,o=[t.CustomFieldDefinitionType.DATETIME,t.CustomFieldDefinitionType.DATE])=>{let s=o.map(e=>`'${e}'`).join(`,`),c=`EXISTS ( SELECT 1 FROM "custom_field_values" AS "cv" INNER JOIN custom_field_definitions AS cd ON cd.entity_id = '${a}' AND cv.custom_field_definition_id = cd.id AND cd.model_type = '${i.name}' ${s?`AND cd.field_type NOT IN (${s})`:``} WHERE "cv"."deleted_at" IS NULL AND "cv"."model_id" = "${i.name}"."id" AND CAST("cv"."value" AS TEXT) ILIKE :searchTerm)`;return{where:{[n.Op.or]:[r.Sequelize.where(r.Sequelize.literal(c),!0)]},replacements:{searchTerm:`%${e}%`}}};exports.generateCustomFieldSearchQueryPayload=o,exports.generateRandomString=a;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["CustomFieldDefinitionType","Op","Sequelize"],"sources":["../../../src/utils/helpers/index.ts"],"sourcesContent":["/* eslint-disable import/prefer-default-export */\nimport { type WhereOptions, Op, type BindOrReplacements } from 'sequelize';\nimport { type ModelStatic, Sequelize } from 'sequelize-typescript';\nimport { randomInt } from 'node:crypto';\nimport { CustomFieldDefinitionType } from '../constants';\n\n/**\n * Builds a WHERE clause and replacements for free-text search by custom fields.\n *\n * This function constructs a WHERE clause and replacement bindings that allow searching\n * for a given term within custom fields associated with a specific model type and entity ID.\n * The WHERE clause and replacements are designed to be added to the main query.\n *\n * @param {string} searchTerm - The term to search for within custom fields.\n * @param {ModelStatic} model - The Sequelize model representing the entity type to search for.\n * @param {string} entityId - The entity ID to filter the custom fields by.\n * @param {CustomFieldDefinitionType[]} excludedCustomFieldsTypes - An array of custom field types\n * to exclude from the search\n *\n * @returns {CustomFieldsSearchPayload} - An object containing the WHERE clause and replacements\n * for Sequelize.\n */\n\ninterface CustomFieldsSearchPayload {\n where: WhereOptions;\n replacements: BindOrReplacements;\n}\n\nexport const generateRandomString = (length = 5): string => {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n return Array.from({ length }, () => characters.charAt(randomInt(characters.length))).join('');\n};\n\nexport const generateCustomFieldSearchQueryPayload = (\n searchTerm: string,\n model: ModelStatic,\n entityId: string,\n customFieldsTypesToExclude: CustomFieldDefinitionType[] = [\n CustomFieldDefinitionType.DATETIME,\n CustomFieldDefinitionType.DATE,\n ],\n): CustomFieldsSearchPayload => {\n const excludedTypesString = customFieldsTypesToExclude.map((type) => `'${type}'`).join(',');\n\n const subQuery = 'EXISTS ('\n + ' SELECT 1'\n + ' FROM \"custom_field_values\" AS \"cv\"'\n + ' INNER JOIN custom_field_definitions AS cd '\n + ` ON cd.entity_id = '${entityId}'`\n + ' AND cv.custom_field_definition_id = cd.id'\n + ` AND cd.model_type = '${model.name}'`\n + ` ${excludedTypesString ? `AND cd.field_type NOT IN (${excludedTypesString})` : ''}`\n + ' WHERE'\n + ' \"cv\".\"deleted_at\" IS NULL'\n + ` AND \"cv\".\"model_id\" = \"${model.name}\".\"id\"`\n + ' AND CAST(\"cv\".\"value\" AS TEXT) ILIKE :searchTerm)';\n\n return {\n where: {\n [Op.or]: [\n Sequelize.where(Sequelize.literal(subQuery), true),\n ],\n },\n replacements: { searchTerm: `%${searchTerm}%` },\n };\n};\n"],"mappings":"sOA4BA,MAAa,GAAwB,EAAS,IAErC,MAAM,KAAK,CAAE,SAAQ,KAAQ,uDAAW,QAAA,EAAA,EAAA,WAAiB,GAAkB,CAAC,CAAC,CAAC,KAAK,GAAG,CAGlF,GACX,EACA,EACA,EACA,EAA0D,CACxDA,EAAAA,0BAA0B,SAC1BA,EAAAA,0BAA0B,KAC3B,GAC6B,CAC9B,IAAM,EAAsB,EAA2B,IAAK,GAAS,IAAI,EAAK,GAAG,CAAC,KAAK,IAAI,CAErF,EAAW,sHAIc,EAAS,mEAEP,EAAM,KAAK,IAChC,EAAsB,6BAA6B,EAAoB,GAAK,GAAA,0DAGrD,EAAM,KAAK,0DAG9C,MAAO,CACL,MAAO,EACJC,EAAAA,GAAG,IAAK,CACPC,EAAAA,UAAU,MAAMA,EAAAA,UAAU,QAAQ,EAAS,CAAE,GAAK,CACnD,CACF,CACD,aAAc,CAAE,WAAY,IAAI,EAAW,GAAI,CAChD"}
@@ -0,0 +1,31 @@
1
+ import { CustomFieldDefinitionType } from "../constants/index.cjs";
2
+ import { ModelStatic } from "sequelize-typescript";
3
+ import { BindOrReplacements, WhereOptions } from "sequelize";
4
+
5
+ //#region src/utils/helpers/index.d.ts
6
+
7
+ /**
8
+ * Builds a WHERE clause and replacements for free-text search by custom fields.
9
+ *
10
+ * This function constructs a WHERE clause and replacement bindings that allow searching
11
+ * for a given term within custom fields associated with a specific model type and entity ID.
12
+ * The WHERE clause and replacements are designed to be added to the main query.
13
+ *
14
+ * @param {string} searchTerm - The term to search for within custom fields.
15
+ * @param {ModelStatic} model - The Sequelize model representing the entity type to search for.
16
+ * @param {string} entityId - The entity ID to filter the custom fields by.
17
+ * @param {CustomFieldDefinitionType[]} excludedCustomFieldsTypes - An array of custom field types
18
+ * to exclude from the search
19
+ *
20
+ * @returns {CustomFieldsSearchPayload} - An object containing the WHERE clause and replacements
21
+ * for Sequelize.
22
+ */
23
+ interface CustomFieldsSearchPayload {
24
+ where: WhereOptions;
25
+ replacements: BindOrReplacements;
26
+ }
27
+ declare const generateRandomString: (length?: number) => string;
28
+ declare const generateCustomFieldSearchQueryPayload: (searchTerm: string, model: ModelStatic, entityId: string, customFieldsTypesToExclude?: CustomFieldDefinitionType[]) => CustomFieldsSearchPayload;
29
+ //#endregion
30
+ export { generateCustomFieldSearchQueryPayload, generateRandomString };
31
+ //# sourceMappingURL=index.d.cts.map