prostgles-server 1.5.119 → 2.0.3

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 (426) hide show
  1. package/dist/DboBuilder.d.ts +53 -28
  2. package/dist/DboBuilder.d.ts.map +1 -1
  3. package/dist/DboBuilder.js +432 -113
  4. package/dist/DboBuilder.js.map +1 -1
  5. package/dist/FileManager.d.ts +160 -0
  6. package/dist/FileManager.d.ts.map +1 -0
  7. package/dist/FileManager.js +419 -0
  8. package/dist/FileManager.js.map +1 -0
  9. package/dist/Prostgles.d.ts +163 -78
  10. package/dist/Prostgles.d.ts.map +1 -1
  11. package/dist/Prostgles.js +241 -180
  12. package/dist/Prostgles.js.map +1 -1
  13. package/dist/PubSubManager.js +1 -1
  14. package/dist/PubSubManager.js.map +1 -1
  15. package/dist/QueryBuilder.d.ts.map +1 -1
  16. package/dist/QueryBuilder.js +8 -5
  17. package/dist/QueryBuilder.js.map +1 -1
  18. package/dist/index.d.ts +3 -2
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/lib/DboBuilder.ts +581 -175
  22. package/lib/FileManager.ts +546 -0
  23. package/lib/Prostgles.ts +424 -252
  24. package/lib/PubSubManager.ts +1 -1
  25. package/lib/QueryBuilder.ts +10 -6
  26. package/lib/index.ts +3 -3
  27. package/package.json +8 -2
  28. package/tests/client/index.js +18 -6
  29. package/tests/client/index.ts +16 -4
  30. package/tests/client/package-lock.json +83 -62
  31. package/tests/client/package.json +3 -3
  32. package/tests/client_only_queries.js +4 -4
  33. package/tests/config_test/DBoGenerated.d.ts +231 -8
  34. package/tests/config_test/index.html +35 -9
  35. package/tests/config_test/index.js +55 -97
  36. package/tests/config_test/index.js.map +1 -0
  37. package/tests/config_test/index.ts +67 -113
  38. package/tests/config_test/init.sql +50 -24
  39. package/tests/config_test/media/002d5f12-63c3-41f3-9007-cd33009104f4.txt +1 -0
  40. package/tests/config_test/media/003f0136-d231-4dd1-8937-08fa9a7c3d2e.txt +1 -0
  41. package/tests/config_test/media/01bd39a0-083b-4bfa-91fc-f4d1d9b7b204.txt +1 -0
  42. package/tests/config_test/media/0224513a-62de-4f0a-92bb-dcb3f700da7f.txt +1 -0
  43. package/tests/config_test/media/03005346-d6d5-4824-96ae-5ad7ca762730.txt +1 -0
  44. package/tests/config_test/media/0342d065-9bd2-443f-9058-f8058ab52de0.txt +1 -0
  45. package/tests/config_test/media/0350d1cf-b3b3-4c58-aef2-ad1dc3f80c6c.txt +1 -0
  46. package/tests/config_test/media/036833d7-d166-43a1-bda3-b801938c614d.txt +1 -0
  47. package/tests/config_test/media/03b5324d-0913-408f-a78a-252ff8fe8126.txt +1 -0
  48. package/tests/config_test/media/0540b670-bf42-4a83-82b2-67164630a24a.txt +1 -0
  49. package/tests/config_test/media/05900f5f-3b67-4ee9-8e1d-b511fd79d878.txt +1 -0
  50. package/tests/config_test/media/05969252-3f9e-41a0-88ce-aa23ba8b42eb.txt +1 -0
  51. package/tests/config_test/media/05a8a60c-cc75-4469-8e06-55d88c26e97a.txt +1 -0
  52. package/tests/config_test/media/05e662fc-7a03-4303-ae42-27a28d9affb9.txt +1 -0
  53. package/tests/config_test/media/061f86e6-0ddd-49b0-b243-4c063c6db5e4.txt +1 -0
  54. package/tests/config_test/media/062cf311-3976-471e-88ec-d618bd8ceeaa.txt +1 -0
  55. package/tests/config_test/media/0693b073-77b9-446a-9606-5453bcafd200.txt +1 -0
  56. package/tests/config_test/media/07a09b79-b1ed-45a3-bb42-42cd1a00757b.txt +1 -0
  57. package/tests/config_test/media/07e48303-0520-4a80-921e-130417488baa.txt +1 -0
  58. package/tests/config_test/media/09ab90a6-8461-4f39-89fb-8e2277974771.txt +1 -0
  59. package/tests/config_test/media/09c1194a-5d09-417c-a0c4-26dcf1e65bdb.txt +1 -0
  60. package/tests/config_test/media/09dc662f-6a9d-4a0b-95ba-8d24ceae9721.txt +1 -0
  61. package/tests/config_test/media/09ebb492-6146-4ff8-ac83-ac9970f5844c.txt +1 -0
  62. package/tests/config_test/media/0a198d6f-c629-42bd-9aa8-3c0ff62e1f1d.txt +1 -0
  63. package/tests/config_test/media/0a6d3ced-a16f-4491-b25b-679e9323ad79.txt +1 -0
  64. package/tests/config_test/media/0a817a27-6888-4ac4-b07b-4d1275e035ff.txt +1 -0
  65. package/tests/config_test/media/0aadc4f7-bf87-49da-8ef6-0857bf1789b4.txt +1 -0
  66. package/tests/config_test/media/0abe4a2e-fd75-428b-9757-2535d4112862.txt +1 -0
  67. package/tests/config_test/media/0ad9deca-6362-41dd-b0b3-8f8a71e2e1e2.txt +1 -0
  68. package/tests/config_test/media/0bdb19df-b82c-4a07-8d9b-a6e3a2af8a94.txt +1 -0
  69. package/tests/config_test/media/0c1e4575-223d-4d0c-b2c3-6ab6bb9844e6.txt +1 -0
  70. package/tests/config_test/media/0c4e3d55-432f-42e9-aa53-48e816ff6d15.txt +1 -0
  71. package/tests/config_test/media/0c5b47a4-884a-4207-b106-fa2557fc5600.txt +1 -0
  72. package/tests/config_test/media/0d8fbe62-22bc-47e8-b4ca-b77d8fd02798.txt +1 -0
  73. package/tests/config_test/media/0d95a140-3ae1-4faa-a34b-ed5b6cc524ac.txt +1 -0
  74. package/tests/config_test/media/0e0907c7-bd10-4ce2-ac36-066916a8a793.txt +1 -0
  75. package/tests/config_test/media/0e192b00-2676-4130-8819-90ee34a50932.txt +1 -0
  76. package/tests/config_test/media/0f9e3861-0e59-4ae4-a606-1fdd2c890c5b.txt +1 -0
  77. package/tests/config_test/media/1039afe1-24e9-4ea6-bfd0-6871b5f06f8f.txt +1 -0
  78. package/tests/config_test/media/1052e479-295e-46e9-88ec-d8f20efa75ea.txt +1 -0
  79. package/tests/config_test/media/11973be6-a675-4e0d-a54e-1eccbcdb3f2a.txt +1 -0
  80. package/tests/config_test/media/121656f5-1ef9-4181-9ee0-e3ae1433fed1.txt +1 -0
  81. package/tests/config_test/media/121a16b4-a925-406b-9ba9-0e4b4d413402.txt +1 -0
  82. package/tests/config_test/media/122cdf36-5b17-4b81-aa9d-c6725d1e8c8a.txt +1 -0
  83. package/tests/config_test/media/12435236-4735-4978-a234-52100181ee72.txt +1 -0
  84. package/tests/config_test/media/130eea28-64d0-40c4-8fa4-0cfba493e321.txt +1 -0
  85. package/tests/config_test/media/1435b6fd-4b86-4f7e-8e68-b607c5e5f2ad.txt +1 -0
  86. package/tests/config_test/media/14d78bf0-fd3e-4686-863d-b18d2c69b181.txt +1 -0
  87. package/tests/config_test/media/14dffd0e-23ae-4659-b8b3-25c89593643e.txt +1 -0
  88. package/tests/config_test/media/14e32028-fb4d-4743-a34d-c325be47b25e.txt +1 -0
  89. package/tests/config_test/media/14fb2139-eb53-4246-8dcb-c1e568572306.txt +1 -0
  90. package/tests/config_test/media/1644d880-c61f-4e9c-9c5c-892623ff5689.txt +1 -0
  91. package/tests/config_test/media/16818bb0-a022-4fd9-acac-e5a448b58eaf.txt +1 -0
  92. package/tests/config_test/media/16a47db5-262f-490b-850f-0f82019a58b4.txt +1 -0
  93. package/tests/config_test/media/16c2ffcc-8632-4935-b12d-be1313b74ddc.txt +1 -0
  94. package/tests/config_test/media/16fe3928-25c7-4e3a-9f68-51520712a4f6.txt +1 -0
  95. package/tests/config_test/media/172a7736-d3cf-431c-92a5-1a4aa6e89c7e.txt +1 -0
  96. package/tests/config_test/media/1784e75f-d063-43e2-accb-364ed36ae7d0.txt +1 -0
  97. package/tests/config_test/media/182e9dcc-0443-4cc5-aff1-9cf954dab771.txt +1 -0
  98. package/tests/config_test/media/19158860-e0c0-4ac7-afee-5428f9060b36.txt +1 -0
  99. package/tests/config_test/media/1998f271-5d71-4bc0-9f92-376a8a98f7da.txt +1 -0
  100. package/tests/config_test/media/19d2b383-4b1b-41a5-a7ef-ceaf1e691e0f.txt +1 -0
  101. package/tests/config_test/media/1c33fac7-470b-47e0-8aba-7c7394406aad.txt +1 -0
  102. package/tests/config_test/media/1d8a6c9c-0539-4c08-8ea5-4bd0bbe8fa18.txt +1 -0
  103. package/tests/config_test/media/1de86105-97ce-49c0-8137-030f3af37fb5.txt +1 -0
  104. package/tests/config_test/media/1f1393d1-e2f2-445e-806e-05c9a6135437.txt +1 -0
  105. package/tests/config_test/media/1fc303e7-943c-42cd-87f0-d14b361e5564.txt +1 -0
  106. package/tests/config_test/media/1fd79260-4246-4230-b4ab-c42baad3de44.txt +1 -0
  107. package/tests/config_test/media/209085fb-8441-4039-bb01-32171248c7f7.txt +1 -0
  108. package/tests/config_test/media/20ab3e07-77d6-4fbc-9532-b47e16c38e68.txt +1 -0
  109. package/tests/config_test/media/20d43c00-35b4-43da-b79f-cb59888ac41b.txt +1 -0
  110. package/tests/config_test/media/20f7f651-06de-4d5f-aa39-2c261c662cd3.txt +1 -0
  111. package/tests/config_test/media/214af93c-f973-4809-a440-87a5a3b28e83.txt +1 -0
  112. package/tests/config_test/media/22bffc7f-c942-4163-bbf6-141f585f3671.txt +1 -0
  113. package/tests/config_test/media/23d09f4f-db2a-44cb-9d1b-552eb0568acf.txt +1 -0
  114. package/tests/config_test/media/24a256f7-fe83-4a6d-ace8-a2c2ded37341.txt +1 -0
  115. package/tests/config_test/media/25522aa0-9c30-413b-b0df-f9f2c2562769.txt +1 -0
  116. package/tests/config_test/media/25806b78-52cd-40f2-907a-d4fba3821435.txt +1 -0
  117. package/tests/config_test/media/259920a6-0c5a-4193-8940-91fc0183204c.txt +1 -0
  118. package/tests/config_test/media/28ca6b02-f58e-4204-a87a-28347d8f5884.txt +1 -0
  119. package/tests/config_test/media/2a3f8e6e-3bc4-44b3-ac43-17851b1f53e4.txt +1 -0
  120. package/tests/config_test/media/2afe6eb3-64ca-4aae-b002-676ab3862c96.txt +1 -0
  121. package/tests/config_test/media/2bd913c1-408a-4451-b465-e48452ca46cb.txt +1 -0
  122. package/tests/config_test/media/2bfe0f21-70b6-45a7-9bc0-f60dee9b0786.txt +1 -0
  123. package/tests/config_test/media/2c37bb2d-412e-44be-8f91-58bf1adae554.txt +1 -0
  124. package/tests/config_test/media/2c6ffa05-479f-4d8f-bc98-0c050567ef28.txt +1 -0
  125. package/tests/config_test/media/2ce666cb-e1e7-411f-9727-ce47be9365f5.txt +1 -0
  126. package/tests/config_test/media/2d737158-559b-4fca-b35c-3a832e21a0bf.txt +1 -0
  127. package/tests/config_test/media/2d7cae40-8fa9-4715-8834-b105a5815efc.txt +1 -0
  128. package/tests/config_test/media/2ea6b55b-eb9e-4b72-9510-4d5b00490076.txt +1 -0
  129. package/tests/config_test/media/2f0f8b73-7a21-48e5-b0d8-6e733de5eef8.txt +1 -0
  130. package/tests/config_test/media/2f37ed63-4a76-49e8-9df0-b586e2318b54.txt +1 -0
  131. package/tests/config_test/media/2f4e2797-63dd-43cb-8edf-b6e4a5f6d85b.txt +1 -0
  132. package/tests/config_test/media/2fc8b254-571c-49da-b8d8-af12bead2b6e.txt +1 -0
  133. package/tests/config_test/media/31887ce4-a69d-429e-bd32-e3fcf1b6ec3c.txt +1 -0
  134. package/tests/config_test/media/31ab5780-f38f-4614-b11e-1399a5d19e88.txt +1 -0
  135. package/tests/config_test/media/330b1369-abf8-4a0d-aac3-15185409347b.txt +1 -0
  136. package/tests/config_test/media/332306f0-16a4-46f1-b312-42d5b1739561.txt +1 -0
  137. package/tests/config_test/media/33729cd7-ef5a-461d-860c-188b12c3c0e1.txt +1 -0
  138. package/tests/config_test/media/34f797b8-98c7-47ff-ac4f-da792d3e59ec.txt +1 -0
  139. package/tests/config_test/media/35753dc2-4a87-4fdb-b547-8ba587ab7cca.txt +1 -0
  140. package/tests/config_test/media/35cf2e07-f087-410d-898b-326b16617631.txt +1 -0
  141. package/tests/config_test/media/3704c54c-08b7-429c-98fa-0656dca539ca.txt +1 -0
  142. package/tests/config_test/media/3823f728-c199-416b-aeb3-223bc0dc006a.txt +1 -0
  143. package/tests/config_test/media/38d31ef9-7e41-47f9-8e05-e826f9d1a378.txt +1 -0
  144. package/tests/config_test/media/39504f22-47a7-428a-8793-7cb9cc79b23d.txt +1 -0
  145. package/tests/config_test/media/39baaddd-7764-48b4-9dc3-e77f91b04ff0.txt +1 -0
  146. package/tests/config_test/media/39c91ceb-928d-4279-a8a7-00f363b18384.txt +1 -0
  147. package/tests/config_test/media/3a58c511-78de-425f-a857-63a43e3b4c51.txt +1 -0
  148. package/tests/config_test/media/3c3fd2ca-8a72-4d38-899b-776f4ff690fc.txt +1 -0
  149. package/tests/config_test/media/3c592436-14fa-49f5-be05-1d8aff250d0d.txt +1 -0
  150. package/tests/config_test/media/3db275e8-327d-45d4-a755-3df103967b04.txt +1 -0
  151. package/tests/config_test/media/3de350d2-a26d-40ef-ad11-fa1454a0f50a.txt +1 -0
  152. package/tests/config_test/media/3e4f08ac-8b0a-4ec6-b3be-ff6ce140af6a.txt +1 -0
  153. package/tests/config_test/media/3fa40e56-cb30-4722-ba36-583e7c064d16.txt +1 -0
  154. package/tests/config_test/media/3fe9495c-6fa5-49ca-a16f-e3cf1808d619.txt +1 -0
  155. package/tests/config_test/media/3fed5003-1a13-433d-a82f-325dbd57ff55.txt +1 -0
  156. package/tests/config_test/media/40dfa3df-237e-4e0d-99ff-c90000c5f7ed.txt +1 -0
  157. package/tests/config_test/media/40ea2d40-3f28-46e5-a41d-5aae1721de21.txt +1 -0
  158. package/tests/config_test/media/410c564d-860e-4693-9112-efb2304bf940.txt +1 -0
  159. package/tests/config_test/media/424c9239-aa07-48f3-9a64-c99261387fec.txt +1 -0
  160. package/tests/config_test/media/4260eab4-3e7d-420a-bc8f-b9cc945f3c80.txt +1 -0
  161. package/tests/config_test/media/42886a01-8047-4a49-beab-97f5a3a7c128.txt +1 -0
  162. package/tests/config_test/media/44e2e069-a213-4632-b13b-153461000c5e.txt +1 -0
  163. package/tests/config_test/media/46520b9c-f878-41e9-9840-0d0babb9b63d.txt +1 -0
  164. package/tests/config_test/media/46f010a8-66b2-48d8-b4a6-62cc23e26008.txt +1 -0
  165. package/tests/config_test/media/48c9f649-f776-4cd9-8df5-56b5312f51c2.txt +1 -0
  166. package/tests/config_test/media/49f5836b-4fb0-4ee1-831b-91ddfcaac0bf.txt +1 -0
  167. package/tests/config_test/media/4a2d3bae-040e-44fe-bb36-301af65302fd.txt +1 -0
  168. package/tests/config_test/media/4ab15a14-36c7-4a4e-8179-be60c56368c5.txt +1 -0
  169. package/tests/config_test/media/4b98c009-458a-4e35-96e2-ccd465673234.txt +1 -0
  170. package/tests/config_test/media/4bf86749-685c-423c-9997-eb73cb0bc254.txt +1 -0
  171. package/tests/config_test/media/4db9d5ad-c703-4fb5-9b15-9c48ee3edca1.txt +1 -0
  172. package/tests/config_test/media/4dd147f7-59ef-4b8f-963b-1dbedb0d10a2.txt +1 -0
  173. package/tests/config_test/media/4e61da19-25e1-44a0-b901-2cefc3461619.txt +1 -0
  174. package/tests/config_test/media/4e66c64c-72e3-4458-8ac9-490774193a50.txt +1 -0
  175. package/tests/config_test/media/4e98ba50-1583-4d7b-9e0d-7c577af28182.txt +1 -0
  176. package/tests/config_test/media/4e9cb872-dd5f-404a-ae9f-97ec69606d36.txt +1 -0
  177. package/tests/config_test/media/4fbb89d3-e922-42f2-81ed-6c1370199c94.txt +1 -0
  178. package/tests/config_test/media/4fdf0b1d-1718-4f53-8a9c-6d44bdef0c60.txt +1 -0
  179. package/tests/config_test/media/503c6659-ff3f-4df4-ac88-628e809b2e72.txt +1 -0
  180. package/tests/config_test/media/51010c69-5b30-4ac7-8ed9-12f1866ef145.txt +1 -0
  181. package/tests/config_test/media/51b2d38d-230e-4eb0-9b1f-dab8fa8b415d.txt +1 -0
  182. package/tests/config_test/media/51cc7a7b-a764-4ebd-ac31-ba881fa1404e.txt +1 -0
  183. package/tests/config_test/media/52f0dbb6-2179-4472-871d-dd80c6341c58.txt +1 -0
  184. package/tests/config_test/media/54aff9eb-0202-447d-9c95-c74560cabcd7.txt +1 -0
  185. package/tests/config_test/media/55551c8d-4305-48ca-a752-ade3a9efb538.txt +1 -0
  186. package/tests/config_test/media/555b772b-6c78-4667-80d6-bbe2f290611c.txt +1 -0
  187. package/tests/config_test/media/555fbb0b-febc-4611-9efa-16ddbf8e988c.txt +1 -0
  188. package/tests/config_test/media/55a84883-9a15-4368-b8fe-05bd848de6ba.txt +1 -0
  189. package/tests/config_test/media/56523343-de4a-49de-94ae-8205cc92eeb6.txt +1 -0
  190. package/tests/config_test/media/567d431e-813f-47d7-a3d2-e2371c0f32e2.txt +1 -0
  191. package/tests/config_test/media/56fa54a9-10a4-42a3-9a29-ea132adf09bc.txt +1 -0
  192. package/tests/config_test/media/57734e9e-d5b8-4942-a76c-db1d0cb72aea.txt +1 -0
  193. package/tests/config_test/media/5777d7a2-cd26-494e-92ba-fa681c2445ef.txt +1 -0
  194. package/tests/config_test/media/582f6e3f-1b06-4f97-bb81-4355cc139e41.txt +1 -0
  195. package/tests/config_test/media/584ef61c-974e-4882-aaff-8089029b7a66.txt +1 -0
  196. package/tests/config_test/media/58987f15-0627-4c3c-a8ba-33e0315548f9.txt +1 -0
  197. package/tests/config_test/media/58eb23e6-6110-489f-81d3-37d48bcd3bf7.txt +1 -0
  198. package/tests/config_test/media/5c5e5543-491c-49d2-b762-162faa75019a.txt +1 -0
  199. package/tests/config_test/media/5e688b4a-afba-4d47-bdc8-dd108d673619.txt +1 -0
  200. package/tests/config_test/media/5f42b54e-6020-4552-8872-17dc7d57b110.txt +1 -0
  201. package/tests/config_test/media/5f5ae0f6-816d-4425-8403-5d07284db0aa.txt +1 -0
  202. package/tests/config_test/media/5ffa2969-2d65-430e-a621-420c07f18f41.txt +1 -0
  203. package/tests/config_test/media/62a62671-e4bc-4312-8dfd-a06168c22aee.txt +1 -0
  204. package/tests/config_test/media/63732c16-1f11-4635-b2bc-62a6459e651e.txt +1 -0
  205. package/tests/config_test/media/64b8c889-5423-4cbb-9816-a05e72771b52.txt +1 -0
  206. package/tests/config_test/media/653d8bcd-4e60-4fda-9676-2e0054d966c1.txt +1 -0
  207. package/tests/config_test/media/6602e1e0-07e9-4dd1-b3c8-276f24e2a41f.txt +1 -0
  208. package/tests/config_test/media/67868636-99cc-441b-991d-7fe781b67745.txt +1 -0
  209. package/tests/config_test/media/67b4eede-7118-4e25-8801-ca53d0fd9d7f.txt +1 -0
  210. package/tests/config_test/media/67b817df-8c2f-4fe5-ba38-6090b5658943.txt +1 -0
  211. package/tests/config_test/media/67f8c8a6-8aa3-4d0f-bcf6-bec8c5a6726a.txt +1 -0
  212. package/tests/config_test/media/6808c09c-a1a9-4eea-92d6-327957c599be.txt +1 -0
  213. package/tests/config_test/media/681f8ee3-0d7f-4d85-a593-0c1f5ceea9be.txt +1 -0
  214. package/tests/config_test/media/68ae942b-c728-4127-a057-dfd08edc1aee.txt +1 -0
  215. package/tests/config_test/media/6a405178-234d-4562-ab34-c554826476fc.txt +1 -0
  216. package/tests/config_test/media/6b801410-b1fb-43f6-935e-c7cb09fb0f5a.txt +1 -0
  217. package/tests/config_test/media/6bd41073-fa62-4c20-a896-8b1e5d2b8381.txt +1 -0
  218. package/tests/config_test/media/6ea9bf1d-780e-4fc2-987e-841038b791cd.txt +1 -0
  219. package/tests/config_test/media/6fa62bcc-859a-44eb-a85b-ed12b3aec3ae.txt +1 -0
  220. package/tests/config_test/media/70118801-66f3-4165-a0b2-8918e4d4bd15.txt +1 -0
  221. package/tests/config_test/media/70640e73-56dc-4880-af62-ad7530a1185d.txt +1 -0
  222. package/tests/config_test/media/7114e6d7-f285-48b3-80c9-ec3fb1c3233e.txt +1 -0
  223. package/tests/config_test/media/71997029-9398-4efb-9868-3025b6de861a.txt +1 -0
  224. package/tests/config_test/media/725cb5f7-8410-4b7a-8427-90b213cea9d6.txt +1 -0
  225. package/tests/config_test/media/727960af-4454-4aa2-b479-c88398ca2c01.txt +1 -0
  226. package/tests/config_test/media/763e2702-7677-48b0-89be-30f8caf56667.txt +1 -0
  227. package/tests/config_test/media/7682d7aa-6622-4ae1-bdfc-bb5134cf92d9.txt +1 -0
  228. package/tests/config_test/media/773d6a45-2316-41da-9973-1395727ffc1f.txt +1 -0
  229. package/tests/config_test/media/783cdda1-9913-4ab0-aba6-56a4c22e2b61.txt +1 -0
  230. package/tests/config_test/media/78becb97-76f6-4fd1-976d-ab3d5e4b21c2.txt +1 -0
  231. package/tests/config_test/media/78cb1409-965a-44ea-b42b-0363db4d2ebd.txt +1 -0
  232. package/tests/config_test/media/79f9864e-b5d5-4c8d-bb66-749f5b49877f.txt +1 -0
  233. package/tests/config_test/media/7b2928b9-4fd3-46c7-8b78-f8d1118c605b.txt +1 -0
  234. package/tests/config_test/media/7b5aead0-b20b-4719-88aa-3dd070d53e4d.txt +1 -0
  235. package/tests/config_test/media/7c1a82c9-391d-40fb-a6f3-d79468fcd45f.txt +1 -0
  236. package/tests/config_test/media/7f1aefd7-7c6b-4b29-9f71-a85d800d63eb.txt +1 -0
  237. package/tests/config_test/media/7fe1aa1b-3e92-4f1b-a77d-bf69601ba162.txt +1 -0
  238. package/tests/config_test/media/802ca8c0-8898-446d-aeca-59d0cce3eea5.txt +1 -0
  239. package/tests/config_test/media/8034e1cc-a82a-4e65-9019-ecf53a212c9e.txt +1 -0
  240. package/tests/config_test/media/80828d5a-916c-412b-aa23-eccdf3ce4078.txt +1 -0
  241. package/tests/config_test/media/81a6ec1c-49c5-490b-afe8-bd47a3c3b1e7.txt +1 -0
  242. package/tests/config_test/media/82827b46-f1f4-4b2a-bd5a-4a83e6b5cc12.txt +1 -0
  243. package/tests/config_test/media/82f7163d-c5a6-44fe-b06a-b1863c553af4.txt +1 -0
  244. package/tests/config_test/media/83141a3e-3f8b-456a-83f1-b9b4ada167f0.txt +1 -0
  245. package/tests/config_test/media/837397e7-63f9-4cba-8b10-51d565e00341.txt +1 -0
  246. package/tests/config_test/media/8440b86e-2036-46ef-affe-e052ae1e232f.txt +1 -0
  247. package/tests/config_test/media/8729c33a-8f9d-496c-8090-42947d3bd4c7.txt +1 -0
  248. package/tests/config_test/media/874e1047-3429-443a-868d-4ce453c3a525.txt +1 -0
  249. package/tests/config_test/media/8770cffa-58f5-4c15-869a-687c77529f81.txt +1 -0
  250. package/tests/config_test/media/87c977c0-4375-4527-abc1-6223c71e8756.txt +1 -0
  251. package/tests/config_test/media/889e72cc-7e19-40ef-9d5b-1e501f3b48c7.txt +1 -0
  252. package/tests/config_test/media/88c89c9b-755e-43f9-9ac6-c01df1e83dfb.txt +1 -0
  253. package/tests/config_test/media/894ee8b5-d527-40e2-a7e1-475d9f07c2aa.txt +1 -0
  254. package/tests/config_test/media/89ec8a46-a4bf-4462-8f6d-c132016af9e1.txt +1 -0
  255. package/tests/config_test/media/8b2bee47-1673-4cd9-a8d5-033ef092b93e.txt +1 -0
  256. package/tests/config_test/media/8c362262-34ff-4707-ab5f-c334034083ee.txt +1 -0
  257. package/tests/config_test/media/8c458967-085b-4750-91e6-3ea391147bc7.txt +1 -0
  258. package/tests/config_test/media/8c5b0560-fc62-47a5-b480-a93120ca7bc4.txt +1 -0
  259. package/tests/config_test/media/8ce076d6-e809-4355-97ab-96104b51b939.txt +1 -0
  260. package/tests/config_test/media/8d60f276-8a2d-48e2-934b-63ef82f03d0f.txt +1 -0
  261. package/tests/config_test/media/8d889db9-f6b8-4ccb-864c-d10d1a54f7e9.txt +1 -0
  262. package/tests/config_test/media/8df0284b-c43f-4c32-a4e1-7dbe2c8c80f0.txt +1 -0
  263. package/tests/config_test/media/8e583c0b-1e2e-4b51-b104-1382e81f69d9.txt +1 -0
  264. package/tests/config_test/media/8f57d7e8-0f26-4719-b4d1-37896da3f579.txt +1 -0
  265. package/tests/config_test/media/9070fc55-481f-44c9-96f2-62f7c0a08814.txt +1 -0
  266. package/tests/config_test/media/93743c64-b60e-4521-9774-4d3beffd4465.txt +1 -0
  267. package/tests/config_test/media/939c6b06-b95d-4de6-bdaa-6f33cbe1fc1e.txt +1 -0
  268. package/tests/config_test/media/94ac4fc1-ba54-43de-b283-a7fa05eb3921.txt +1 -0
  269. package/tests/config_test/media/95093a2d-81d2-46d7-a817-7ab507cc2454.txt +1 -0
  270. package/tests/config_test/media/9628850e-c8d3-44da-b3b4-b27e00ba0e05.txt +1 -0
  271. package/tests/config_test/media/965e4782-3120-41c1-a398-23b38a342d95.txt +1 -0
  272. package/tests/config_test/media/97216f64-db92-4fa8-a239-5a115e3293a0.txt +1 -0
  273. package/tests/config_test/media/97b54a41-ec05-498e-9c61-6ec20f34a331.txt +1 -0
  274. package/tests/config_test/media/97c15c9a-13b4-49f1-b9ea-708c92756b95.txt +1 -0
  275. package/tests/config_test/media/97e45e1c-d03b-4a17-bb6f-ea8601e7fdf4.txt +1 -0
  276. package/tests/config_test/media/98faca9f-2686-4338-a1c2-d1920cce2fc0.txt +1 -0
  277. package/tests/config_test/media/997016d6-6832-4c09-9f8d-949dba5f4f8e.txt +1 -0
  278. package/tests/config_test/media/99ce7c2e-d4a3-49d0-9251-9c62d28288f5.txt +1 -0
  279. package/tests/config_test/media/9a9940a6-78b9-4978-98a6-914a171406c3.txt +1 -0
  280. package/tests/config_test/media/9ade4d45-452f-4a3f-ba4f-d9a08da80dab.txt +1 -0
  281. package/tests/config_test/media/9aff7e30-1809-4021-8ab1-e9a04068ad15.txt +1 -0
  282. package/tests/config_test/media/9b6b83df-1ee4-48f2-a3b0-aee0723378fc.txt +1 -0
  283. package/tests/config_test/media/9bbf50e1-c19d-4cc4-a366-0dcc234f003f.txt +1 -0
  284. package/tests/config_test/media/9ce9bc18-89eb-4a6f-832d-a4380111ebfa.txt +1 -0
  285. package/tests/config_test/media/9d7e647b-f1a9-44a7-bb9d-5ad7ac545ed9.txt +1 -0
  286. package/tests/config_test/media/9e141207-cb69-47c7-a80a-9096886b0f4e.txt +1 -0
  287. package/tests/config_test/media/9e58e7cc-04bb-48d0-9af1-9fd7c80d46be.txt +1 -0
  288. package/tests/config_test/media/9f1f6f42-70f0-404e-89e4-31588f235108.txt +1 -0
  289. package/tests/config_test/media/9f3e0022-deb0-44a2-b47c-fd4880fb2fa6.txt +1 -0
  290. package/tests/config_test/media/a07a6a4e-25c7-4f91-acdc-411e676bae99.txt +1 -0
  291. package/tests/config_test/media/a08ef99a-7cff-4224-985f-aa7cf292c6c3.txt +1 -0
  292. package/tests/config_test/media/a0c4ef94-eb1d-4b7f-b636-62ad6914a69c.txt +1 -0
  293. package/tests/config_test/media/a170f562-2b00-4662-85d7-7c43f9f67e0c.txt +1 -0
  294. package/tests/config_test/media/a32bb27b-7772-4373-ada7-890d9315256f.txt +1 -0
  295. package/tests/config_test/media/a36c31b9-f5c1-43a9-b448-34a380990d3f.txt +1 -0
  296. package/tests/config_test/media/a3831984-3f77-4bac-af70-5a7de6ce5424.txt +1 -0
  297. package/tests/config_test/media/a4f1f023-6135-44da-b580-c1d024cd3f47.txt +1 -0
  298. package/tests/config_test/media/a6227af7-2710-47be-ab45-25f497cec39f.txt +1 -0
  299. package/tests/config_test/media/a64baf32-bd1e-4353-bdf8-74cc3672639f.txt +1 -0
  300. package/tests/config_test/media/a67f5ac1-9645-4f28-a221-c3466b6ba865.txt +1 -0
  301. package/tests/config_test/media/a7f8e5a7-0c0e-48fb-b323-743b121fc091.txt +1 -0
  302. package/tests/config_test/media/a969343e-857b-49b1-a311-0030e0cc57cd.txt +1 -0
  303. package/tests/config_test/media/a9bc7241-7413-4113-8baf-784af73b110d.txt +1 -0
  304. package/tests/config_test/media/aa5b6ba2-76cf-4ca2-90b8-8f83cb23687e.txt +1 -0
  305. package/tests/config_test/media/aa5f29d2-3c13-4a15-ac68-b28964f80a1d.txt +1 -0
  306. package/tests/config_test/media/aaa97926-1d6f-4f5a-9af8-e68584797d23.txt +1 -0
  307. package/tests/config_test/media/ac98c0da-b830-4ec8-9ab6-d8e72a6d0bf2.txt +1 -0
  308. package/tests/config_test/media/af2dda92-1ed0-4b00-a786-f0f7516d4b2b.txt +1 -0
  309. package/tests/config_test/media/b0327e27-0733-4f08-b728-8dca3eae7526.txt +1 -0
  310. package/tests/config_test/media/b23fc74b-403b-49d6-810b-5c3dc71f48de.txt +1 -0
  311. package/tests/config_test/media/b2aa3fbb-ef3f-423b-b7a9-1863aba35bdd.txt +1 -0
  312. package/tests/config_test/media/b38675e5-1ecf-4967-88ef-9f60cce1bb89.txt +1 -0
  313. package/tests/config_test/media/b45c1951-b045-4762-a9fa-8d346617c1b5.txt +1 -0
  314. package/tests/config_test/media/b5359b92-46ea-4ebc-b6bc-102ef03ac5f5.txt +1 -0
  315. package/tests/config_test/media/b5d5aa47-fb92-48a6-9bd5-e394dc7b5212.txt +1 -0
  316. package/tests/config_test/media/b6bba0b4-d9fe-431b-8836-ef41bcd890fe.txt +1 -0
  317. package/tests/config_test/media/b72f4de8-5071-4314-a8e9-0adc7ce98fb8.txt +1 -0
  318. package/tests/config_test/media/b792506c-a05f-4b33-8934-83a7f2b1ebdd.txt +1 -0
  319. package/tests/config_test/media/b7e0e1bd-5e0f-44cc-89b9-55e67c368dce.txt +1 -0
  320. package/tests/config_test/media/b7ec24ac-6967-441e-9cb9-533daa7b443e.txt +1 -0
  321. package/tests/config_test/media/b86f2242-9e7c-4434-ac3d-e8fe868ab758.txt +1 -0
  322. package/tests/config_test/media/b8aa1cbb-05fe-4564-bfad-96a5243eec54.txt +1 -0
  323. package/tests/config_test/media/b8c54323-7977-4626-9412-66116a40fe42.txt +1 -0
  324. package/tests/config_test/media/ba3387a6-c5cd-4677-bddd-a399c6f648a3.txt +1 -0
  325. package/tests/config_test/media/ba70f293-7a40-4a5d-9e60-9d9c3d1fd2c0.txt +1 -0
  326. package/tests/config_test/media/ba7cad62-385b-494c-9688-b008fbae10c9.txt +1 -0
  327. package/tests/config_test/media/bb07c0ca-4b9f-4888-9109-95087951d2a6.txt +1 -0
  328. package/tests/config_test/media/bcf860eb-13b6-44b7-9a58-f2b6422a4fb0.txt +1 -0
  329. package/tests/config_test/media/bd8a019f-c9fd-4289-bc38-cc222a247ba8.txt +1 -0
  330. package/tests/config_test/media/bda18b4f-b4f3-4095-8b9b-8d715945ded1.txt +1 -0
  331. package/tests/config_test/media/bf3e4228-17f4-40d6-9d23-7ba79a333be5.txt +1 -0
  332. package/tests/config_test/media/bfa2fe67-34fe-466c-b807-bea2ddfb0141.txt +1 -0
  333. package/tests/config_test/media/c15ecf6e-6167-42ad-ba24-161216dbabfb.txt +1 -0
  334. package/tests/config_test/media/c17436fb-113d-425e-b59b-cafe93e3418e.txt +1 -0
  335. package/tests/config_test/media/c22154ee-3f66-4996-8ed7-df6120806040.txt +1 -0
  336. package/tests/config_test/media/c2c47ffe-50a1-46f4-bace-d66008c3ce7b.txt +1 -0
  337. package/tests/config_test/media/c4e0c0bf-f9b0-4fec-8fbf-292d8d2fe254.txt +1 -0
  338. package/tests/config_test/media/c56803d2-29bc-4359-8cb4-ea9574a47b2d.txt +1 -0
  339. package/tests/config_test/media/c607d0ee-1641-47e1-83d5-66e9e4bed857.txt +1 -0
  340. package/tests/config_test/media/c62769c5-d469-4499-bf09-97f752a65397.txt +1 -0
  341. package/tests/config_test/media/c667bac7-c161-4f89-b311-9975dcac5865.txt +1 -0
  342. package/tests/config_test/media/c7485a24-95f6-45e7-90f2-6a4716e8971e.txt +1 -0
  343. package/tests/config_test/media/c80b124d-579a-4f7b-9743-5428be624edf.txt +1 -0
  344. package/tests/config_test/media/c8f6e757-0252-4ac6-a439-14a5cd406e16.txt +1 -0
  345. package/tests/config_test/media/c94c9c39-24e1-4ce3-94bd-e32db7052a9d.txt +1 -0
  346. package/tests/config_test/media/ca950ac2-312d-472f-ae0f-7604edd6eae8.txt +1 -0
  347. package/tests/config_test/media/cc1ffb29-8d6f-47cd-9efd-f38832045570.txt +1 -0
  348. package/tests/config_test/media/cf42859e-23b6-4f7b-9b00-4928b0fc33fd.txt +1 -0
  349. package/tests/config_test/media/d000b20e-fd2c-4d07-bb8c-fc48541fe420.txt +1 -0
  350. package/tests/config_test/media/d191b4ba-365d-4346-96c6-7ab4f27a163d.txt +1 -0
  351. package/tests/config_test/media/d2739585-5101-44b5-8dd1-bbb09a104978.txt +1 -0
  352. package/tests/config_test/media/d31d2bf6-bdb1-4de2-9942-3ab83e857a52.txt +1 -0
  353. package/tests/config_test/media/d4027635-8e25-4cf5-a3dc-73a826c5045c.txt +1 -0
  354. package/tests/config_test/media/d476077e-d4e9-42e8-a7db-ded7f075d88d.txt +1 -0
  355. package/tests/config_test/media/d4fe0fae-942f-4966-ab76-64ba34352269.txt +1 -0
  356. package/tests/config_test/media/d551ace3-b4bb-4306-ad17-4873cdbfa5f5.txt +1 -0
  357. package/tests/config_test/media/d5aabdf7-472d-4268-b542-ddce2b25c70e.txt +1 -0
  358. package/tests/config_test/media/d6279202-c868-4058-947d-d9e44acd26cc.txt +1 -0
  359. package/tests/config_test/media/d62ecbb0-df04-449c-91fa-5d60f96c717f.txt +1 -0
  360. package/tests/config_test/media/d6309af6-add5-4d3d-9596-92a3c1b785b8.txt +1 -0
  361. package/tests/config_test/media/d6f419fc-2441-4170-8967-1d3f2a232869.txt +1 -0
  362. package/tests/config_test/media/d78e034e-51e4-47e7-802b-2fb9ca7aeeb0.txt +1 -0
  363. package/tests/config_test/media/d7a5dea2-b545-4b1f-9f25-0ca31bfa9ba9.txt +1 -0
  364. package/tests/config_test/media/d7eff0e2-7e17-4364-995a-13608df42af3.txt +1 -0
  365. package/tests/config_test/media/d89b187c-f4e0-45c2-8622-8f6c05b3f8f8.txt +1 -0
  366. package/tests/config_test/media/d8e4f769-79a3-4577-ae6f-e21b6c373661.txt +1 -0
  367. package/tests/config_test/media/d9266efc-e275-4daf-bb58-a7d224649ac5.txt +1 -0
  368. package/tests/config_test/media/db04add1-1f89-4657-a897-4779001bd6cc.txt +1 -0
  369. package/tests/config_test/media/dc709e83-06c7-4371-95f4-c4982d094c7b.txt +1 -0
  370. package/tests/config_test/media/de3812df-b579-4203-98b1-7ee8821680a4.txt +1 -0
  371. package/tests/config_test/media/df1a21db-e3e1-4670-b909-da77c591486e.txt +1 -0
  372. package/tests/config_test/media/e033a02b-3a38-4b6f-8873-b121cc0cbcad.txt +1 -0
  373. package/tests/config_test/media/e13e2632-4aaf-4a79-b6b4-ef1f81028346.txt +1 -0
  374. package/tests/config_test/media/e19633b3-1ab1-4f18-86cd-e421633e96af.txt +1 -0
  375. package/tests/config_test/media/e1dc9b89-9563-4937-b529-43cd55f82a98.txt +1 -0
  376. package/tests/config_test/media/e37f9c75-0571-4336-b7a6-d431e295ba92.txt +1 -0
  377. package/tests/config_test/media/e3fb83b1-53ed-470d-b9f4-015f98c6a128.txt +1 -0
  378. package/tests/config_test/media/e6c964da-ab48-4779-9706-0ae9ab5f22bb.txt +1 -0
  379. package/tests/config_test/media/e732131f-d7e2-4969-9f0f-10672281405b.txt +1 -0
  380. package/tests/config_test/media/e73f5320-f030-43ae-9efe-002aeb6e0522.txt +1 -0
  381. package/tests/config_test/media/e98267b9-553f-4cd2-9277-2bee037b7003.txt +1 -0
  382. package/tests/config_test/media/ea3c4ac0-f63d-4a91-b015-345851856564.txt +1 -0
  383. package/tests/config_test/media/eacee16f-a2db-4d60-a36b-9b60ea2be330.txt +1 -0
  384. package/tests/config_test/media/eba1b05a-52aa-4f00-92f6-3d556ca2f366.txt +1 -0
  385. package/tests/config_test/media/ebf6e54b-0d1e-4d87-b206-34fa81c66dbb.txt +1 -0
  386. package/tests/config_test/media/ecbf0894-6d76-4141-875d-7691de63a8f7.txt +1 -0
  387. package/tests/config_test/media/ece7a87a-3490-4ac6-adaf-289b1e427325.txt +1 -0
  388. package/tests/config_test/media/ed59c963-3449-4431-8440-2cba7defdcae.txt +1 -0
  389. package/tests/config_test/media/eda09368-348b-4531-a062-a8aafbf9cb8a.txt +1 -0
  390. package/tests/config_test/media/edd1c2b2-179f-4d44-9ac0-72b4fe16c6f2.txt +1 -0
  391. package/tests/config_test/media/ee4e9f39-779e-4084-b696-f39abe74f545.txt +1 -0
  392. package/tests/config_test/media/ef08a195-fcc6-452f-b81e-9d4e97231327.txt +1 -0
  393. package/tests/config_test/media/ef518fee-57a4-47d3-bbb5-aef9b166ca49.txt +1 -0
  394. package/tests/config_test/media/efd77ad3-0e00-448f-a01d-4f363ad5c0b1.txt +1 -0
  395. package/tests/config_test/media/f0c18f54-1095-4787-891b-63c82ba6c153.txt +1 -0
  396. package/tests/config_test/media/f18dca67-521a-4e7f-8064-e6daa08ea3bc.txt +1 -0
  397. package/tests/config_test/media/f19a32ab-f345-4bcb-be01-58e62ade0285.txt +1 -0
  398. package/tests/config_test/media/f29ef9e1-4f84-4bb7-93ce-3693d7cd01f7.txt +1 -0
  399. package/tests/config_test/media/f2cd3857-386e-4d43-b5ee-cb54d1e7fa3c.txt +1 -0
  400. package/tests/config_test/media/f3c8b431-4b3a-43b9-a277-233daea240bb.txt +1 -0
  401. package/tests/config_test/media/f7344305-dde1-4b33-989e-b64b18447e2a.txt +1 -0
  402. package/tests/config_test/media/f829cdfe-a118-4751-a49f-565a617c2b99.txt +1 -0
  403. package/tests/config_test/media/f89206aa-0728-4215-a1df-c1f4315079b5.txt +1 -0
  404. package/tests/config_test/media/f89bb977-c022-471d-9972-d9417484f025.txt +1 -0
  405. package/tests/config_test/media/f960f026-724a-4630-b3ea-48d7ad60b022.txt +1 -0
  406. package/tests/config_test/media/fa343cd4-aca6-482b-9395-f221148fd0d8.txt +1 -0
  407. package/tests/config_test/media/fa802dcc-614e-4027-95fe-ce4f0da61bc9.txt +1 -0
  408. package/tests/config_test/media/ff1a47f0-9c4b-4c88-b0dc-b28d20a83509.txt +1 -0
  409. package/tests/config_test/media/ff8aa3b0-5c4d-4d39-be53-4e28e9ee02e7.txt +1 -0
  410. package/tests/config_test/media/ffb998c5-c98b-4442-b8ef-187bdc7e4c73.txt +1 -0
  411. package/tests/config_test/media/ffc43791-7d7b-4e13-a2ea-3bb952457e7f.txt +1 -0
  412. package/tests/config_test/package-lock.json +727 -688
  413. package/tests/config_test/package.json +2 -2
  414. package/tests/config_test/tsconfig.json +1 -1
  415. package/tests/isomorphic_queries.js +43 -1
  416. package/tests/isomorphic_queries.ts +33 -2
  417. package/tests/server/DBoGenerated.d.ts +192 -0
  418. package/tests/server/index.js +64 -26
  419. package/tests/server/index.ts +64 -26
  420. package/tests/server/init.sql +22 -7
  421. package/tests/server/media/35d7e3d7-64d3-4d4b-b564-5e810ca3671f.txt +1 -0
  422. package/tests/server/media/70ca7114-d6bc-4551-8170-cd7dcdff11dd.txt +1 -0
  423. package/tests/server/media/9e19f591-edc8-4ad7-ac4f-96c3078cb8ed.txt +1 -0
  424. package/tests/server/package-lock.json +166 -535
  425. package/tests/server/package.json +2 -2
  426. package/tests/config_test2/package-lock.json +0 -1999
@@ -17,6 +17,17 @@ exports.isPlainObject = exports.DboBuilder = exports.TableHandler = exports.View
17
17
  const Bluebird = require("bluebird");
18
18
  const pgPromise = require("pg-promise");
19
19
  const prostgles_types_1 = require("prostgles-types");
20
+ // <TXKey extends string = "tx">
21
+ // & {
22
+ // [K in TXKey]: TX
23
+ // };
24
+ // const d: DbHandler = { } as any;
25
+ // d.
26
+ // export type DbHandlerTX = { [key: string]: TX } | DbHandler;
27
+ // export type DbHandlerTX = DbHandler
28
+ // & Partial<{
29
+ // [key: string]: TX
30
+ // }>
20
31
  const utils_1 = require("./utils");
21
32
  const QueryBuilder_1 = require("./QueryBuilder");
22
33
  const Prostgles_1 = require("./Prostgles");
@@ -112,6 +123,7 @@ class ViewHandler {
112
123
  this.tsColumnDefs = [];
113
124
  this.is_view = true;
114
125
  this.filterDef = "";
126
+ this.is_media = false;
115
127
  if (!db || !tableOrViewInfo)
116
128
  throw "";
117
129
  this.db = db;
@@ -176,7 +188,10 @@ class ViewHandler {
176
188
  /* Safely test publish rules */
177
189
  if (fields) {
178
190
  try {
179
- this.parseFieldFilter(fields);
191
+ const _fields = this.parseFieldFilter(fields);
192
+ if (this.is_media && rule === "insert" && !_fields.includes("id")) {
193
+ throw "Must allow id insert for media table";
194
+ }
180
195
  }
181
196
  catch (e) {
182
197
  throw ` issue with publish.${this.name}.${rule}.fields: \nVALUE: ` + JSON.stringify(fields, null, 2) + "\nERROR: " + JSON.stringify(e, null, 2);
@@ -223,7 +238,7 @@ class ViewHandler {
223
238
  return { query, toOne: false };
224
239
  }
225
240
  getJoins(source, target, path) {
226
- let result = [];
241
+ let paths = [];
227
242
  if (!this.joinPaths)
228
243
  throw "Joins dissallowed";
229
244
  if (path && !path.length)
@@ -243,7 +258,7 @@ class ViewHandler {
243
258
  if (!jp || !this.joinPaths.find(j => path ? j.path.join() === path.join() : j.t1 === source && j.t2 === target))
244
259
  throw `Joining ${source} <-...-> ${target} dissallowed or missing`;
245
260
  /* Make the join chain info excluding root table */
246
- result = (path || jp.path).slice(1).map((t2, i, arr) => {
261
+ paths = (path || jp.path).slice(1).map((t2, i, arr) => {
247
262
  const t1 = i === 0 ? source : arr[i - 1];
248
263
  if (!this.joins)
249
264
  this.joins = JSON.parse(JSON.stringify(this.dboBuilder.joins));
@@ -271,34 +286,91 @@ class ViewHandler {
271
286
  on
272
287
  };
273
288
  });
274
- return result;
289
+ let expectOne = false;
290
+ paths.map(({ source, target, on }, i) => {
291
+ // if(expectOne && on.length === 1){
292
+ // const sourceCol = on[0][1];
293
+ // const targetCol = on[0][0];
294
+ // const sCol = this.dboBuilder.dbo[source].columns.find(c => c.name === sourceCol)
295
+ // const tCol = this.dboBuilder.dbo[target].columns.find(c => c.name === targetCol)
296
+ // console.log({ sourceCol, targetCol, sCol, source, tCol, target, on})
297
+ // expectOne = sCol.is_pkey && tCol.is_pkey
298
+ // }
299
+ });
300
+ return {
301
+ paths,
302
+ expectOne
303
+ };
275
304
  }
276
305
  checkFilter(filter) {
277
306
  if (filter === null || filter && !isPojoObject(filter))
278
307
  throw `invalid filter -> ${JSON.stringify(filter)} \nExpecting: undefined | {} | { field_name: "value" } | { field: { $gt: 22 } } ... `;
279
308
  }
280
- getInfo(tableRules, localParams) {
309
+ getInfo(param1, param2, param3, tableRules, localParams) {
310
+ var _a, _b, _c, _e, _f, _g, _h, _j, _k, _l, _m;
281
311
  return __awaiter(this, void 0, void 0, function* () {
282
312
  const p = this.getValidatedRules(tableRules, localParams);
283
313
  if (!p.select.getInfo)
284
314
  throw "Not allowed";
315
+ let has_media = undefined;
316
+ const mediaTable = (_c = (_b = (_a = this.dboBuilder.prostgles) === null || _a === void 0 ? void 0 : _a.opts) === null || _b === void 0 ? void 0 : _b.fileTable) === null || _c === void 0 ? void 0 : _c.tableName;
317
+ if (!this.is_media && mediaTable) {
318
+ if ((_h = (_g = (_f = (_e = this.dboBuilder.prostgles) === null || _e === void 0 ? void 0 : _e.opts) === null || _f === void 0 ? void 0 : _f.fileTable) === null || _g === void 0 ? void 0 : _g.referencedTables) === null || _h === void 0 ? void 0 : _h[this.name]) {
319
+ has_media = (_m = (_l = (_k = (_j = this.dboBuilder.prostgles) === null || _j === void 0 ? void 0 : _j.opts) === null || _k === void 0 ? void 0 : _k.fileTable) === null || _l === void 0 ? void 0 : _l.referencedTables) === null || _m === void 0 ? void 0 : _m[this.name];
320
+ }
321
+ else {
322
+ const jp = this.dboBuilder.joinPaths.find(jp => jp.t1 === this.name && jp.t2 === mediaTable);
323
+ if (jp && jp.path.length < 4) {
324
+ yield Promise.all(jp.path.map((tableName) => __awaiter(this, void 0, void 0, function* () {
325
+ const cols = (yield this.dboBuilder.dbo[tableName].getColumns()).filter(c => { var _a; return jp.path.includes((_a = c.references) === null || _a === void 0 ? void 0 : _a.ftable); });
326
+ if (cols.length && has_media !== "many") {
327
+ if (cols.find(c => !c.is_pkey)) {
328
+ has_media = "many";
329
+ }
330
+ else {
331
+ has_media = "one";
332
+ }
333
+ }
334
+ })));
335
+ }
336
+ }
337
+ }
285
338
  return {
286
339
  oid: this.tableOrViewInfo.oid,
287
340
  comment: this.tableOrViewInfo.comment,
341
+ is_media: this.is_media,
342
+ has_media,
288
343
  };
289
344
  });
290
345
  }
291
346
  // TODO: fix renamed table trigger problem
292
- getColumns(tableRules, localParams) {
347
+ getColumns(lang, param2, param3, tableRules, localParams) {
293
348
  return __awaiter(this, void 0, void 0, function* () {
294
349
  try {
295
350
  const p = this.getValidatedRules(tableRules, localParams);
296
351
  if (!p.select.getColumns)
297
352
  throw "Not allowed";
298
353
  // console.log("getColumns", this.name, this.columns.map(c => c.name))
299
- return this.columns.map(c => (Object.assign(Object.assign({}, c), { tsDataType: postgresToTsType(c.udt_name), insert: Boolean(p.insert && p.insert.fields && p.insert.fields.includes(c.name)), select: Boolean(p.select && p.select.fields && p.select.fields.includes(c.name)), filter: Boolean(p.select && p.select.filterFields && p.select.filterFields.includes(c.name)), update: Boolean(p.update && p.update.fields && p.update.fields.includes(c.name)), delete: Boolean(p.delete && p.delete.filterFields && p.delete.filterFields.includes(c.name)) })));
354
+ let _lang = lang;
355
+ return this.columns.map(c => {
356
+ var _a, _b, _c, _e, _f, _g, _h, _j;
357
+ let label = c.comment || c.name;
358
+ const iConf = (_f = (_e = (_c = (_b = (_a = this.dboBuilder.prostgles) === null || _a === void 0 ? void 0 : _a.opts) === null || _b === void 0 ? void 0 : _b.i18n) === null || _c === void 0 ? void 0 : _c.column_labels) === null || _e === void 0 ? void 0 : _e[this.name]) === null || _f === void 0 ? void 0 : _f[c.name];
359
+ const fallbackLang = (_j = (_h = (_g = this.dboBuilder.prostgles) === null || _g === void 0 ? void 0 : _g.opts) === null || _h === void 0 ? void 0 : _h.i18n) === null || _j === void 0 ? void 0 : _j.fallbackLang;
360
+ _lang = _lang || fallbackLang;
361
+ if ((lang || fallbackLang) && iConf) {
362
+ let langLabel;
363
+ if (lang)
364
+ langLabel = iConf[lang];
365
+ if (!langLabel && fallbackLang)
366
+ langLabel = iConf[fallbackLang];
367
+ label = langLabel || label;
368
+ }
369
+ return Object.assign(Object.assign({}, c), { label, tsDataType: postgresToTsType(c.udt_name), insert: Boolean(p.insert && p.insert.fields && p.insert.fields.includes(c.name)), select: Boolean(p.select && p.select.fields && p.select.fields.includes(c.name)), filter: Boolean(p.select && p.select.filterFields && p.select.filterFields.includes(c.name)), update: Boolean(p.update && p.update.fields && p.update.fields.includes(c.name)), delete: Boolean(p.delete && p.delete.filterFields && p.delete.filterFields.includes(c.name)) });
370
+ });
300
371
  }
301
372
  catch (e) {
373
+ console.trace(e);
302
374
  throw "Something went wrong in " + `db.${this.name}.getColumns()`;
303
375
  }
304
376
  });
@@ -430,9 +502,10 @@ class ViewHandler {
430
502
  return __awaiter(this, void 0, void 0, function* () {
431
503
  try {
432
504
  filter = filter || {};
505
+ const allowedReturnTypes = ["row", "value", "values"];
433
506
  const { returnType } = selectParams || {};
434
- if (returnType && !["row", "value", "values"].includes(returnType)) {
435
- throw `returnType (${returnType}) can only be ${["row", "values"].join(" OR ")}`;
507
+ if (returnType && !allowedReturnTypes.includes(returnType)) {
508
+ throw `returnType (${returnType}) can only be ${allowedReturnTypes.join(" OR ")}`;
436
509
  }
437
510
  const { testRule = false, returnQuery = false } = localParams || {};
438
511
  if (testRule)
@@ -460,7 +533,6 @@ class ViewHandler {
460
533
  throw ` invalid publish.${this.name}.select.maxLimit -> expecting integer but got ` + maxLimit;
461
534
  }
462
535
  let q = yield QueryBuilder_1.getNewQuery(this, filter, selectParams, param3_unused, tableRules, localParams), _query = QueryBuilder_1.makeQuery(this, q, undefined, undefined, selectParams);
463
- // console.log(_query)
464
536
  if (testRule) {
465
537
  try {
466
538
  yield this.db.any("EXPLAIN " + _query);
@@ -471,7 +543,6 @@ class ViewHandler {
471
543
  throw `INTERNAL ERROR: Publish config is not valid for publish.${this.name}.select `;
472
544
  }
473
545
  }
474
- // console.log(_query);
475
546
  if (returnQuery)
476
547
  return _query;
477
548
  if (["row", "value"].includes(returnType)) {
@@ -650,24 +721,26 @@ class ViewHandler {
650
721
  }
651
722
  const makeTableChain = (finalFilter) => {
652
723
  let joinPaths = [];
724
+ let expectOne = true;
653
725
  tables.map((t2, depth) => {
654
726
  let t1 = depth ? tables[depth - 1] : thisTable;
655
727
  let exactPaths = [t1, t2];
656
728
  if (!depth && eConfig.shortestJoin)
657
729
  exactPaths = undefined;
658
- joinPaths = joinPaths.concat(this.getJoins(t1, t2, exactPaths));
730
+ const jinf = this.getJoins(t1, t2, exactPaths);
731
+ expectOne = expectOne && jinf.expectOne;
732
+ joinPaths = joinPaths.concat(jinf.paths);
659
733
  });
660
- let r = makeJoin(joinPaths, 0);
661
- // console.log(r);
734
+ let r = makeJoin({ paths: joinPaths, expectOne }, 0);
662
735
  return r;
663
- function makeJoin(paths, ji) {
736
+ function makeJoin(joinInfo, ji) {
737
+ const { paths } = joinInfo;
664
738
  const jp = paths[ji];
665
739
  let prevTable = ji ? paths[ji - 1].table : jp.source;
666
740
  let table = paths[ji].table;
667
741
  let tableAlias = prostgles_types_1.asName(ji < paths.length - 1 ? `jd${ji}` : table);
668
742
  let prevTableAlias = prostgles_types_1.asName(ji ? `jd${ji - 1}` : thisTable);
669
743
  let cond = `${jp.on.map(([c1, c2]) => `${prevTableAlias}.${prostgles_types_1.asName(c1)} = ${tableAlias}.${prostgles_types_1.asName(c2)}`).join("\n AND ")}`;
670
- // console.log(join, cond);
671
744
  let j = `SELECT 1 \n` +
672
745
  `FROM ${prostgles_types_1.asName(table)} ${tableAlias} \n` +
673
746
  `WHERE ${cond} \n`; //
@@ -677,7 +750,7 @@ class ViewHandler {
677
750
  }
678
751
  const indent = (a, b) => a;
679
752
  if (ji < paths.length - 1) {
680
- j += `AND ${makeJoin(paths, ji + 1)} \n`;
753
+ j += `AND ${makeJoin(joinInfo, ji + 1)} \n`;
681
754
  }
682
755
  j = indent(j, ji + 1);
683
756
  let res = `EXISTS ( \n` +
@@ -688,9 +761,9 @@ class ViewHandler {
688
761
  };
689
762
  let t2Rules = undefined, forcedFilter, filterFields, tableAlias;
690
763
  /* Check if allowed to view data */
691
- if (localParams && localParams.socket && this.dboBuilder.publishParser) {
764
+ if (localParams && (localParams.socket || localParams.httpReq) && this.dboBuilder.publishParser) {
692
765
  /* Need to think about joining through dissallowed tables */
693
- t2Rules = yield this.dboBuilder.publishParser.getValidatedRequestRuleWusr({ tableName: t2, command: "find", socket: localParams.socket });
766
+ t2Rules = yield this.dboBuilder.publishParser.getValidatedRequestRuleWusr({ tableName: t2, command: "find", localParams });
694
767
  if (!t2Rules || !t2Rules.select)
695
768
  throw "Dissallowed";
696
769
  ({ forcedFilter, filterFields } = t2Rules.select);
@@ -704,14 +777,13 @@ class ViewHandler {
704
777
  addKeywords: false,
705
778
  tableAlias,
706
779
  localParams,
707
- tableRule: tableRules
780
+ tableRule: t2Rules //tableRules
708
781
  }));
709
782
  }
710
783
  catch (err) {
711
784
  // console.trace(err)
712
785
  throw "Issue with preparing $exists query for table " + t2 + "\n->" + JSON.stringify(err);
713
786
  }
714
- // console.log(f2, finalWhere);
715
787
  if (!isJoined) {
716
788
  res = ` EXISTS (SELECT 1 \nFROM ${prostgles_types_1.asName(t2)} \n${finalWhere ? `WHERE ${finalWhere}` : ""}) `;
717
789
  }
@@ -806,7 +878,6 @@ class ViewHandler {
806
878
  return false;
807
879
  });
808
880
  }
809
- // console.log(allowedSelect);
810
881
  /* Add remaining allowed fields */
811
882
  allowedSelect = allowedSelect.concat(p.allColumns.filter(c => allowed_colnames.includes(c.name) &&
812
883
  !allowedSelect.find(s => s.alias === c.name)).map(f => ({
@@ -841,14 +912,12 @@ class ViewHandler {
841
912
  pgp: exports.pgp,
842
913
  select: allowedSelect
843
914
  });
844
- // console.log({ f, q })
845
915
  let templates = [q].filter(q => q);
846
916
  if (existsCond)
847
917
  templates.push(existsCond);
848
918
  templates = templates.concat(computedColConditions);
849
919
  return templates.sort() /* sorted to ensure duplicate subscription channels are not created due to different condition order */
850
920
  .join(" AND \n");
851
- // console.log(templates)
852
921
  // return templates; //pgp.as.format(template, data);
853
922
  /*
854
923
  SHOULD CHECK DATA TYPES TO AVOID "No operator matches the given data type" error
@@ -937,7 +1006,6 @@ class ViewHandler {
937
1006
  if (!_ob || !_ob.length)
938
1007
  return "";
939
1008
  const validatedAggAliases = select.filter(s => s.type !== "joinedColumn").map(s => s.alias);
940
- // console.log({ validatedAggAliases })
941
1009
  let bad_param = _ob.find(({ key }) => !(validatedAggAliases || []).includes(key) &&
942
1010
  (!column_names.includes(key) ||
943
1011
  (allowedFields.length && !allowedFields.includes(key))));
@@ -1138,8 +1206,8 @@ function isPojoObject(obj) {
1138
1206
  class TableHandler extends ViewHandler {
1139
1207
  constructor(db, tableOrViewInfo, pubSubManager, dboBuilder, t, joinPaths) {
1140
1208
  super(db, tableOrViewInfo, pubSubManager, dboBuilder, t, joinPaths);
1141
- this.prepareReturning = (returning, allowedFields, tableAlias) => __awaiter(this, void 0, void 0, function* () {
1142
- let result = "";
1209
+ this.prepareReturning = (returning, allowedFields) => __awaiter(this, void 0, void 0, function* () {
1210
+ let result = [];
1143
1211
  if (returning) {
1144
1212
  let sBuilder = new QueryBuilder_1.SelectItemBuilder({
1145
1213
  allFields: this.column_names.slice(0),
@@ -1149,9 +1217,7 @@ class TableHandler extends ViewHandler {
1149
1217
  isView: this.is_view
1150
1218
  });
1151
1219
  yield sBuilder.parseUserSelect(returning);
1152
- if (sBuilder.select.length)
1153
- result = "RETURNING ";
1154
- result += sBuilder.select.map(s => s.getQuery() + " AS " + QueryBuilder_1.asNameAlias(s.alias, tableAlias)).join(", ");
1220
+ return sBuilder.select;
1155
1221
  }
1156
1222
  return result;
1157
1223
  });
@@ -1163,6 +1229,7 @@ class TableHandler extends ViewHandler {
1163
1229
  batching: null
1164
1230
  };
1165
1231
  this.is_view = false;
1232
+ this.is_media = dboBuilder.prostgles.isMedia(this.name);
1166
1233
  }
1167
1234
  /* TO DO: Maybe finished query batching */
1168
1235
  willBatch(query) {
@@ -1252,7 +1319,6 @@ class TableHandler extends ViewHandler {
1252
1319
  const queries = yield Promise.all(data.map(([filter, data]) => __awaiter(this, void 0, void 0, function* () {
1253
1320
  return yield this.update(filter, data, Object.assign(Object.assign({}, (params || {})), { returning: undefined }), tableRules, Object.assign(Object.assign({}, (localParams || {})), { returnQuery: true }));
1254
1321
  })));
1255
- // console.log(queries)
1256
1322
  return this.db.tx(t => {
1257
1323
  const _queries = queries.map(q => t.none(q));
1258
1324
  return t.batch(_queries);
@@ -1324,13 +1390,11 @@ class TableHandler extends ViewHandler {
1324
1390
  throw "Unrecognised params in textPatch field: " + unrecProps.join(", ");
1325
1391
  patchedTextData.push(Object.assign(Object.assign({}, d), { fieldName: c.name }));
1326
1392
  }
1327
- // console.log("update2", patchedTextData);
1328
1393
  });
1329
1394
  if (patchedTextData && patchedTextData.length) {
1330
1395
  if (tableRules && !tableRules.select)
1331
1396
  throw "Select needs to be permitted to patch data";
1332
1397
  const rows = yield this.find(filter, { select: patchedTextData.reduce((a, v) => (Object.assign(Object.assign({}, a), { [v.fieldName]: 1 })), {}) }, null, tableRules);
1333
- // console.log(rows)
1334
1398
  if (rows.length !== 1) {
1335
1399
  throw "Cannot patch data within a filter that affects more/less than 1 row";
1336
1400
  }
@@ -1357,9 +1421,8 @@ class TableHandler extends ViewHandler {
1357
1421
  let qType = "none";
1358
1422
  if (returning) {
1359
1423
  qType = multi ? "any" : "one";
1360
- query += yield this.prepareReturning(returning, this.parseFieldFilter(returningFields));
1424
+ query += this.makeReturnQuery(yield this.prepareReturning(returning, this.parseFieldFilter(returningFields)));
1361
1425
  }
1362
- // console.log(query)
1363
1426
  if (returnQuery)
1364
1427
  return query;
1365
1428
  if (this.t) {
@@ -1389,29 +1452,221 @@ class TableHandler extends ViewHandler {
1389
1452
  // let cs = new pgp.helpers.ColumnSet(this.columnSet.columns.filter(c => dataKeys.includes(c.name)), { table: this.name });
1390
1453
  return { data, allowedCols: this.columns.filter(c => dataKeys.includes(c.name)).map(c => c.name) };
1391
1454
  }
1392
- insert(data, param2, param3_unused, tableRules, localParams = null) {
1455
+ insertDataParse(data, param2, param3_unused, tableRules, _localParams = null) {
1456
+ var _a, _b;
1457
+ return __awaiter(this, void 0, void 0, function* () {
1458
+ const localParams = _localParams || {};
1459
+ const { dbTX } = localParams;
1460
+ const isMultiInsert = Array.isArray(data);
1461
+ const getExtraKeys = d => Object.keys(d).filter(k => !this.columns.find(c => c.name === k));
1462
+ /* Nested insert is not allowed for the file table */
1463
+ const isNestedInsert = this.is_media ? false : (Array.isArray(data) ? data : [data]).some(d => getExtraKeys(d).length);
1464
+ /**
1465
+ * Make sure nested insert uses a transaction
1466
+ */
1467
+ if (isNestedInsert && (!this.t || !dbTX)) {
1468
+ return {
1469
+ insertResult: yield this.dboBuilder.getTX((dbTX) => dbTX[this.name].insert(data, param2, param3_unused, tableRules, Object.assign({ dbTX }, localParams)))
1470
+ };
1471
+ }
1472
+ const preValidate = (_a = tableRules === null || tableRules === void 0 ? void 0 : tableRules.insert) === null || _a === void 0 ? void 0 : _a.preValidate, validate = (_b = tableRules === null || tableRules === void 0 ? void 0 : tableRules.insert) === null || _b === void 0 ? void 0 : _b.validate;
1473
+ let _data = yield Promise.all((Array.isArray(data) ? data : [data]).map((row) => __awaiter(this, void 0, void 0, function* () {
1474
+ var _c, _e;
1475
+ if (preValidate) {
1476
+ row = yield preValidate(row);
1477
+ }
1478
+ const dataKeys = Object.keys(row);
1479
+ const extraKeys = getExtraKeys(row);
1480
+ /* Upload file then continue insert */
1481
+ if (this.is_media) {
1482
+ if (!((_c = this.dboBuilder.prostgles) === null || _c === void 0 ? void 0 : _c.fileManager))
1483
+ throw "fileManager not set up";
1484
+ const { data, name } = row;
1485
+ if (dataKeys.length !== 2)
1486
+ throw "Expecting only two properties: { name: string; data: File }";
1487
+ // if(!Buffer.isBuffer(data)) throw "data is not of type Buffer"
1488
+ if (!data)
1489
+ throw "data not provided";
1490
+ if (typeof name !== "string") {
1491
+ throw "name is not of type string";
1492
+ }
1493
+ const media_id = (yield this.db.oneOrNone("SELECT gen_random_uuid() as name")).name;
1494
+ const type = yield this.dboBuilder.prostgles.fileManager.getMIME(data, name);
1495
+ const media_name = `${media_id}.${type.ext}`;
1496
+ let media = {
1497
+ id: media_id,
1498
+ name: media_name,
1499
+ original_name: name,
1500
+ extension: type.ext,
1501
+ content_type: type.mime
1502
+ };
1503
+ if (validate) {
1504
+ media = yield validate(media);
1505
+ }
1506
+ const _media = yield this.dboBuilder.prostgles.fileManager.uploadAsMedia({
1507
+ item: {
1508
+ data,
1509
+ name: media.name,
1510
+ content_type: media.content_type
1511
+ },
1512
+ });
1513
+ return Object.assign(Object.assign({}, media), _media);
1514
+ /* Potentially a nested join */
1515
+ }
1516
+ else if (extraKeys.length) {
1517
+ /* Ensure we're using the same transaction */
1518
+ const _this = this.t ? this : dbTX[this.name];
1519
+ let rootData = PubSubManager_1.filterObj(data, null, extraKeys);
1520
+ let insertedChildren;
1521
+ let targetTableRules;
1522
+ if (validate) {
1523
+ rootData = yield validate(rootData);
1524
+ }
1525
+ const fullRootResult = yield _this.insert(rootData, { returning: "*" }, null, tableRules, localParams);
1526
+ let returnData;
1527
+ const returning = param2 === null || param2 === void 0 ? void 0 : param2.returning;
1528
+ if (returning) {
1529
+ returnData = {};
1530
+ const returningItems = yield this.prepareReturning(returning, this.parseFieldFilter((_e = tableRules === null || tableRules === void 0 ? void 0 : tableRules.insert) === null || _e === void 0 ? void 0 : _e.returningFields));
1531
+ returningItems.filter(s => s.selected).map(rs => {
1532
+ returnData[rs.alias] = fullRootResult[rs.alias];
1533
+ });
1534
+ }
1535
+ yield Promise.all(extraKeys.map((targetTable) => __awaiter(this, void 0, void 0, function* () {
1536
+ var _f;
1537
+ const childDataItems = Array.isArray(row[targetTable]) ? row[targetTable] : [row[targetTable]];
1538
+ // console.log({childDataItems})
1539
+ /* Must be allowed to insert into media table */
1540
+ const canInsert = (tbl) => __awaiter(this, void 0, void 0, function* () {
1541
+ const childRules = yield this.dboBuilder.publishParser.getValidatedRequestRuleWusr({ tableName: tbl, command: "insert", localParams });
1542
+ if (!childRules || !childRules.insert)
1543
+ throw "Dissallowed nested insert into table " + childRules;
1544
+ return childRules;
1545
+ });
1546
+ // console.log(JSON.stringify(this.dboBuilder.joinPaths, null, 2))
1547
+ const jp = this.dboBuilder.joinPaths.find(jp => jp.t1 === this.name && jp.t2 === targetTable);
1548
+ if (!jp)
1549
+ throw `Could not find a valid table for the nested data { ${targetTable} } `;
1550
+ const childInsert = (cdata, tableName) => __awaiter(this, void 0, void 0, function* () {
1551
+ // console.log("childInsert", {data, tableName})
1552
+ if (!cdata || !dbTX[tableName] || !("insert" in dbTX[tableName]))
1553
+ throw "childInsertErr: Child table handler missing for: " + tableName;
1554
+ const tableRules = yield canInsert(tableName);
1555
+ return Promise.all((Array.isArray(cdata) ? cdata : [cdata])
1556
+ .map(m => dbTX[tableName]
1557
+ .insert(m, { returning: "*" }, null, tableRules, localParams)
1558
+ .catch(e => {
1559
+ console.trace({ childInsertErr: e });
1560
+ return Promise.reject({ childInsertErr: e });
1561
+ })));
1562
+ });
1563
+ const { path } = jp;
1564
+ const [tbl1, tbl2, tbl3] = path;
1565
+ targetTableRules = yield canInsert(targetTable); // tbl3
1566
+ const cols2 = this.dboBuilder.dbo[tbl2].columns || [];
1567
+ if (!this.dboBuilder.dbo[tbl2])
1568
+ throw "Invalid/disallowed table: " + tbl2;
1569
+ const colsRefT1 = cols2 === null || cols2 === void 0 ? void 0 : cols2.filter(c => { var _a, _b; return ((_a = c.references) === null || _a === void 0 ? void 0 : _a.cols.length) === 1 && ((_b = c.references) === null || _b === void 0 ? void 0 : _b.ftable) === tbl1; });
1570
+ if (!path.length) {
1571
+ throw "Nested inserts join path not found for " + [this.name, targetTable];
1572
+ }
1573
+ else if (path.length === 2) {
1574
+ if (targetTable !== tbl2)
1575
+ throw "Did not expect this";
1576
+ if (!colsRefT1.length)
1577
+ throw `Target table ${tbl2} does not reference any columns from the root table ${this.name}. Cannot do nested insert`;
1578
+ // console.log(JSON.stringify(colsRefT1, null, 2))
1579
+ insertedChildren = yield childInsert(childDataItems.map(d => {
1580
+ let result = Object.assign({}, d);
1581
+ colsRefT1.map(col => {
1582
+ result[col.references.cols[0]] = fullRootResult[col.references.fcols[0]];
1583
+ });
1584
+ return result;
1585
+ }), targetTable);
1586
+ }
1587
+ else if (path.length === 3) {
1588
+ if (targetTable !== tbl3)
1589
+ throw "Did not expect this";
1590
+ const colsRefT3 = cols2 === null || cols2 === void 0 ? void 0 : cols2.filter(c => { var _a, _b; return ((_a = c.references) === null || _a === void 0 ? void 0 : _a.cols.length) === 1 && ((_b = c.references) === null || _b === void 0 ? void 0 : _b.ftable) === tbl3; });
1591
+ if (!colsRefT1.length || !colsRefT3.length)
1592
+ throw "Incorrectly referenced or missing columns for nested insert";
1593
+ if (targetTable !== this.dboBuilder.prostgles.fileManager.tableName) {
1594
+ throw "Only media allowed to have nested inserts more than 2 tables apart";
1595
+ }
1596
+ /* We expect tbl2 to have only 2 columns (media_id and foreign_id) */
1597
+ if (!cols2 || cols2.find(c => !["media_id", "foreign_id"].includes(c.name))) {
1598
+ throw "Second joining table not of expected format";
1599
+ }
1600
+ insertedChildren = yield childInsert(childDataItems, targetTable);
1601
+ /* Insert in key_lookup table */
1602
+ yield Promise.all(insertedChildren.map((t3Child) => __awaiter(this, void 0, void 0, function* () {
1603
+ let tbl2Row = {};
1604
+ colsRefT3.map(col => {
1605
+ tbl2Row[col.name] = t3Child[col.references.fcols[0]];
1606
+ });
1607
+ colsRefT1.map(col => {
1608
+ tbl2Row[col.name] = fullRootResult[col.references.fcols[0]];
1609
+ });
1610
+ // console.log({ rootResult, tbl2Row, t3Child, colsRefT3, colsRefT1, t: this.t?.ctx?.start });
1611
+ yield childInsert(tbl2Row, tbl2); //.then(() => {});
1612
+ })));
1613
+ }
1614
+ else
1615
+ throw "Unexpected path for Nested inserts";
1616
+ /* Return also the nested inserted data */
1617
+ if (targetTableRules && (insertedChildren === null || insertedChildren === void 0 ? void 0 : insertedChildren.length) && returning) {
1618
+ const targetTableHandler = dbTX[targetTable];
1619
+ const targetReturning = yield targetTableHandler.prepareReturning("*", targetTableHandler.parseFieldFilter((_f = targetTableRules === null || targetTableRules === void 0 ? void 0 : targetTableRules.insert) === null || _f === void 0 ? void 0 : _f.returningFields));
1620
+ let clientTargetInserts = insertedChildren.map(d => {
1621
+ let _d = Object.assign({}, d);
1622
+ let res = {};
1623
+ targetReturning.map(r => {
1624
+ res[r.alias] = _d[r.alias];
1625
+ });
1626
+ return res;
1627
+ });
1628
+ returnData[targetTable] = clientTargetInserts.length === 1 ? clientTargetInserts[0] : clientTargetInserts;
1629
+ }
1630
+ })));
1631
+ return returnData;
1632
+ }
1633
+ return row;
1634
+ })));
1635
+ const result = isMultiInsert ? _data : _data[0];
1636
+ let res = isNestedInsert ?
1637
+ { insertResult: result } :
1638
+ { data: result };
1639
+ return res;
1640
+ });
1641
+ }
1642
+ insert(rowOrRows, param2, param3_unused, tableRules, _localParams = null) {
1643
+ var _a;
1393
1644
  return __awaiter(this, void 0, void 0, function* () {
1645
+ const localParams = _localParams || {};
1646
+ const { dbTX } = localParams;
1394
1647
  try {
1395
1648
  const { returning, onConflictDoNothing, fixIssues = false } = param2 || {};
1396
1649
  const { testRule = false, returnQuery = false } = localParams || {};
1397
- let returningFields, forcedData, validate, preValidate, fields;
1650
+ let returningFields, forcedData,
1651
+ // validate: TableRule["insert"]["validate"],
1652
+ // preValidate: any,
1653
+ fields;
1398
1654
  if (tableRules) {
1399
1655
  if (!tableRules.insert)
1400
1656
  throw "insert rules missing for " + this.name;
1401
1657
  returningFields = tableRules.insert.returningFields;
1402
1658
  forcedData = tableRules.insert.forcedData;
1403
1659
  fields = tableRules.insert.fields;
1404
- validate = tableRules.insert.validate;
1405
- preValidate = tableRules.insert.preValidate;
1660
+ // validate = tableRules.insert.validate;
1661
+ // preValidate = tableRules.insert.preValidate;
1406
1662
  /* If no returning fields specified then take select fields as returning */
1407
1663
  if (!returningFields)
1408
- returningFields = utils_1.get(tableRules, "select.fields");
1409
- if (!returningFields)
1410
- returningFields = utils_1.get(tableRules, "insert.fields");
1664
+ returningFields = utils_1.get(tableRules, "select.fields") || utils_1.get(tableRules, "insert.fields");
1411
1665
  if (!fields)
1412
1666
  throw ` invalid insert rule for ${this.name} -> fields missing `;
1413
1667
  /* Safely test publish rules */
1414
1668
  if (testRule) {
1669
+ // if(this.is_media && tableRules.insert.preValidate) throw "Media table cannot have a preValidate. It already is used internally by prostgles for file upload";
1415
1670
  yield this.validateViewRules(fields, null, returningFields, null, "insert");
1416
1671
  if (forcedData) {
1417
1672
  const keys = Object.keys(forcedData);
@@ -1432,21 +1687,23 @@ class TableHandler extends ViewHandler {
1432
1687
  if (typeof onConflictDoNothing === "boolean" && onConflictDoNothing) {
1433
1688
  conflict_query = " ON CONFLICT DO NOTHING ";
1434
1689
  }
1435
- if (!data)
1436
- data = {}; //throw "Provide data in param1";
1437
- let returningSelect = yield this.prepareReturning(returning, this.parseFieldFilter(returningFields));
1690
+ if (param2) {
1691
+ const good_params = ["returning", "multi", "onConflictDoNothing", "fixIssues"];
1692
+ const bad_params = Object.keys(param2).filter(k => !good_params.includes(k));
1693
+ if (bad_params && bad_params.length)
1694
+ throw "Invalid params: " + bad_params.join(", ") + " \n Expecting: " + good_params.join(", ");
1695
+ }
1696
+ if (!rowOrRows)
1697
+ rowOrRows = {}; //throw "Provide data in param1";
1698
+ let returningSelect = this.makeReturnQuery(yield this.prepareReturning(returning, this.parseFieldFilter(returningFields)));
1438
1699
  const makeQuery = (_row, isOne = false) => __awaiter(this, void 0, void 0, function* () {
1439
1700
  let row = Object.assign({}, _row);
1440
- if (preValidate) {
1441
- row = yield preValidate(row);
1442
- }
1443
- if (!isPojoObject(row))
1701
+ if (!isPojoObject(row)) {
1702
+ console.trace(row);
1444
1703
  throw "\ninvalid insert data provided -> " + JSON.stringify(row);
1704
+ }
1445
1705
  const { data, allowedCols } = this.validateNewData({ row, forcedData, allowedFields: fields, tableRules, fixIssues });
1446
1706
  let _data = Object.assign({}, data);
1447
- if (validate) {
1448
- _data = yield validate(_data);
1449
- }
1450
1707
  let insertQ = "";
1451
1708
  if (!Object.keys(_data).length)
1452
1709
  insertQ = `INSERT INTO ${prostgles_types_1.asName(this.name)} DEFAULT VALUES `;
@@ -1454,21 +1711,21 @@ class TableHandler extends ViewHandler {
1454
1711
  insertQ = this.colSet.getInsertQuery(_data, allowedCols); // pgp.helpers.insert(_data, columnSet);
1455
1712
  return insertQ + conflict_query + returningSelect;
1456
1713
  });
1457
- if (param2) {
1458
- const good_params = ["returning", "multi", "onConflictDoNothing", "fixIssues"];
1459
- const bad_params = Object.keys(param2).filter(k => !good_params.includes(k));
1460
- if (bad_params && bad_params.length)
1461
- throw "Invalid params: " + bad_params.join(", ") + " \n Expecting: " + good_params.join(", ");
1462
- }
1463
1714
  let query = "";
1464
1715
  let queryType = "none";
1716
+ /**
1717
+ * If media it will: upload file and continue insert
1718
+ * If nested insert it will: make separate inserts and not continue main insert
1719
+ */
1720
+ const { data, insertResult } = yield this.insertDataParse(rowOrRows, param2, param3_unused, tableRules, localParams);
1721
+ if (insertResult)
1722
+ return insertResult;
1465
1723
  if (Array.isArray(data)) {
1466
1724
  // if(returning) throw "Sorry but [returning] is dissalowed for multi insert";
1467
1725
  let queries = yield Promise.all(data.map((p) => __awaiter(this, void 0, void 0, function* () {
1468
1726
  const q = yield makeQuery(p);
1469
1727
  return q;
1470
1728
  })));
1471
- // console.log(queries)
1472
1729
  query = exports.pgp.helpers.concat(queries);
1473
1730
  if (returning)
1474
1731
  queryType = "many";
@@ -1478,12 +1735,18 @@ class TableHandler extends ViewHandler {
1478
1735
  if (returning)
1479
1736
  queryType = "one";
1480
1737
  }
1481
- // console.log(query);
1482
1738
  if (returnQuery)
1483
1739
  return query;
1484
- if (this.t)
1485
- return this.t[queryType](query).catch(err => makeErr(err, localParams));
1486
- return this.db.tx(t => t[queryType](query)).catch(err => makeErr(err, localParams));
1740
+ let result;
1741
+ // console.log(this.t?.ctx?.start, "insert in " + this.name, data);
1742
+ const tx = ((_a = dbTX === null || dbTX === void 0 ? void 0 : dbTX[this.name]) === null || _a === void 0 ? void 0 : _a.t) || this.t;
1743
+ if (tx) {
1744
+ result = tx[queryType](query).catch(err => makeErr(err, localParams));
1745
+ }
1746
+ else {
1747
+ result = this.db.tx(t => t[queryType](query)).catch(err => makeErr(err, localParams));
1748
+ }
1749
+ return result;
1487
1750
  }
1488
1751
  catch (e) {
1489
1752
  if (localParams && localParams.testRule)
@@ -1493,6 +1756,11 @@ class TableHandler extends ViewHandler {
1493
1756
  });
1494
1757
  }
1495
1758
  ;
1759
+ makeReturnQuery(items) {
1760
+ if (items === null || items === void 0 ? void 0 : items.length)
1761
+ return " RETURNING " + items.map(s => s.getQuery() + " AS " + prostgles_types_1.asName(s.alias)).join(", ");
1762
+ return "";
1763
+ }
1496
1764
  delete(filter, params, param3_unused, table_rules, localParams = null) {
1497
1765
  return __awaiter(this, void 0, void 0, function* () {
1498
1766
  try {
@@ -1540,7 +1808,7 @@ class TableHandler extends ViewHandler {
1540
1808
  if (!returningFields) {
1541
1809
  throw "Returning dissallowed";
1542
1810
  }
1543
- _query += yield this.prepareReturning(returning, this.parseFieldFilter(returningFields));
1811
+ _query += this.makeReturnQuery(yield this.prepareReturning(returning, this.parseFieldFilter(returningFields)));
1544
1812
  }
1545
1813
  if (returnQuery)
1546
1814
  return _query;
@@ -1573,20 +1841,14 @@ class TableHandler extends ViewHandler {
1573
1841
  return tblH.find(filter, { select: "", limit: 1 }, {}, table_rules, localParams)
1574
1842
  .then(exists => {
1575
1843
  if (exists && exists.length) {
1576
- // console.log(filter, "exists");
1577
1844
  return tblH.update(filter, newData, params, table_rules, localParams);
1578
1845
  }
1579
1846
  else {
1580
- // console.log(filter, "existnts")
1581
1847
  return tblH.insert(Object.assign(Object.assign({}, newData), filter), params, null, table_rules, localParams);
1582
1848
  }
1583
1849
  });
1584
1850
  });
1585
1851
  }
1586
- // .catch(existnts => {
1587
- // console.log(filter, "existnts")
1588
- // return this.insert({ ...filter, ...newData}, params);
1589
- // });
1590
1852
  }
1591
1853
  catch (e) {
1592
1854
  if (localParams && localParams.testRule)
@@ -1690,7 +1952,7 @@ class DboBuilder {
1690
1952
  this.schema = "public";
1691
1953
  this.init = () => __awaiter(this, void 0, void 0, function* () {
1692
1954
  let onSchemaChange;
1693
- if (this.prostgles.watchSchema) {
1955
+ if (this.prostgles.opts.watchSchema) {
1694
1956
  onSchemaChange = (event) => {
1695
1957
  this.prostgles.onSchemaChange(event);
1696
1958
  };
@@ -1713,14 +1975,20 @@ class DboBuilder {
1713
1975
  }
1714
1976
  else {
1715
1977
  txDB[tov.name] = new TableHandler(this.db, tov, this.pubSubManager, this, t, this.joinPaths);
1978
+ /**
1979
+ * Pass only the transaction object to ensure consistency
1980
+ */
1981
+ // txDB[tov.name] = new ViewHandler(t, tov, this.pubSubManager, this, t, this.joinPaths);
1982
+ // } else {
1983
+ // txDB[tov.name] = new TableHandler(t as any, tov, this.pubSubManager, this, t, this.joinPaths);
1716
1984
  }
1717
1985
  });
1718
- return dbTX(txDB);
1986
+ return dbTX(txDB, t);
1719
1987
  });
1720
1988
  };
1721
1989
  this.prostgles = prostgles;
1722
1990
  this.db = this.prostgles.db;
1723
- this.schema = this.prostgles.schema || "public";
1991
+ this.schema = this.prostgles.opts.schema || "public";
1724
1992
  this.dbo = {};
1725
1993
  // this.joins = this.prostgles.joins;
1726
1994
  }
@@ -1732,14 +2000,19 @@ class DboBuilder {
1732
2000
  }
1733
2001
  parseJoins() {
1734
2002
  return __awaiter(this, void 0, void 0, function* () {
1735
- if (this.prostgles.joins) {
1736
- let _joins = yield this.prostgles.joins;
2003
+ if (this.prostgles.opts.joins) {
2004
+ let _joins = yield this.prostgles.opts.joins;
2005
+ let inferredJoins = yield getInferredJoins(this.db, this.prostgles.opts.schema);
1737
2006
  if (typeof _joins === "string" && _joins === "inferred") {
1738
- _joins = yield getInferredJoins(this.db, this.prostgles.schema);
2007
+ _joins = inferredJoins;
2008
+ /* If joins are specified then include inferred joins except the explicit tables */
2009
+ }
2010
+ else if (Array.isArray(_joins)) {
2011
+ const joinTables = _joins.map(j => j.tables).flat();
2012
+ _joins = _joins.concat(inferredJoins.filter(j => !j.tables.find(t => joinTables.includes(t))));
1739
2013
  }
1740
2014
  let joins = JSON.parse(JSON.stringify(_joins));
1741
2015
  this.joins = joins;
1742
- // console.log(joins);
1743
2016
  // Validate joins
1744
2017
  try {
1745
2018
  // 1 find duplicates
@@ -1805,9 +2078,6 @@ class DboBuilder {
1805
2078
  }
1806
2079
  });
1807
2080
  });
1808
- // console.log(this.joinPaths)
1809
- // console.log(888, this.prostgles.joins);
1810
- // console.log(this.joinGraph, findShortestPath(this.joinGraph, "colors", "drawings"));
1811
2081
  }
1812
2082
  return this.joinPaths;
1813
2083
  });
@@ -1832,8 +2102,14 @@ export type TxCB = {
1832
2102
  yield this.parseJoins();
1833
2103
  let joinTableNames = [];
1834
2104
  let allDataDefs = "";
2105
+ let i18nDef = "type DeepPartial<T> = { [P in keyof T]?: DeepPartial<T[P]>; }; \n";
2106
+ i18nDef += "export type I18N_DBO_CONFIG<LANG_IDS = { en: 1, fr: 1 }> = { \n";
2107
+ i18nDef += " fallbackLang: keyof LANG_IDS; \n";
2108
+ i18nDef += " column_labels?: DeepPartial<{ \n";
1835
2109
  this.tablesOrViews.map(tov => {
1836
- // console.log("dboInit", tov.name, tov.columns.map(c => c.name))
2110
+ i18nDef += ` ${JSON.stringify(tov.name)}: { \n`;
2111
+ i18nDef += ` [key in ${tov.columns.map(c => JSON.stringify(c.name)).join(" | ")}]: { [lang_id in keyof LANG_IDS]: string }; \n`;
2112
+ i18nDef += ` }; \n`;
1837
2113
  const filterKeywords = Object.values(this.prostgles.keywords);
1838
2114
  const $filterCol = tov.columns.find(c => filterKeywords.includes(c.name));
1839
2115
  if ($filterCol) {
@@ -1880,6 +2156,8 @@ export type TxCB = {
1880
2156
  }
1881
2157
  }
1882
2158
  });
2159
+ i18nDef += " }> \n";
2160
+ i18nDef += "} \n";
1883
2161
  let joinBuilderDef = "";
1884
2162
  if (joinTableNames.length) {
1885
2163
  joinBuilderDef += "export type JoinMakerTables = {\n";
@@ -1891,13 +2169,81 @@ export type TxCB = {
1891
2169
  this.dboDefinition += ` ${joinType}: JoinMakerTables;\n`;
1892
2170
  });
1893
2171
  }
1894
- if (this.prostgles.transactions) {
2172
+ if (this.prostgles.opts.transactions) {
1895
2173
  let txKey = "tx";
1896
- if (typeof this.prostgles.transactions === "string")
1897
- txKey = this.prostgles.transactions;
2174
+ if (typeof this.prostgles.opts.transactions === "string")
2175
+ txKey = this.prostgles.opts.transactions;
1898
2176
  this.dboDefinition += ` ${txKey}: (t: TxCB) => Promise<any | void> ;\n`;
1899
2177
  this.dbo[txKey] = (cb) => this.getTX(cb);
1900
2178
  }
2179
+ if (!this.dbo.sql) {
2180
+ let needType = true; // this.publishRawSQL && typeof this.publishRawSQL === "function";
2181
+ let DATA_TYPES = !needType ? [] : yield this.db.any("SELECT oid, typname FROM pg_type");
2182
+ let USER_TABLES = !needType ? [] : yield this.db.any("SELECT relid, relname FROM pg_catalog.pg_statio_user_tables");
2183
+ this.dbo.sql = (query, params, options, localParams) => __awaiter(this, void 0, void 0, function* () {
2184
+ var _a;
2185
+ const canRunSQL = (localParams) => __awaiter(this, void 0, void 0, function* () {
2186
+ if (!localParams)
2187
+ return true;
2188
+ const { socket } = localParams;
2189
+ const publishParams = yield this.prostgles.publishParser.getPublishParams({ socket });
2190
+ let res = yield this.prostgles.opts.publishRawSQL(publishParams);
2191
+ return Boolean(res && typeof res === "boolean" || res === "*");
2192
+ });
2193
+ if (!(yield canRunSQL(localParams)))
2194
+ throw "Not allowed to run SQL";
2195
+ const { returnType } = options || {};
2196
+ const { socket } = localParams || {};
2197
+ if (returnType === "noticeSubscription") {
2198
+ if (!socket)
2199
+ throw "Only allowed with client socket";
2200
+ return yield this.prostgles.dbEventsManager.addNotice(socket);
2201
+ }
2202
+ else if (returnType === "statement") {
2203
+ try {
2204
+ return exports.pgp.as.format(query, params);
2205
+ }
2206
+ catch (err) {
2207
+ throw err.toString();
2208
+ }
2209
+ }
2210
+ else if (this.db) {
2211
+ let qres = yield this.db.result(query, params);
2212
+ const { duration, fields, rows, command } = qres;
2213
+ if (command === "LISTEN") {
2214
+ if (!socket)
2215
+ throw "Only allowed with client socket";
2216
+ return yield this.prostgles.dbEventsManager.addNotify(query, socket);
2217
+ }
2218
+ else if (returnType === "rows") {
2219
+ return rows;
2220
+ }
2221
+ else if (returnType === "row") {
2222
+ return rows[0];
2223
+ }
2224
+ else if (returnType === "value") {
2225
+ return (_a = Object.values((rows === null || rows === void 0 ? void 0 : rows[0]) || {})) === null || _a === void 0 ? void 0 : _a[0];
2226
+ }
2227
+ else if (returnType === "values") {
2228
+ return rows.map(r => Object.values(r[0]));
2229
+ }
2230
+ else {
2231
+ if (fields && DATA_TYPES.length) {
2232
+ qres.fields = fields.map(f => {
2233
+ const dataType = DATA_TYPES.find(dt => +dt.oid === +f.dataTypeID), tableName = USER_TABLES.find(t => +t.relid === +f.tableID), { name } = f;
2234
+ return Object.assign(Object.assign(Object.assign({}, f), (dataType ? { dataType: dataType.typname } : {})), (tableName ? { tableName: tableName.relname } : {}));
2235
+ });
2236
+ }
2237
+ return qres;
2238
+ }
2239
+ }
2240
+ else
2241
+ console.error("db missing");
2242
+ });
2243
+ }
2244
+ else {
2245
+ console.warn(`Could not create dbo.sql handler because there is already a table named "sql"`);
2246
+ }
1901
2247
  this.dboDefinition += "};\n";
1902
2248
  this.tsTypesDefinition = [
1903
2249
  common_types,
@@ -1905,7 +2251,8 @@ export type TxCB = {
1905
2251
  allDataDefs,
1906
2252
  joinBuilderDef,
1907
2253
  `/* DBO Definition. Isomorphic */`,
1908
- this.dboDefinition
2254
+ this.dboDefinition,
2255
+ i18nDef,
1909
2256
  ].join("\n");
1910
2257
  return this.dbo;
1911
2258
  // let dbo = makeDBO(db, allTablesViews, pubSubManager, true);
@@ -2022,33 +2369,6 @@ function isPlainObject(o) {
2022
2369
  return Object(o) === o && Object.getPrototypeOf(o) === Object.prototype;
2023
2370
  }
2024
2371
  exports.isPlainObject = isPlainObject;
2025
- // export const _PG_strings = ['bpchar','char','varchar','text','citext','uuid','bytea','inet','time','timetz','interval','name'] as const;
2026
- // export const _PG_numbers = ['int2','int4','int8','float4','float8','numeric','money','oid'] as const;
2027
- // export const _PG_json = ['json', 'jsonb'] as const;
2028
- // export const _PG_bool = ['bool'] as const;
2029
- // export const _PG_date = ['date', 'timestamp', 'timestamptz'] as const;
2030
- // export const _PG_postgis = ['geometry'] as const;
2031
- // export type PG_COLUMN_UDT_DATA_TYPE =
2032
- // | typeof _PG_strings[number]
2033
- // | typeof _PG_numbers[number]
2034
- // | typeof _PG_json[number]
2035
- // | typeof _PG_bool[number]
2036
- // | typeof _PG_date[number]
2037
- // | typeof _PG_postgis[number];
2038
- // export const TS_PG_Types: { [key: string]: readonly string[]; } = {
2039
- // "string": _PG_strings,
2040
- // "number": _PG_numbers,
2041
- // "boolean": _PG_bool,
2042
- // "Object": _PG_json,
2043
- // "Date": _PG_date,
2044
- // "Array<number>": _PG_numbers.map(s => `_${s}`),
2045
- // "Array<boolean>": _PG_bool.map(s => `_${s}`),
2046
- // "Array<string>": _PG_strings.map(s => `_${s}`),
2047
- // "Array<Object>": _PG_json.map(s => `_${s}`),
2048
- // "Array<Date>": _PG_date.map(s => `_${s}`),
2049
- // "any": [],
2050
- // } as const;
2051
- // export type TS_COLUMN_DATA_TYPES = keyof typeof TS_PG_Types;
2052
2372
  function postgresToTsType(udt_data_type) {
2053
2373
  return Object.keys(prostgles_types_1.TS_PG_Types).find(k => {
2054
2374
  return prostgles_types_1.TS_PG_Types[k].includes(udt_data_type) || !prostgles_types_1.TS_PG_Types[k].length;
@@ -2349,7 +2669,6 @@ function getInferredJoins(db, schema = "public") {
2349
2669
  });
2350
2670
  }
2351
2671
  });
2352
- // console.log(joins);
2353
2672
  return joins;
2354
2673
  });
2355
2674
  }