prostgles-server 4.2.183 → 4.2.185

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 (432) hide show
  1. package/.github/workflows/main.yml +15 -15
  2. package/.prettierignore +2 -0
  3. package/README.md +1 -1
  4. package/dist/Auth/AuthHandler.d.ts +1 -1
  5. package/dist/Auth/AuthHandler.d.ts.map +1 -1
  6. package/dist/Auth/AuthHandler.js +64 -32
  7. package/dist/Auth/AuthHandler.js.map +1 -1
  8. package/dist/Auth/AuthTypes.d.ts +15 -1
  9. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  10. package/dist/Auth/getSafeReturnURL.d.ts.map +1 -1
  11. package/dist/Auth/getSafeReturnURL.js.map +1 -1
  12. package/dist/Auth/sendEmail.d.ts.map +1 -1
  13. package/dist/Auth/sendEmail.js +6 -6
  14. package/dist/Auth/sendEmail.js.map +1 -1
  15. package/dist/Auth/setAuthProviders.d.ts +1 -1
  16. package/dist/Auth/setAuthProviders.d.ts.map +1 -1
  17. package/dist/Auth/setAuthProviders.js +15 -8
  18. package/dist/Auth/setAuthProviders.js.map +1 -1
  19. package/dist/Auth/setEmailProvider.d.ts.map +1 -1
  20. package/dist/Auth/setEmailProvider.js +23 -4
  21. package/dist/Auth/setEmailProvider.js.map +1 -1
  22. package/dist/Auth/setupAuthRoutes.d.ts.map +1 -1
  23. package/dist/Auth/setupAuthRoutes.js +27 -9
  24. package/dist/Auth/setupAuthRoutes.js.map +1 -1
  25. package/dist/DBEventsManager.d.ts.map +1 -1
  26. package/dist/DBEventsManager.js +24 -19
  27. package/dist/DBEventsManager.js.map +1 -1
  28. package/dist/DBSchemaBuilder.d.ts.map +1 -1
  29. package/dist/DBSchemaBuilder.js +18 -5
  30. package/dist/DBSchemaBuilder.js.map +1 -1
  31. package/dist/DboBuilder/DboBuilder.d.ts.map +1 -1
  32. package/dist/DboBuilder/DboBuilder.js +7 -2
  33. package/dist/DboBuilder/DboBuilder.js.map +1 -1
  34. package/dist/DboBuilder/DboBuilderTypes.d.ts +4 -4
  35. package/dist/DboBuilder/DboBuilderTypes.d.ts.map +1 -1
  36. package/dist/DboBuilder/DboBuilderTypes.js.map +1 -1
  37. package/dist/DboBuilder/QueryBuilder/Functions.d.ts +2 -2
  38. package/dist/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
  39. package/dist/DboBuilder/QueryBuilder/Functions.js +293 -173
  40. package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
  41. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts +2 -2
  42. package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
  43. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +52 -29
  44. package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
  45. package/dist/DboBuilder/QueryBuilder/getJoinQuery.d.ts.map +1 -1
  46. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js +51 -32
  47. package/dist/DboBuilder/QueryBuilder/getJoinQuery.js.map +1 -1
  48. package/dist/DboBuilder/QueryBuilder/getNewQuery.d.ts.map +1 -1
  49. package/dist/DboBuilder/QueryBuilder/getNewQuery.js +48 -25
  50. package/dist/DboBuilder/QueryBuilder/getNewQuery.js.map +1 -1
  51. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts +1 -1
  52. package/dist/DboBuilder/QueryBuilder/getSelectQuery.d.ts.map +1 -1
  53. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js +32 -23
  54. package/dist/DboBuilder/QueryBuilder/getSelectQuery.js.map +1 -1
  55. package/dist/DboBuilder/QueryStreamer.d.ts +2 -2
  56. package/dist/DboBuilder/QueryStreamer.d.ts.map +1 -1
  57. package/dist/DboBuilder/QueryStreamer.js +68 -23
  58. package/dist/DboBuilder/QueryStreamer.js.map +1 -1
  59. package/dist/DboBuilder/TableHandler/DataValidator.d.ts +1 -1
  60. package/dist/DboBuilder/TableHandler/DataValidator.d.ts.map +1 -1
  61. package/dist/DboBuilder/TableHandler/DataValidator.js +79 -43
  62. package/dist/DboBuilder/TableHandler/DataValidator.js.map +1 -1
  63. package/dist/DboBuilder/TableHandler/TableHandler.d.ts.map +1 -1
  64. package/dist/DboBuilder/TableHandler/TableHandler.js +39 -15
  65. package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
  66. package/dist/DboBuilder/TableHandler/delete.d.ts.map +1 -1
  67. package/dist/DboBuilder/TableHandler/delete.js +44 -13
  68. package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
  69. package/dist/DboBuilder/TableHandler/insert.d.ts.map +1 -1
  70. package/dist/DboBuilder/TableHandler/insert.js +81 -22
  71. package/dist/DboBuilder/TableHandler/insert.js.map +1 -1
  72. package/dist/DboBuilder/TableHandler/insertTest.d.ts.map +1 -1
  73. package/dist/DboBuilder/TableHandler/insertTest.js.map +1 -1
  74. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts +1 -1
  75. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.d.ts.map +1 -1
  76. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js +7 -4
  77. package/dist/DboBuilder/TableHandler/onDeleteFromFileTable.js.map +1 -1
  78. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
  79. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +24 -5
  80. package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
  81. package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
  82. package/dist/DboBuilder/TableHandler/update.js +16 -4
  83. package/dist/DboBuilder/TableHandler/update.js.map +1 -1
  84. package/dist/DboBuilder/TableHandler/updateBatch.d.ts.map +1 -1
  85. package/dist/DboBuilder/TableHandler/updateBatch.js +33 -10
  86. package/dist/DboBuilder/TableHandler/updateBatch.js.map +1 -1
  87. package/dist/DboBuilder/TableHandler/updateFile.d.ts.map +1 -1
  88. package/dist/DboBuilder/TableHandler/updateFile.js +24 -6
  89. package/dist/DboBuilder/TableHandler/updateFile.js.map +1 -1
  90. package/dist/DboBuilder/TableHandler/upsert.d.ts.map +1 -1
  91. package/dist/DboBuilder/TableHandler/upsert.js +22 -6
  92. package/dist/DboBuilder/TableHandler/upsert.js.map +1 -1
  93. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +5 -5
  94. package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts.map +1 -1
  95. package/dist/DboBuilder/ViewHandler/ViewHandler.js +64 -36
  96. package/dist/DboBuilder/ViewHandler/ViewHandler.js.map +1 -1
  97. package/dist/DboBuilder/ViewHandler/count.d.ts.map +1 -1
  98. package/dist/DboBuilder/ViewHandler/count.js +21 -7
  99. package/dist/DboBuilder/ViewHandler/count.js.map +1 -1
  100. package/dist/DboBuilder/ViewHandler/find.d.ts.map +1 -1
  101. package/dist/DboBuilder/ViewHandler/find.js +76 -22
  102. package/dist/DboBuilder/ViewHandler/find.js.map +1 -1
  103. package/dist/DboBuilder/ViewHandler/getExistsCondition.d.ts.map +1 -1
  104. package/dist/DboBuilder/ViewHandler/getExistsCondition.js +19 -10
  105. package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
  106. package/dist/DboBuilder/ViewHandler/getExistsFilters.d.ts.map +1 -1
  107. package/dist/DboBuilder/ViewHandler/getExistsFilters.js +12 -5
  108. package/dist/DboBuilder/ViewHandler/getExistsFilters.js.map +1 -1
  109. package/dist/DboBuilder/ViewHandler/getInfo.d.ts.map +1 -1
  110. package/dist/DboBuilder/ViewHandler/getInfo.js +27 -9
  111. package/dist/DboBuilder/ViewHandler/getInfo.js.map +1 -1
  112. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts +2 -2
  113. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.d.ts.map +1 -1
  114. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js +42 -23
  115. package/dist/DboBuilder/ViewHandler/getTableJoinQuery.js.map +1 -1
  116. package/dist/DboBuilder/ViewHandler/parseComplexFilter.d.ts.map +1 -1
  117. package/dist/DboBuilder/ViewHandler/parseComplexFilter.js +22 -9
  118. package/dist/DboBuilder/ViewHandler/parseComplexFilter.js.map +1 -1
  119. package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts +4 -4
  120. package/dist/DboBuilder/ViewHandler/parseFieldFilter.d.ts.map +1 -1
  121. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js +13 -11
  122. package/dist/DboBuilder/ViewHandler/parseFieldFilter.js.map +1 -1
  123. package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts +1 -1
  124. package/dist/DboBuilder/ViewHandler/parseJoinPath.d.ts.map +1 -1
  125. package/dist/DboBuilder/ViewHandler/parseJoinPath.js +44 -29
  126. package/dist/DboBuilder/ViewHandler/parseJoinPath.js.map +1 -1
  127. package/dist/DboBuilder/ViewHandler/prepareSortItems.d.ts.map +1 -1
  128. package/dist/DboBuilder/ViewHandler/prepareSortItems.js +36 -27
  129. package/dist/DboBuilder/ViewHandler/prepareSortItems.js.map +1 -1
  130. package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts.map +1 -1
  131. package/dist/DboBuilder/ViewHandler/prepareWhere.js +16 -12
  132. package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
  133. package/dist/DboBuilder/ViewHandler/size.d.ts.map +1 -1
  134. package/dist/DboBuilder/ViewHandler/size.js +24 -7
  135. package/dist/DboBuilder/ViewHandler/size.js.map +1 -1
  136. package/dist/DboBuilder/ViewHandler/subscribe.d.ts.map +1 -1
  137. package/dist/DboBuilder/ViewHandler/subscribe.js +40 -12
  138. package/dist/DboBuilder/ViewHandler/subscribe.js.map +1 -1
  139. package/dist/DboBuilder/ViewHandler/validateViewRules.d.ts.map +1 -1
  140. package/dist/DboBuilder/ViewHandler/validateViewRules.js +20 -5
  141. package/dist/DboBuilder/ViewHandler/validateViewRules.js.map +1 -1
  142. package/dist/DboBuilder/dboBuilderUtils.d.ts.map +1 -1
  143. package/dist/DboBuilder/dboBuilderUtils.js +18 -7
  144. package/dist/DboBuilder/dboBuilderUtils.js.map +1 -1
  145. package/dist/DboBuilder/getColumns.d.ts.map +1 -1
  146. package/dist/DboBuilder/getColumns.js +22 -7
  147. package/dist/DboBuilder/getColumns.js.map +1 -1
  148. package/dist/DboBuilder/getCondition.d.ts.map +1 -1
  149. package/dist/DboBuilder/getCondition.js +43 -30
  150. package/dist/DboBuilder/getCondition.js.map +1 -1
  151. package/dist/DboBuilder/getSubscribeRelatedTables.d.ts.map +1 -1
  152. package/dist/DboBuilder/getSubscribeRelatedTables.js +38 -27
  153. package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
  154. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.d.ts.map +1 -1
  155. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js +9 -9
  156. package/dist/DboBuilder/getTablesForSchemaPostgresSQL.js.map +1 -1
  157. package/dist/DboBuilder/insertNestedRecords.d.ts +3 -3
  158. package/dist/DboBuilder/insertNestedRecords.d.ts.map +1 -1
  159. package/dist/DboBuilder/insertNestedRecords.js +79 -44
  160. package/dist/DboBuilder/insertNestedRecords.js.map +1 -1
  161. package/dist/DboBuilder/parseUpdateRules.d.ts.map +1 -1
  162. package/dist/DboBuilder/parseUpdateRules.js +38 -14
  163. package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
  164. package/dist/DboBuilder/prepareShortestJoinPaths.d.ts.map +1 -1
  165. package/dist/DboBuilder/prepareShortestJoinPaths.js +56 -31
  166. package/dist/DboBuilder/prepareShortestJoinPaths.js.map +1 -1
  167. package/dist/DboBuilder/runSQL.d.ts.map +1 -1
  168. package/dist/DboBuilder/runSQL.js +41 -21
  169. package/dist/DboBuilder/runSQL.js.map +1 -1
  170. package/dist/DboBuilder/runTransaction.d.ts +1 -1
  171. package/dist/DboBuilder/runTransaction.d.ts.map +1 -1
  172. package/dist/DboBuilder/runTransaction.js +2 -2
  173. package/dist/DboBuilder/runTransaction.js.map +1 -1
  174. package/dist/DboBuilder/sqlErrCodeToMsg.d.ts.map +1 -1
  175. package/dist/DboBuilder/sqlErrCodeToMsg.js +297 -38
  176. package/dist/DboBuilder/sqlErrCodeToMsg.js.map +1 -1
  177. package/dist/DboBuilder/uploadFile.d.ts.map +1 -1
  178. package/dist/DboBuilder/uploadFile.js +33 -9
  179. package/dist/DboBuilder/uploadFile.js.map +1 -1
  180. package/dist/Event_Trigger_Tags.d.ts +1 -1
  181. package/dist/Event_Trigger_Tags.d.ts.map +1 -1
  182. package/dist/Event_Trigger_Tags.js +1 -1
  183. package/dist/Event_Trigger_Tags.js.map +1 -1
  184. package/dist/FileManager/FileManager.d.ts.map +1 -1
  185. package/dist/FileManager/FileManager.js +6 -3
  186. package/dist/FileManager/FileManager.js.map +1 -1
  187. package/dist/FileManager/getValidatedFileType.d.ts.map +1 -1
  188. package/dist/FileManager/getValidatedFileType.js +18 -16
  189. package/dist/FileManager/getValidatedFileType.js.map +1 -1
  190. package/dist/FileManager/initFileManager.d.ts.map +1 -1
  191. package/dist/FileManager/initFileManager.js +7 -1
  192. package/dist/FileManager/initFileManager.js.map +1 -1
  193. package/dist/FileManager/upload.d.ts +1 -1
  194. package/dist/FileManager/upload.d.ts.map +1 -1
  195. package/dist/FileManager/upload.js +3 -3
  196. package/dist/FileManager/upload.js.map +1 -1
  197. package/dist/FileManager/uploadStream.d.ts +1 -1
  198. package/dist/FileManager/uploadStream.d.ts.map +1 -1
  199. package/dist/FileManager/uploadStream.js +6 -7
  200. package/dist/FileManager/uploadStream.js.map +1 -1
  201. package/dist/Filtering.d.ts +3 -3
  202. package/dist/Filtering.d.ts.map +1 -1
  203. package/dist/Filtering.js +70 -37
  204. package/dist/Filtering.js.map +1 -1
  205. package/dist/JSONBValidation/validate_jsonb_schema_sql.d.ts.map +1 -1
  206. package/dist/JSONBValidation/validate_jsonb_schema_sql.js +1 -4
  207. package/dist/JSONBValidation/validate_jsonb_schema_sql.js.map +1 -1
  208. package/dist/JSONBValidation/validation.d.ts.map +1 -1
  209. package/dist/JSONBValidation/validation.js +46 -24
  210. package/dist/JSONBValidation/validation.js.map +1 -1
  211. package/dist/Logging.d.ts +2 -2
  212. package/dist/Logging.d.ts.map +1 -1
  213. package/dist/PostgresNotifListenManager.d.ts.map +1 -1
  214. package/dist/PostgresNotifListenManager.js +20 -22
  215. package/dist/PostgresNotifListenManager.js.map +1 -1
  216. package/dist/Prostgles.d.ts +1 -1
  217. package/dist/Prostgles.d.ts.map +1 -1
  218. package/dist/Prostgles.js +37 -11
  219. package/dist/Prostgles.js.map +1 -1
  220. package/dist/ProstglesTypes.d.ts.map +1 -1
  221. package/dist/ProstglesTypes.js +6 -1
  222. package/dist/ProstglesTypes.js.map +1 -1
  223. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  224. package/dist/PubSubManager/PubSubManager.js +10 -5
  225. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  226. package/dist/PubSubManager/addSub.d.ts.map +1 -1
  227. package/dist/PubSubManager/addSub.js +4 -6
  228. package/dist/PubSubManager/addSub.js.map +1 -1
  229. package/dist/PubSubManager/addSync.d.ts.map +1 -1
  230. package/dist/PubSubManager/addSync.js +10 -6
  231. package/dist/PubSubManager/addSync.js.map +1 -1
  232. package/dist/PubSubManager/getCreatePubSubManagerError.d.ts.map +1 -1
  233. package/dist/PubSubManager/getCreatePubSubManagerError.js +3 -1
  234. package/dist/PubSubManager/getCreatePubSubManagerError.js.map +1 -1
  235. package/dist/PubSubManager/getPubSubManagerInitQuery.d.ts.map +1 -1
  236. package/dist/PubSubManager/getPubSubManagerInitQuery.js +8 -8
  237. package/dist/PubSubManager/getPubSubManagerInitQuery.js.map +1 -1
  238. package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
  239. package/dist/PubSubManager/initPubSubManager.js +7 -9
  240. package/dist/PubSubManager/initPubSubManager.js.map +1 -1
  241. package/dist/PubSubManager/notifListener.d.ts.map +1 -1
  242. package/dist/PubSubManager/notifListener.js +23 -12
  243. package/dist/PubSubManager/notifListener.js.map +1 -1
  244. package/dist/PubSubManager/orphanTriggerCheck.d.ts.map +1 -1
  245. package/dist/PubSubManager/orphanTriggerCheck.js.map +1 -1
  246. package/dist/PubSubManager/pushSubData.d.ts.map +1 -1
  247. package/dist/PubSubManager/pushSubData.js +1 -1
  248. package/dist/PubSubManager/pushSubData.js.map +1 -1
  249. package/dist/PublishParser/PublishParser.d.ts +1 -1
  250. package/dist/PublishParser/PublishParser.d.ts.map +1 -1
  251. package/dist/PublishParser/PublishParser.js +25 -14
  252. package/dist/PublishParser/PublishParser.js.map +1 -1
  253. package/dist/PublishParser/getFileTableRules.d.ts.map +1 -1
  254. package/dist/PublishParser/getFileTableRules.js +23 -16
  255. package/dist/PublishParser/getFileTableRules.js.map +1 -1
  256. package/dist/PublishParser/getSchemaFromPublish.d.ts.map +1 -1
  257. package/dist/PublishParser/getSchemaFromPublish.js +39 -16
  258. package/dist/PublishParser/getSchemaFromPublish.js.map +1 -1
  259. package/dist/PublishParser/getTableRulesWithoutFileTable.d.ts.map +1 -1
  260. package/dist/PublishParser/getTableRulesWithoutFileTable.js +42 -22
  261. package/dist/PublishParser/getTableRulesWithoutFileTable.js.map +1 -1
  262. package/dist/PublishParser/publishTypesAndUtils.d.ts.map +1 -1
  263. package/dist/PublishParser/publishTypesAndUtils.js +5 -1
  264. package/dist/PublishParser/publishTypesAndUtils.js.map +1 -1
  265. package/dist/RestApi.d.ts +1 -1
  266. package/dist/RestApi.d.ts.map +1 -1
  267. package/dist/RestApi.js +1 -1
  268. package/dist/RestApi.js.map +1 -1
  269. package/dist/SchemaWatch/SchemaWatch.d.ts +2 -2
  270. package/dist/SchemaWatch/SchemaWatch.d.ts.map +1 -1
  271. package/dist/SchemaWatch/SchemaWatch.js +11 -9
  272. package/dist/SchemaWatch/SchemaWatch.js.map +1 -1
  273. package/dist/SchemaWatch/getValidatedWatchSchemaType.d.ts.map +1 -1
  274. package/dist/SchemaWatch/getValidatedWatchSchemaType.js +3 -3
  275. package/dist/SchemaWatch/getValidatedWatchSchemaType.js.map +1 -1
  276. package/dist/SchemaWatch/getWatchSchemaTagList.d.ts.map +1 -1
  277. package/dist/SchemaWatch/getWatchSchemaTagList.js +12 -6
  278. package/dist/SchemaWatch/getWatchSchemaTagList.js.map +1 -1
  279. package/dist/SyncReplication.d.ts.map +1 -1
  280. package/dist/SyncReplication.js +84 -42
  281. package/dist/SyncReplication.js.map +1 -1
  282. package/dist/TableConfig/TableConfig.d.ts +5 -5
  283. package/dist/TableConfig/TableConfig.d.ts.map +1 -1
  284. package/dist/TableConfig/TableConfig.js +18 -5
  285. package/dist/TableConfig/TableConfig.js.map +1 -1
  286. package/dist/TableConfig/getColumnDefinitionQuery.d.ts +2 -2
  287. package/dist/TableConfig/getColumnDefinitionQuery.d.ts.map +1 -1
  288. package/dist/TableConfig/getColumnDefinitionQuery.js +20 -9
  289. package/dist/TableConfig/getColumnDefinitionQuery.js.map +1 -1
  290. package/dist/TableConfig/getConstraintDefinitionQueries.d.ts +3 -3
  291. package/dist/TableConfig/getConstraintDefinitionQueries.d.ts.map +1 -1
  292. package/dist/TableConfig/getConstraintDefinitionQueries.js +12 -7
  293. package/dist/TableConfig/getConstraintDefinitionQueries.js.map +1 -1
  294. package/dist/TableConfig/getFutureTableSchema.d.ts +1 -1
  295. package/dist/TableConfig/getFutureTableSchema.d.ts.map +1 -1
  296. package/dist/TableConfig/getFutureTableSchema.js +6 -4
  297. package/dist/TableConfig/getFutureTableSchema.js.map +1 -1
  298. package/dist/TableConfig/getPGIndexes.d.ts.map +1 -1
  299. package/dist/TableConfig/getPGIndexes.js.map +1 -1
  300. package/dist/TableConfig/getTableColumnQueries.d.ts +1 -1
  301. package/dist/TableConfig/getTableColumnQueries.d.ts.map +1 -1
  302. package/dist/TableConfig/getTableColumnQueries.js +38 -19
  303. package/dist/TableConfig/getTableColumnQueries.js.map +1 -1
  304. package/dist/TableConfig/initTableConfig.d.ts.map +1 -1
  305. package/dist/TableConfig/initTableConfig.js +91 -43
  306. package/dist/TableConfig/initTableConfig.js.map +1 -1
  307. package/dist/index.d.ts.map +1 -1
  308. package/dist/index.js.map +1 -1
  309. package/dist/initProstgles.d.ts.map +1 -1
  310. package/dist/initProstgles.js +14 -10
  311. package/dist/initProstgles.js.map +1 -1
  312. package/dist/onSocketConnected.d.ts.map +1 -1
  313. package/dist/onSocketConnected.js +38 -16
  314. package/dist/onSocketConnected.js.map +1 -1
  315. package/dist/runClientRequest.d.ts.map +1 -1
  316. package/dist/runClientRequest.js +33 -14
  317. package/dist/runClientRequest.js.map +1 -1
  318. package/dist/shortestPath.d.ts.map +1 -1
  319. package/dist/shortestPath.js +1 -1
  320. package/dist/shortestPath.js.map +1 -1
  321. package/dist/typeTests/dboTypeCheck.js.map +1 -1
  322. package/examples/full-example-typescript/DBoGenerated.d.ts +112 -54
  323. package/examples/full-example-typescript/DBoGenerated.js +3 -3
  324. package/examples/full-example-typescript/home.html +28 -26
  325. package/examples/full-example-typescript/index.d.ts +1 -1
  326. package/examples/full-example-typescript/index.js +80 -53
  327. package/examples/full-example-vanilla/home.html +151 -125
  328. package/examples/server/javascript/index.js +17 -19
  329. package/lib/Auth/AuthHandler.ts +234 -155
  330. package/lib/Auth/AuthTypes.ts +27 -4
  331. package/lib/Auth/getSafeReturnURL.ts +35 -21
  332. package/lib/Auth/sendEmail.ts +34 -31
  333. package/lib/Auth/setAuthProviders.ts +94 -71
  334. package/lib/Auth/setEmailProvider.ts +45 -27
  335. package/lib/Auth/setupAuthRoutes.ts +164 -100
  336. package/lib/DBEventsManager.ts +87 -65
  337. package/lib/DBSchemaBuilder.ts +62 -28
  338. package/lib/DboBuilder/DboBuilder.ts +45 -21
  339. package/lib/DboBuilder/DboBuilderTypes.ts +99 -95
  340. package/lib/DboBuilder/QueryBuilder/Functions.ts +862 -580
  341. package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +202 -141
  342. package/lib/DboBuilder/QueryBuilder/getJoinQuery.ts +199 -124
  343. package/lib/DboBuilder/QueryBuilder/getNewQuery.ts +209 -148
  344. package/lib/DboBuilder/QueryBuilder/getSelectQuery.ts +101 -75
  345. package/lib/DboBuilder/QueryBuilder/prepareHaving.ts +10 -5
  346. package/lib/DboBuilder/QueryStreamer.ts +207 -100
  347. package/lib/DboBuilder/TableHandler/DataValidator.ts +253 -148
  348. package/lib/DboBuilder/TableHandler/TableHandler.ts +155 -60
  349. package/lib/DboBuilder/TableHandler/delete.ts +82 -29
  350. package/lib/DboBuilder/TableHandler/insert.ts +177 -81
  351. package/lib/DboBuilder/TableHandler/insertTest.ts +13 -7
  352. package/lib/DboBuilder/TableHandler/onDeleteFromFileTable.ts +35 -21
  353. package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +95 -45
  354. package/lib/DboBuilder/TableHandler/update.ts +54 -14
  355. package/lib/DboBuilder/TableHandler/updateBatch.ts +59 -21
  356. package/lib/DboBuilder/TableHandler/updateFile.ts +57 -26
  357. package/lib/DboBuilder/TableHandler/upsert.ts +58 -13
  358. package/lib/DboBuilder/ViewHandler/ViewHandler.ts +264 -121
  359. package/lib/DboBuilder/ViewHandler/count.ts +56 -25
  360. package/lib/DboBuilder/ViewHandler/find.ts +153 -68
  361. package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +59 -32
  362. package/lib/DboBuilder/ViewHandler/getExistsFilters.ts +31 -19
  363. package/lib/DboBuilder/ViewHandler/getInfo.ts +47 -16
  364. package/lib/DboBuilder/ViewHandler/getTableJoinQuery.ts +91 -57
  365. package/lib/DboBuilder/ViewHandler/parseComplexFilter.ts +51 -29
  366. package/lib/DboBuilder/ViewHandler/parseFieldFilter.ts +35 -29
  367. package/lib/DboBuilder/ViewHandler/parseJoinPath.ts +130 -76
  368. package/lib/DboBuilder/ViewHandler/prepareSortItems.ts +140 -92
  369. package/lib/DboBuilder/ViewHandler/prepareWhere.ts +66 -26
  370. package/lib/DboBuilder/ViewHandler/size.ts +56 -22
  371. package/lib/DboBuilder/ViewHandler/subscribe.ts +122 -46
  372. package/lib/DboBuilder/ViewHandler/validateViewRules.ts +39 -14
  373. package/lib/DboBuilder/dboBuilderUtils.ts +41 -18
  374. package/lib/DboBuilder/getColumns.ts +44 -12
  375. package/lib/DboBuilder/getCondition.ts +120 -79
  376. package/lib/DboBuilder/getSubscribeRelatedTables.ts +144 -83
  377. package/lib/DboBuilder/getTablesForSchemaPostgresSQL.ts +61 -44
  378. package/lib/DboBuilder/insertNestedRecords.ts +370 -235
  379. package/lib/DboBuilder/parseUpdateRules.ts +117 -61
  380. package/lib/DboBuilder/prepareShortestJoinPaths.ts +115 -56
  381. package/lib/DboBuilder/runSQL.ts +135 -74
  382. package/lib/DboBuilder/runTransaction.ts +27 -16
  383. package/lib/DboBuilder/sqlErrCodeToMsg.ts +502 -244
  384. package/lib/DboBuilder/uploadFile.ts +67 -31
  385. package/lib/Event_Trigger_Tags.ts +6 -4
  386. package/lib/FileManager/FileManager.ts +53 -21
  387. package/lib/FileManager/getValidatedFileType.ts +79 -35
  388. package/lib/FileManager/initFileManager.ts +21 -9
  389. package/lib/FileManager/upload.ts +21 -19
  390. package/lib/FileManager/uploadStream.ts +33 -34
  391. package/lib/Filtering.ts +249 -197
  392. package/lib/JSONBValidation/validate_jsonb_schema_sql.ts +2 -7
  393. package/lib/JSONBValidation/validation.ts +147 -82
  394. package/lib/Logging.ts +107 -97
  395. package/lib/PostgresNotifListenManager.ts +96 -63
  396. package/lib/Prostgles.ts +106 -35
  397. package/lib/ProstglesTypes.ts +31 -9
  398. package/lib/PubSubManager/PubSubManager.ts +62 -27
  399. package/lib/PubSubManager/addSub.ts +56 -37
  400. package/lib/PubSubManager/addSync.ts +50 -33
  401. package/lib/PubSubManager/getCreatePubSubManagerError.ts +29 -21
  402. package/lib/PubSubManager/getPubSubManagerInitQuery.ts +45 -27
  403. package/lib/PubSubManager/initPubSubManager.ts +27 -18
  404. package/lib/PubSubManager/notifListener.ts +77 -59
  405. package/lib/PubSubManager/orphanTriggerCheck.ts +5 -4
  406. package/lib/PubSubManager/pushSubData.ts +11 -9
  407. package/lib/PublishParser/PublishParser.ts +102 -44
  408. package/lib/PublishParser/getFileTableRules.ts +97 -54
  409. package/lib/PublishParser/getSchemaFromPublish.ts +146 -74
  410. package/lib/PublishParser/getTableRulesWithoutFileTable.ts +101 -51
  411. package/lib/PublishParser/publishTypesAndUtils.ts +74 -23
  412. package/lib/RestApi.ts +10 -2
  413. package/lib/SchemaWatch/SchemaWatch.ts +52 -34
  414. package/lib/SchemaWatch/createSchemaWatchEventTrigger.ts +1 -1
  415. package/lib/SchemaWatch/getValidatedWatchSchemaType.ts +32 -22
  416. package/lib/SchemaWatch/getWatchSchemaTagList.ts +24 -16
  417. package/lib/SyncReplication.ts +376 -190
  418. package/lib/TableConfig/TableConfig.ts +200 -136
  419. package/lib/TableConfig/getColumnDefinitionQuery.ts +65 -44
  420. package/lib/TableConfig/getConstraintDefinitionQueries.ts +41 -25
  421. package/lib/TableConfig/getFutureTableSchema.ts +31 -21
  422. package/lib/TableConfig/getPGIndexes.ts +7 -4
  423. package/lib/TableConfig/getTableColumnQueries.ts +101 -54
  424. package/lib/TableConfig/initTableConfig.ts +192 -101
  425. package/lib/index.ts +6 -5
  426. package/lib/initProstgles.ts +57 -51
  427. package/lib/onSocketConnected.ts +75 -40
  428. package/lib/runClientRequest.ts +148 -79
  429. package/lib/shortestPath.ts +80 -76
  430. package/lib/typeTests/DBoGenerated.d.ts +5 -1
  431. package/lib/typeTests/dboTypeCheck.ts +8 -8
  432. package/package.json +1 -1
@@ -1,6 +1,16 @@
1
- import { AnyObject, FieldFilter, isDefined, UpdateParams } from "prostgles-types";
1
+ import {
2
+ AnyObject,
3
+ FieldFilter,
4
+ isDefined,
5
+ UpdateParams,
6
+ } from "prostgles-types";
2
7
  import { Filter, LocalParams } from "./DboBuilder";
3
- import { TableRule, UpdateRule, ValidateRowBasic, ValidateUpdateRowBasic } from "../PublishParser/PublishParser";
8
+ import {
9
+ TableRule,
10
+ UpdateRule,
11
+ ValidateRowBasic,
12
+ ValidateUpdateRowBasic,
13
+ } from "../PublishParser/PublishParser";
4
14
  import { TableHandler } from "./TableHandler/TableHandler";
5
15
  import { prepareNewData } from "./TableHandler/DataValidator";
6
16
 
@@ -13,7 +23,7 @@ export async function parseUpdateRules(
13
23
  filter: Filter,
14
24
  params?: UpdateParams,
15
25
  tableRules?: TableRule,
16
- localParams?: LocalParams
26
+ localParams?: LocalParams,
17
27
  ): Promise<{
18
28
  fields: string[];
19
29
  validateRow?: ValidateRowBasic;
@@ -39,25 +49,29 @@ export async function parseUpdateRules(
39
49
 
40
50
  if (tableRules) {
41
51
  if (!tableRules.update) throw "update rules missing for " + this.name;
42
- ({ forcedFilter, forcedData, fields, filterFields, validate } = tableRules.update);
52
+ ({ forcedFilter, forcedData, fields, filterFields, validate } =
53
+ tableRules.update);
43
54
 
44
- returningFields = tableRules.update.returningFields ?? tableRules?.select?.fields ?? "";
55
+ returningFields =
56
+ tableRules.update.returningFields ?? tableRules?.select?.fields ?? "";
45
57
 
46
58
  if (!returningFields && params?.returning) {
47
- throw "You are not allowed to return any fields from the update"
59
+ throw "You are not allowed to return any fields from the update";
48
60
  }
49
61
 
50
62
  if (!fields) {
51
63
  throw ` Invalid update rule fo r ${this.name}. fields missing `;
52
64
  }
53
- finalUpdateFilter = (await this.prepareWhere({
54
- select: undefined,
55
- filter,
56
- forcedFilter,
57
- filterFields,
58
- localParams,
59
- tableRule: tableRules
60
- })).filter;
65
+ finalUpdateFilter = (
66
+ await this.prepareWhere({
67
+ select: undefined,
68
+ filter,
69
+ forcedFilter,
70
+ filterFields,
71
+ localParams,
72
+ tableRule: tableRules,
73
+ })
74
+ ).filter;
61
75
  if (tableRules.update.dynamicFields?.length) {
62
76
  /**
63
77
  * dynamicFields.fields used to allow a custom list of fields for specific records
@@ -65,37 +79,48 @@ export async function parseUpdateRules(
65
79
  * updates must target records from a specific dynamicFields.filter or not match any dynamicFields.filter
66
80
  */
67
81
  if (testRule) {
68
- for await (const [dfIndex, dfRule] of tableRules.update.dynamicFields.entries()) {
69
-
82
+ for await (const [
83
+ dfIndex,
84
+ dfRule,
85
+ ] of tableRules.update.dynamicFields.entries()) {
70
86
  /**
71
87
  * Validated filter and fields
72
88
  */
73
89
  const condition = await this.prepareWhere({
74
- select: undefined,
75
- filterFields: this.column_names,
76
- filter: dfRule.filter,
77
- localParams,
78
- tableRule: tableRules
90
+ select: undefined,
91
+ filterFields: this.column_names,
92
+ filter: dfRule.filter,
93
+ localParams,
94
+ tableRule: tableRules,
79
95
  });
80
96
  if (!condition.where) {
81
- throw "dynamicFields.filter cannot be empty: " + JSON.stringify(dfRule);
97
+ throw (
98
+ "dynamicFields.filter cannot be empty: " + JSON.stringify(dfRule)
99
+ );
82
100
  }
83
- await this.validateViewRules({
84
- fields: dfRule.fields,
85
- filterFields,
86
- returningFields,
87
- forcedFilter,
88
- dynamicFields: tableRules.update.dynamicFields,
89
- rule: "update"
101
+ await this.validateViewRules({
102
+ fields: dfRule.fields,
103
+ filterFields,
104
+ returningFields,
105
+ forcedFilter,
106
+ dynamicFields: tableRules.update.dynamicFields,
107
+ rule: "update",
90
108
  });
91
109
 
92
-
93
110
  await this.find(dfRule.filter, { limit: 0 });
94
111
 
95
112
  /** Ensure dynamicFields filters do not overlap */
96
- for await (const [_dfIndex, _dfRule] of tableRules.update.dynamicFields.entries()) {
113
+ for await (const [
114
+ _dfIndex,
115
+ _dfRule,
116
+ ] of tableRules.update.dynamicFields.entries()) {
97
117
  if (dfIndex !== _dfIndex) {
98
- if (await this.findOne({ $and: [dfRule.filter, _dfRule.filter] }, { select: "" })) {
118
+ if (
119
+ await this.findOne(
120
+ { $and: [dfRule.filter, _dfRule.filter] },
121
+ { select: "" },
122
+ )
123
+ ) {
99
124
  throw `dynamicFields.filter cannot overlap each other. \n
100
125
  Overlapping dynamicFields rules:
101
126
  ${JSON.stringify(dfRule)}
@@ -109,12 +134,17 @@ export async function parseUpdateRules(
109
134
  }
110
135
 
111
136
  /** Pick dynamicFields.fields if matching filter */
112
- let matchedRule: Required<UpdateRule>["dynamicFields"][number] | undefined;
137
+ let matchedRule:
138
+ | Required<UpdateRule>["dynamicFields"][number]
139
+ | undefined;
113
140
  for await (const dfRule of tableRules.update.dynamicFields) {
114
- const match = await this.findOne({ $and: ([finalUpdateFilter, dfRule.filter] as AnyObject[]).filter(isDefined) });
141
+ const match = await this.findOne({
142
+ $and: ([finalUpdateFilter, dfRule.filter] as AnyObject[]).filter(
143
+ isDefined,
144
+ ),
145
+ });
115
146
 
116
147
  if (match) {
117
-
118
148
  /** Ensure it doesn't overlap with other dynamicFields.filter */
119
149
  if (matchedRule && !testRule) {
120
150
  throw "Your update is targeting multiple tableRules.update.dynamicFields. Restrict update filter to only target one rule";
@@ -128,37 +158,57 @@ export async function parseUpdateRules(
128
158
 
129
159
  /* Safely test publish rules */
130
160
  if (testRule) {
131
- await this.validateViewRules({ fields, filterFields, returningFields, forcedFilter, dynamicFields: tableRules.update.dynamicFields, rule: "update" });
161
+ await this.validateViewRules({
162
+ fields,
163
+ filterFields,
164
+ returningFields,
165
+ forcedFilter,
166
+ dynamicFields: tableRules.update.dynamicFields,
167
+ rule: "update",
168
+ });
132
169
  if (forcedData) {
133
170
  try {
134
- const { data, allowedCols } = await prepareNewData({
135
- row: forcedData,
136
- forcedData: undefined,
137
- allowedFields: "*",
138
- tableRules,
139
- removeDisallowedFields: false,
171
+ const { data, allowedCols } = await prepareNewData({
172
+ row: forcedData,
173
+ forcedData: undefined,
174
+ allowedFields: "*",
175
+ tableRules,
176
+ removeDisallowedFields: false,
140
177
  tableConfigurator: this.dboBuilder.prostgles.tableConfigurator,
141
178
  tableHandler: this,
142
179
  });
143
180
  let updateValidate: ValidateRowBasic | undefined;
144
- if(validate){
145
- if(!localParams) throw "localParams missing";
146
- updateValidate = (args) => validate!({ update: args.row, filter: {}, dbx: this.getFinalDbo(localParams), localParams })
181
+ if (validate) {
182
+ if (!localParams) throw "localParams missing";
183
+ updateValidate = (args) =>
184
+ validate!({
185
+ update: args.row,
186
+ filter: {},
187
+ dbx: this.getFinalDbo(localParams),
188
+ localParams,
189
+ });
147
190
  }
148
- const updateQ = (await this.dataValidator.parse({
149
- command: "update",
150
- rows: [data],
151
- allowedCols,
152
- dbTx: this.tx?.dbTX || this.dboBuilder.dbo,
153
- validationOptions: {
154
- validate: updateValidate,
155
- localParams,
156
- }
157
- })).getQuery();
191
+ const updateQ = (
192
+ await this.dataValidator.parse({
193
+ command: "update",
194
+ rows: [data],
195
+ allowedCols,
196
+ dbTx: this.tx?.dbTX || this.dboBuilder.dbo,
197
+ validationOptions: {
198
+ validate: updateValidate,
199
+ localParams,
200
+ },
201
+ })
202
+ ).getQuery();
158
203
  const query = updateQ + " WHERE FALSE ";
159
204
  await this.db.any("EXPLAIN " + query);
160
205
  } catch (e) {
161
- throw " issue with forcedData: \nVALUE: " + JSON.stringify(forcedData, null, 2) + "\nERROR: " + e;
206
+ throw (
207
+ " issue with forcedData: \nVALUE: " +
208
+ JSON.stringify(forcedData, null, 2) +
209
+ "\nERROR: " +
210
+ e
211
+ );
162
212
  }
163
213
  }
164
214
 
@@ -170,9 +220,15 @@ export async function parseUpdateRules(
170
220
  const _fields = this.parseFieldFilter(fields);
171
221
 
172
222
  let validateRow: ValidateRowBasic | undefined;
173
- if(validate){
174
- if(!localParams) throw "localParams missing";
175
- validateRow = ({ row }) => validate!({ update: row, filter: finalUpdateFilter, localParams, dbx: this.getFinalDbo(localParams) });
223
+ if (validate) {
224
+ if (!localParams) throw "localParams missing";
225
+ validateRow = ({ row }) =>
226
+ validate!({
227
+ update: row,
228
+ filter: finalUpdateFilter,
229
+ localParams,
230
+ dbx: this.getFinalDbo(localParams),
231
+ });
176
232
  }
177
233
 
178
234
  return {
@@ -183,5 +239,5 @@ export async function parseUpdateRules(
183
239
  forcedFilter,
184
240
  returningFields,
185
241
  filterFields,
186
- }
187
- }
242
+ };
243
+ }
@@ -8,34 +8,45 @@ type Result = {
8
8
  joinGraph?: Graph | undefined;
9
9
  joins: Join[];
10
10
  shortestJoinPaths: JoinPaths;
11
- }
12
- export async function prepareShortestJoinPaths(dboBuilder: DboBuilder): Promise<Result> {
13
-
11
+ };
12
+ export async function prepareShortestJoinPaths(
13
+ dboBuilder: DboBuilder,
14
+ ): Promise<Result> {
14
15
  if (dboBuilder.prostgles.opts.joins) {
15
-
16
16
  let joinConfig = await dboBuilder.prostgles.opts.joins;
17
17
  if (!dboBuilder.tablesOrViews) {
18
- throw new Error("Could not create join config. this.tablesOrViews missing");
18
+ throw new Error(
19
+ "Could not create join config. this.tablesOrViews missing",
20
+ );
19
21
  }
20
22
 
21
23
  const inferredJoins = await getInferredJoins2(dboBuilder.tablesOrViews);
22
24
  if (joinConfig === "inferred") {
23
- joinConfig = inferredJoins
25
+ joinConfig = inferredJoins;
24
26
  /* If joins are specified then include inferred joins except the explicit tables */
25
27
  } else if (Array.isArray(joinConfig)) {
26
- const joinTables = joinConfig.map(j => j.tables).flat();
27
- joinConfig = joinConfig.concat(inferredJoins.filter(j => !j.tables.find(t => joinTables.includes(t))))
28
+ const joinTables = joinConfig.map((j) => j.tables).flat();
29
+ joinConfig = joinConfig.concat(
30
+ inferredJoins.filter(
31
+ (j) => !j.tables.find((t) => joinTables.includes(t)),
32
+ ),
33
+ );
28
34
  } else if (joinConfig) {
29
- throw new Error("Unexpected joins init param. Expecting 'inferred' OR joinConfig but got: " + JSON.stringify(joinConfig))
35
+ throw new Error(
36
+ "Unexpected joins init param. Expecting 'inferred' OR joinConfig but got: " +
37
+ JSON.stringify(joinConfig),
38
+ );
30
39
  }
31
40
  const joins = JSON.parse(JSON.stringify(joinConfig)) as Join[];
32
41
 
33
42
  // Validate joins
34
43
  try {
35
- const tovNames = dboBuilder.tablesOrViews!.map(t => t.name);
44
+ const tovNames = dboBuilder.tablesOrViews!.map((t) => t.name);
36
45
 
37
46
  // 2 find incorrect tables
38
- const missing = joins.flatMap(j => j.tables).find(t => !tovNames.includes(t));
47
+ const missing = joins
48
+ .flatMap((j) => j.tables)
49
+ .find((t) => !tovNames.includes(t));
39
50
  if (missing) {
40
51
  throw "Table not found: " + missing;
41
52
  }
@@ -44,34 +55,52 @@ export async function prepareShortestJoinPaths(dboBuilder: DboBuilder): Promise<
44
55
  joins.map(({ tables, on }) => {
45
56
  const t1 = tables[0],
46
57
  t2 = tables[1];
47
- on.map(cond => {
48
-
58
+ on.map((cond) => {
49
59
  const f1s = Object.keys(cond),
50
60
  f2s = Object.values(cond);
51
- [[t1, f1s], [t2, f2s]].map(v => {
61
+ [
62
+ [t1, f1s],
63
+ [t2, f2s],
64
+ ].map((v) => {
52
65
  const t = <string>v[0],
53
66
  f = <string[]>v[1];
54
67
 
55
- const tov = dboBuilder.tablesOrViews!.find(_t => _t.name === t);
68
+ const tov = dboBuilder.tablesOrViews!.find((_t) => _t.name === t);
56
69
  if (!tov) throw "Table not found: " + t;
57
- const m1 = f.filter(k => !tov!.columns.map(c => c.name).includes(k))
70
+ const m1 = f.filter(
71
+ (k) => !tov!.columns.map((c) => c.name).includes(k),
72
+ );
58
73
  if (m1 && m1.length) {
59
- throw `Table ${t}(${tov.columns.map(c => c.name).join()}) has no fields named: ${m1.join()}`;
74
+ throw `Table ${t}(${tov.columns.map((c) => c.name).join()}) has no fields named: ${m1.join()}`;
60
75
  }
61
76
  });
62
- })
77
+ });
63
78
  });
64
79
 
65
80
  // 4 find incorrect/missing join types
66
- const expected_types = " \n\n-> Expecting: " + JOIN_TYPES.map(t => JSON.stringify(t)).join(` | `)
67
- const mt = joins.find(j => !j.type);
68
- if (mt) throw "Join type missing for: " + JSON.stringify(mt, null, 2) + expected_types;
69
-
70
- const it = joins.find(j => !JOIN_TYPES.includes(j.type));
71
- if (it) throw "Incorrect join type for: " + JSON.stringify(it, null, 2) + expected_types;
72
-
81
+ const expected_types =
82
+ " \n\n-> Expecting: " +
83
+ JOIN_TYPES.map((t) => JSON.stringify(t)).join(` | `);
84
+ const mt = joins.find((j) => !j.type);
85
+ if (mt)
86
+ throw (
87
+ "Join type missing for: " +
88
+ JSON.stringify(mt, null, 2) +
89
+ expected_types
90
+ );
91
+
92
+ const it = joins.find((j) => !JOIN_TYPES.includes(j.type));
93
+ if (it)
94
+ throw (
95
+ "Incorrect join type for: " +
96
+ JSON.stringify(it, null, 2) +
97
+ expected_types
98
+ );
73
99
  } catch (e) {
74
- const errMsg = ((joinConfig as any) === "inferred"? "INFERRED " : "") + "JOINS VALIDATION ERROR \n-> " + e;
100
+ const errMsg =
101
+ ((joinConfig as any) === "inferred" ? "INFERRED " : "") +
102
+ "JOINS VALIDATION ERROR \n-> " +
103
+ e;
75
104
  throw errMsg;
76
105
  }
77
106
 
@@ -90,15 +119,14 @@ export async function prepareShortestJoinPaths(dboBuilder: DboBuilder): Promise<
90
119
  joinGraph![t2] ??= {};
91
120
  joinGraph![t2]![t1] = 1;
92
121
  });
93
- const tables = Array.from(new Set(joins.flatMap(t => t.tables)));
122
+ const tables = Array.from(new Set(joins.flatMap((t) => t.tables)));
94
123
  const shortestJoinPaths: JoinPaths = [];
95
124
  tables.forEach((t1, i1) => {
96
125
  tables.forEach((t2, i2) => {
97
-
98
126
  /** Prevent recursion */
99
127
  if (
100
128
  t1 === t2 ||
101
- shortestJoinPaths.some(jp => {
129
+ shortestJoinPaths.some((jp) => {
102
130
  if (arrayValuesMatch([jp.t1, jp.t2], [t1, t2])) {
103
131
  const spath = findShortestPath(joinGraph, t1, t2);
104
132
  if (spath && arrayValuesMatch(spath.path, jp.path)) {
@@ -113,20 +141,30 @@ export async function prepareShortestJoinPaths(dboBuilder: DboBuilder): Promise<
113
141
  const spath = findShortestPath(joinGraph, t1, t2);
114
142
  if (!(spath && spath.distance < Infinity)) return;
115
143
 
116
- const existing1 = shortestJoinPaths.find(j => j.t1 === t1 && j.t2 === t2)
144
+ const existing1 = shortestJoinPaths.find(
145
+ (j) => j.t1 === t1 && j.t2 === t2,
146
+ );
117
147
  if (!existing1) {
118
148
  shortestJoinPaths.push({ t1, t2, path: spath.path.slice() });
119
149
  }
120
150
 
121
- const existing2 = shortestJoinPaths.find(j => j.t2 === t1 && j.t1 === t2);
151
+ const existing2 = shortestJoinPaths.find(
152
+ (j) => j.t2 === t1 && j.t1 === t2,
153
+ );
122
154
  if (!existing2) {
123
- shortestJoinPaths.push({ t1: t2, t2: t1, path: spath.path.slice().reverse() });
155
+ shortestJoinPaths.push({
156
+ t1: t2,
157
+ t2: t1,
158
+ path: spath.path.slice().reverse(),
159
+ });
124
160
  }
125
161
  });
126
162
  });
127
163
  return {
128
- joins, shortestJoinPaths, joinGraph
129
- }
164
+ joins,
165
+ shortestJoinPaths,
166
+ joinGraph,
167
+ };
130
168
  }
131
169
 
132
170
  return {
@@ -135,27 +173,40 @@ export async function prepareShortestJoinPaths(dboBuilder: DboBuilder): Promise<
135
173
  };
136
174
  }
137
175
 
138
-
139
176
  const arrayValuesMatch = <T>(arr1: T[], arr2: T[]): boolean => {
140
- return arr1.slice().sort().join() === arr2.slice().sort().join()
141
- }
177
+ return arr1.slice().sort().join() === arr2.slice().sort().join();
178
+ };
142
179
 
143
180
  async function getInferredJoins2(schema: TableSchema[]): Promise<Join[]> {
144
181
  const joins: Join[] = [];
145
- const upsertJoin = (t1: string, t2: string, cols: { col1: string; col2: string }[], type: Join["type"]) => {
146
- const existingIdx = joins.findIndex(j => arrayValuesMatch(j.tables.slice(0), [t1, t2]));
182
+ const upsertJoin = (
183
+ t1: string,
184
+ t2: string,
185
+ cols: { col1: string; col2: string }[],
186
+ type: Join["type"],
187
+ ) => {
188
+ const existingIdx = joins.findIndex((j) =>
189
+ arrayValuesMatch(j.tables.slice(0), [t1, t2]),
190
+ );
147
191
  const existing = joins[existingIdx];
148
192
  const normalCond = cols.reduce((a, v) => ({ ...a, [v.col1]: v.col2 }), {});
149
- const revertedCond = cols.reduce((a, v) => ({ ...a, [v.col2]: v.col1 }), {});
193
+ const revertedCond = cols.reduce(
194
+ (a, v) => ({ ...a, [v.col2]: v.col1 }),
195
+ {},
196
+ );
150
197
  if (existing) {
151
- const isLTR = existing.tables[0] === t1
198
+ const isLTR = existing.tables[0] === t1;
152
199
  const cond = isLTR ? normalCond : revertedCond;
153
200
 
154
201
  /** At some point we should add relationship type to EACH JOIN CONDITION GROUP */
155
202
  // const fixedType = isLTR? type : type.split("").reverse().join("") as Join["type"];
156
203
 
157
204
  /** Avoid duplicates */
158
- if (!existing.on.some(_cond => JSON.stringify(_cond) === JSON.stringify(cond))) {
205
+ if (
206
+ !existing.on.some(
207
+ (_cond) => JSON.stringify(_cond) === JSON.stringify(cond),
208
+ )
209
+ ) {
159
210
  existing.on.push(cond);
160
211
  joins[existingIdx] = existing;
161
212
  }
@@ -163,24 +214,32 @@ async function getInferredJoins2(schema: TableSchema[]): Promise<Join[]> {
163
214
  joins.push({
164
215
  tables: [t1, t2],
165
216
  on: [normalCond],
166
- type
167
- })
217
+ type,
218
+ });
168
219
  }
169
- }
170
- schema.map(tov => {
171
- tov.columns.map(col => {
220
+ };
221
+ schema.map((tov) => {
222
+ tov.columns.map((col) => {
172
223
  if (col.references) {
173
- col.references.forEach(r => {
174
- const joinCols = r.cols.map((c, i) => ({ col1: c, col2: r.fcols[i]! }));
224
+ col.references.forEach((r) => {
225
+ const joinCols = r.cols.map((c, i) => ({
226
+ col1: c,
227
+ col2: r.fcols[i]!,
228
+ }));
175
229
  let type: Join["type"] = "one-many";
176
- const ftablePkeys = schema.find(_tov => _tov.name === r.ftable)?.columns.filter(fcol => fcol.is_pkey);
177
- if (ftablePkeys?.length && ftablePkeys.every(fkey => r.fcols.includes(fkey.name))) {
230
+ const ftablePkeys = schema
231
+ .find((_tov) => _tov.name === r.ftable)
232
+ ?.columns.filter((fcol) => fcol.is_pkey);
233
+ if (
234
+ ftablePkeys?.length &&
235
+ ftablePkeys.every((fkey) => r.fcols.includes(fkey.name))
236
+ ) {
178
237
  type = "one-one";
179
238
  }
180
- upsertJoin(tov.name, r.ftable, joinCols, type)
181
- })
239
+ upsertJoin(tov.name, r.ftable, joinCols, type);
240
+ });
182
241
  }
183
- })
184
- })
242
+ });
243
+ });
185
244
  return joins;
186
- }
245
+ }