drizzle-orm 0.10.25 → 0.10.28

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 (363) hide show
  1. package/.eslintrc +28 -0
  2. package/.tslintignore +1 -0
  3. package/CHANGELOG.md +202 -0
  4. package/README.md +439 -0
  5. package/dist/builders/aggregators/abstractAggregator.d.ts +11 -0
  6. package/dist/builders/aggregators/abstractAggregator.js +35 -0
  7. package/dist/builders/aggregators/deleteAggregator.d.ts +16 -0
  8. package/dist/builders/aggregators/deleteAggregator.js +42 -0
  9. package/dist/builders/aggregators/insertAggregator.d.ts +22 -0
  10. package/dist/builders/aggregators/insertAggregator.js +106 -0
  11. package/dist/builders/aggregators/selectAggregator.d.ts +39 -0
  12. package/dist/builders/aggregators/selectAggregator.js +143 -0
  13. package/dist/builders/aggregators/updateAggregator.d.ts +19 -0
  14. package/dist/builders/aggregators/updateAggregator.js +50 -0
  15. package/dist/builders/highLvlBuilders/abstractRequestBuilder.d.ts +27 -0
  16. package/dist/builders/highLvlBuilders/abstractRequestBuilder.js +32 -0
  17. package/dist/builders/highLvlBuilders/deleteRequestBuilder.d.ts +19 -0
  18. package/dist/builders/highLvlBuilders/deleteRequestBuilder.js +61 -0
  19. package/dist/builders/highLvlBuilders/insertRequestBuilder.d.ts +20 -0
  20. package/dist/builders/highLvlBuilders/insertRequestBuilder.js +73 -0
  21. package/dist/builders/highLvlBuilders/order.d.ts +5 -0
  22. package/dist/builders/highLvlBuilders/order.js +8 -0
  23. package/dist/builders/highLvlBuilders/selectRequestBuilder.d.ts +47 -0
  24. package/dist/builders/highLvlBuilders/selectRequestBuilder.js +128 -0
  25. package/dist/builders/highLvlBuilders/updateRequestBuilder.d.ts +22 -0
  26. package/dist/builders/highLvlBuilders/updateRequestBuilder.js +80 -0
  27. package/dist/builders/index.d.ts +18 -0
  28. package/dist/builders/index.js +54 -0
  29. package/dist/builders/joinBuilders/builders/abstractJoinBuilder.d.ts +40 -0
  30. package/dist/builders/joinBuilders/builders/abstractJoinBuilder.js +78 -0
  31. package/dist/builders/joinBuilders/builders/selectWithFiveJoins.d.ts +35 -0
  32. package/dist/builders/joinBuilders/builders/selectWithFiveJoins.js +45 -0
  33. package/dist/builders/joinBuilders/builders/selectWithFourJoins.d.ts +55 -0
  34. package/dist/builders/joinBuilders/builders/selectWithFourJoins.js +78 -0
  35. package/dist/builders/joinBuilders/builders/selectWithJoin.d.ts +49 -0
  36. package/dist/builders/joinBuilders/builders/selectWithJoin.js +64 -0
  37. package/dist/builders/joinBuilders/builders/selectWithThreeJoins.d.ts +53 -0
  38. package/dist/builders/joinBuilders/builders/selectWithThreeJoins.js +73 -0
  39. package/dist/builders/joinBuilders/builders/selectWithTwoJoins.d.ts +51 -0
  40. package/dist/builders/joinBuilders/builders/selectWithTwoJoins.js +68 -0
  41. package/dist/builders/joinBuilders/join.d.ts +23 -0
  42. package/dist/builders/joinBuilders/join.js +28 -0
  43. package/dist/builders/joinBuilders/joinWith.d.ts +14 -0
  44. package/dist/builders/joinBuilders/joinWith.js +14 -0
  45. package/dist/builders/joinBuilders/responses/selectResponseFiveJoins.d.ts +20 -0
  46. package/dist/builders/joinBuilders/responses/selectResponseFiveJoins.js +35 -0
  47. package/dist/builders/joinBuilders/responses/selectResponseFourJoins.d.ts +19 -0
  48. package/dist/builders/joinBuilders/responses/selectResponseFourJoins.js +34 -0
  49. package/dist/builders/joinBuilders/responses/selectResponseThreeJoins.d.ts +18 -0
  50. package/dist/builders/joinBuilders/responses/selectResponseThreeJoins.js +33 -0
  51. package/dist/builders/joinBuilders/responses/selectResponseTwoJoins.d.ts +17 -0
  52. package/dist/builders/joinBuilders/responses/selectResponseTwoJoins.js +32 -0
  53. package/dist/builders/joinBuilders/responses/selectResponseWithJoin.d.ts +16 -0
  54. package/dist/builders/joinBuilders/responses/selectResponseWithJoin.js +31 -0
  55. package/dist/builders/joinBuilders/static.d.ts +5 -0
  56. package/dist/builders/joinBuilders/static.js +9 -0
  57. package/dist/builders/lowLvlBuilders/alter.d.ts +0 -0
  58. package/dist/builders/lowLvlBuilders/alter.js +1 -0
  59. package/dist/builders/lowLvlBuilders/create.d.ts +12 -0
  60. package/dist/builders/lowLvlBuilders/create.js +100 -0
  61. package/dist/builders/lowLvlBuilders/delets/delete.d.ts +5 -0
  62. package/dist/builders/lowLvlBuilders/delets/delete.js +15 -0
  63. package/dist/builders/lowLvlBuilders/delets/deleteFilter.d.ts +11 -0
  64. package/dist/builders/lowLvlBuilders/delets/deleteFilter.js +13 -0
  65. package/dist/builders/lowLvlBuilders/delets/deleteFrom.d.ts +12 -0
  66. package/dist/builders/lowLvlBuilders/delets/deleteFrom.js +14 -0
  67. package/dist/builders/lowLvlBuilders/inserts/insert.d.ts +5 -0
  68. package/dist/builders/lowLvlBuilders/inserts/insert.js +15 -0
  69. package/dist/builders/lowLvlBuilders/inserts/insertInto.d.ts +13 -0
  70. package/dist/builders/lowLvlBuilders/inserts/insertInto.js +16 -0
  71. package/dist/builders/lowLvlBuilders/inserts/onConflictInsert.d.ts +12 -0
  72. package/dist/builders/lowLvlBuilders/inserts/onConflictInsert.js +13 -0
  73. package/dist/builders/lowLvlBuilders/inserts/valuesInsert.d.ts +16 -0
  74. package/dist/builders/lowLvlBuilders/inserts/valuesInsert.js +19 -0
  75. package/dist/builders/lowLvlBuilders/selects/select.d.ts +9 -0
  76. package/dist/builders/lowLvlBuilders/selects/select.js +16 -0
  77. package/dist/builders/lowLvlBuilders/selects/selectFrom.d.ts +28 -0
  78. package/dist/builders/lowLvlBuilders/selects/selectFrom.js +34 -0
  79. package/dist/builders/lowLvlBuilders/selects/selectJoined.d.ts +26 -0
  80. package/dist/builders/lowLvlBuilders/selects/selectJoined.js +30 -0
  81. package/dist/builders/lowLvlBuilders/selects/whereSelect.d.ts +17 -0
  82. package/dist/builders/lowLvlBuilders/selects/whereSelect.js +25 -0
  83. package/dist/builders/lowLvlBuilders/updates/update.d.ts +5 -0
  84. package/dist/builders/lowLvlBuilders/updates/update.js +15 -0
  85. package/dist/builders/lowLvlBuilders/updates/updateIn.d.ts +13 -0
  86. package/dist/builders/lowLvlBuilders/updates/updateIn.js +15 -0
  87. package/dist/builders/lowLvlBuilders/updates/whereSelect.d.ts +11 -0
  88. package/dist/builders/lowLvlBuilders/updates/whereSelect.js +13 -0
  89. package/dist/builders/lowLvlBuilders/updates/whereSet.d.ts +14 -0
  90. package/dist/builders/lowLvlBuilders/updates/whereSet.js +18 -0
  91. package/dist/builders/requestBuilders/updates/combine.d.ts +9 -0
  92. package/dist/builders/requestBuilders/updates/combine.js +26 -0
  93. package/dist/builders/requestBuilders/updates/increment.d.ts +13 -0
  94. package/dist/builders/requestBuilders/updates/increment.js +18 -0
  95. package/dist/builders/requestBuilders/updates/setObjects.d.ts +12 -0
  96. package/dist/builders/requestBuilders/updates/setObjects.js +19 -0
  97. package/dist/builders/requestBuilders/updates/static.d.ts +7 -0
  98. package/dist/builders/requestBuilders/updates/static.js +15 -0
  99. package/dist/builders/requestBuilders/updates/updates.d.ts +9 -0
  100. package/dist/builders/requestBuilders/updates/updates.js +10 -0
  101. package/dist/builders/requestBuilders/where/and.d.ts +11 -0
  102. package/dist/builders/requestBuilders/where/and.js +31 -0
  103. package/dist/builders/requestBuilders/where/const.d.ts +9 -0
  104. package/dist/builders/requestBuilders/where/const.js +25 -0
  105. package/dist/builders/requestBuilders/where/constArray.d.ts +9 -0
  106. package/dist/builders/requestBuilders/where/constArray.js +39 -0
  107. package/dist/builders/requestBuilders/where/eqWhere.d.ts +12 -0
  108. package/dist/builders/requestBuilders/where/eqWhere.js +20 -0
  109. package/dist/builders/requestBuilders/where/greater.d.ts +15 -0
  110. package/dist/builders/requestBuilders/where/greater.js +20 -0
  111. package/dist/builders/requestBuilders/where/greaterEq.d.ts +15 -0
  112. package/dist/builders/requestBuilders/where/greaterEq.js +20 -0
  113. package/dist/builders/requestBuilders/where/in.d.ts +12 -0
  114. package/dist/builders/requestBuilders/where/in.js +20 -0
  115. package/dist/builders/requestBuilders/where/isNotNull.d.ts +11 -0
  116. package/dist/builders/requestBuilders/where/isNotNull.js +18 -0
  117. package/dist/builders/requestBuilders/where/isNull.d.ts +11 -0
  118. package/dist/builders/requestBuilders/where/isNull.js +18 -0
  119. package/dist/builders/requestBuilders/where/less.d.ts +15 -0
  120. package/dist/builders/requestBuilders/where/less.js +20 -0
  121. package/dist/builders/requestBuilders/where/lessEq.d.ts +15 -0
  122. package/dist/builders/requestBuilders/where/lessEq.js +20 -0
  123. package/dist/builders/requestBuilders/where/like.d.ts +12 -0
  124. package/dist/builders/requestBuilders/where/like.js +20 -0
  125. package/dist/builders/requestBuilders/where/notEqWhere.d.ts +12 -0
  126. package/dist/builders/requestBuilders/where/notEqWhere.js +20 -0
  127. package/dist/builders/requestBuilders/where/or.d.ts +11 -0
  128. package/dist/builders/requestBuilders/where/or.js +31 -0
  129. package/dist/builders/requestBuilders/where/rawWhere.d.ts +9 -0
  130. package/dist/builders/requestBuilders/where/rawWhere.js +15 -0
  131. package/dist/builders/requestBuilders/where/static.d.ts +17 -0
  132. package/dist/builders/requestBuilders/where/static.js +49 -0
  133. package/dist/builders/requestBuilders/where/var.d.ts +13 -0
  134. package/dist/builders/requestBuilders/where/var.js +18 -0
  135. package/dist/builders/requestBuilders/where/where.d.ts +8 -0
  136. package/dist/builders/requestBuilders/where/where.js +6 -0
  137. package/dist/builders/transaction/transaction.d.ts +8 -0
  138. package/dist/builders/transaction/transaction.js +20 -0
  139. package/dist/columns/column.d.ts +72 -0
  140. package/dist/columns/column.js +101 -0
  141. package/dist/columns/index.d.ts +10 -0
  142. package/dist/columns/index.js +27 -0
  143. package/dist/columns/types/columnType.d.ts +7 -0
  144. package/dist/columns/types/columnType.js +6 -0
  145. package/dist/columns/types/pgBigDecimal.d.ts +10 -0
  146. package/dist/columns/types/pgBigDecimal.js +31 -0
  147. package/dist/columns/types/pgBigInt.d.ts +15 -0
  148. package/dist/columns/types/pgBigInt.js +32 -0
  149. package/dist/columns/types/pgBigSerial.d.ts +15 -0
  150. package/dist/columns/types/pgBigSerial.js +32 -0
  151. package/dist/columns/types/pgBoolean.d.ts +8 -0
  152. package/dist/columns/types/pgBoolean.js +18 -0
  153. package/dist/columns/types/pgEnum.d.ts +9 -0
  154. package/dist/columns/types/pgEnum.js +18 -0
  155. package/dist/columns/types/pgInteger.d.ts +8 -0
  156. package/dist/columns/types/pgInteger.js +21 -0
  157. package/dist/columns/types/pgJsonb.d.ts +9 -0
  158. package/dist/columns/types/pgJsonb.js +20 -0
  159. package/dist/columns/types/pgSerial.d.ts +8 -0
  160. package/dist/columns/types/pgSerial.js +18 -0
  161. package/dist/columns/types/pgSmallInt.d.ts +8 -0
  162. package/dist/columns/types/pgSmallInt.js +18 -0
  163. package/dist/columns/types/pgText.d.ts +8 -0
  164. package/dist/columns/types/pgText.js +18 -0
  165. package/dist/columns/types/pgTime.d.ts +8 -0
  166. package/dist/columns/types/pgTime.js +18 -0
  167. package/dist/columns/types/pgTimestamp.d.ts +8 -0
  168. package/dist/columns/types/pgTimestamp.js +18 -0
  169. package/dist/columns/types/pgTimestamptz.d.ts +8 -0
  170. package/dist/columns/types/pgTimestamptz.js +18 -0
  171. package/dist/columns/types/pgVarChar.d.ts +9 -0
  172. package/dist/columns/types/pgVarChar.js +24 -0
  173. package/dist/db/db.d.ts +18 -0
  174. package/dist/db/db.js +25 -0
  175. package/dist/db/dbConnector.d.ts +9 -0
  176. package/dist/db/dbConnector.js +32 -0
  177. package/dist/db/dbStringConnector.d.ts +6 -0
  178. package/dist/db/dbStringConnector.js +29 -0
  179. package/dist/db/group_by.d.ts +0 -0
  180. package/dist/db/group_by.js +68 -0
  181. package/dist/db/index.d.ts +4 -0
  182. package/dist/db/index.js +14 -0
  183. package/dist/db/session.d.ts +9 -0
  184. package/dist/db/session.js +16 -0
  185. package/dist/docs/cases/simple_delete.d.ts +1 -0
  186. package/dist/docs/cases/simple_delete.js +35 -0
  187. package/dist/docs/cases/simple_insert.d.ts +1 -0
  188. package/dist/docs/cases/simple_insert.js +57 -0
  189. package/dist/docs/cases/simple_join.d.ts +1 -0
  190. package/dist/docs/cases/simple_join.js +115 -0
  191. package/dist/docs/cases/simple_select.d.ts +1 -0
  192. package/dist/docs/cases/simple_select.js +50 -0
  193. package/dist/docs/cases/simple_update.d.ts +1 -0
  194. package/dist/docs/cases/simple_update.js +39 -0
  195. package/dist/docs/tables/citiesTable.d.ts +14 -0
  196. package/dist/docs/tables/citiesTable.js +21 -0
  197. package/dist/docs/tables/userGroupsTable.d.ts +7 -0
  198. package/dist/docs/tables/userGroupsTable.js +18 -0
  199. package/dist/docs/tables/usersTable.d.ts +17 -0
  200. package/dist/docs/tables/usersTable.js +35 -0
  201. package/dist/docs/tables/usersToUserGroups.d.ts +7 -0
  202. package/dist/docs/tables/usersToUserGroups.js +20 -0
  203. package/dist/docs/types/rolesType.d.ts +1 -0
  204. package/dist/docs/types/rolesType.js +6 -0
  205. package/dist/errors/baseError.d.ts +22 -0
  206. package/dist/errors/baseError.js +35 -0
  207. package/dist/errors/builderError.d.ts +14 -0
  208. package/dist/errors/builderError.js +25 -0
  209. package/dist/errors/dbErrors.d.ts +12 -0
  210. package/dist/errors/dbErrors.js +28 -0
  211. package/dist/index.d.ts +11 -0
  212. package/dist/index.js +31 -0
  213. package/dist/indexes/tableIndex.d.ts +11 -0
  214. package/dist/indexes/tableIndex.js +17 -0
  215. package/dist/logger/abstractLogger.d.ts +4 -0
  216. package/dist/logger/abstractLogger.js +5 -0
  217. package/dist/logger/consoleLogger.d.ts +5 -0
  218. package/dist/logger/consoleLogger.js +15 -0
  219. package/dist/mappers/index.d.ts +0 -0
  220. package/dist/mappers/index.js +1 -0
  221. package/dist/mappers/responseMapper.d.ts +10 -0
  222. package/dist/mappers/responseMapper.js +35 -0
  223. package/dist/migrator/index.d.ts +0 -0
  224. package/dist/migrator/index.js +1 -0
  225. package/dist/migrator/migrator.d.ts +11 -0
  226. package/dist/migrator/migrator.js +105 -0
  227. package/dist/serializer/serializer.d.ts +47 -0
  228. package/dist/serializer/serializer.js +258 -0
  229. package/dist/tables/abstractTable.d.ts +68 -0
  230. package/dist/tables/abstractTable.js +151 -0
  231. package/dist/tables/index.d.ts +3 -0
  232. package/dist/tables/index.js +11 -0
  233. package/dist/tables/inferTypes.d.ts +39 -0
  234. package/dist/tables/inferTypes.js +2 -0
  235. package/dist/tables/migrationsTable.d.ts +7 -0
  236. package/dist/tables/migrationsTable.js +18 -0
  237. package/dist/test.d.ts +1 -0
  238. package/dist/test.js +65 -0
  239. package/dist/types/type.d.ts +10 -0
  240. package/dist/types/type.js +14 -0
  241. package/dist/utils/ecranate.d.ts +2 -0
  242. package/dist/utils/ecranate.js +8 -0
  243. package/package.json +3 -7
  244. package/pnpm-lock.yaml +1842 -0
  245. package/src/builders/aggregators/abstractAggregator.ts +41 -0
  246. package/src/builders/aggregators/deleteAggregator.ts +44 -0
  247. package/src/builders/aggregators/insertAggregator.ts +120 -0
  248. package/src/builders/aggregators/selectAggregator.ts +163 -0
  249. package/src/builders/aggregators/updateAggregator.ts +56 -0
  250. package/src/builders/highLvlBuilders/abstractRequestBuilder.ts +51 -0
  251. package/src/builders/highLvlBuilders/deleteRequestBuilder.ts +59 -0
  252. package/src/builders/highLvlBuilders/insertRequestBuilder.ts +75 -0
  253. package/src/builders/highLvlBuilders/order.ts +4 -0
  254. package/src/builders/highLvlBuilders/selectRequestBuilder.ts +229 -0
  255. package/src/builders/highLvlBuilders/updateRequestBuilder.ts +80 -0
  256. package/src/builders/index.ts +21 -0
  257. package/src/builders/joinBuilders/builders/abstractJoinBuilder.ts +98 -0
  258. package/src/builders/joinBuilders/builders/selectWithFiveJoins.ts +110 -0
  259. package/src/builders/joinBuilders/builders/selectWithFourJoins.ts +254 -0
  260. package/src/builders/joinBuilders/builders/selectWithJoin.ts +189 -0
  261. package/src/builders/joinBuilders/builders/selectWithThreeJoins.ts +231 -0
  262. package/src/builders/joinBuilders/builders/selectWithTwoJoins.ts +210 -0
  263. package/src/builders/joinBuilders/join.ts +40 -0
  264. package/src/builders/joinBuilders/joinWith.ts +21 -0
  265. package/src/builders/joinBuilders/responses/selectResponseFiveJoins.ts +82 -0
  266. package/src/builders/joinBuilders/responses/selectResponseFourJoins.ts +73 -0
  267. package/src/builders/joinBuilders/responses/selectResponseThreeJoins.ts +64 -0
  268. package/src/builders/joinBuilders/responses/selectResponseTwoJoins.ts +57 -0
  269. package/src/builders/joinBuilders/responses/selectResponseWithJoin.ts +49 -0
  270. package/src/builders/joinBuilders/static.ts +9 -0
  271. package/src/builders/lowLvlBuilders/alter.ts +0 -0
  272. package/src/builders/lowLvlBuilders/create.ts +115 -0
  273. package/src/builders/lowLvlBuilders/delets/delete.ts +13 -0
  274. package/src/builders/lowLvlBuilders/delets/deleteFilter.ts +17 -0
  275. package/src/builders/lowLvlBuilders/delets/deleteFrom.ts +15 -0
  276. package/src/builders/lowLvlBuilders/inserts/insert.ts +11 -0
  277. package/src/builders/lowLvlBuilders/inserts/insertInto.ts +16 -0
  278. package/src/builders/lowLvlBuilders/inserts/onConflictInsert.ts +19 -0
  279. package/src/builders/lowLvlBuilders/inserts/valuesInsert.ts +27 -0
  280. package/src/builders/lowLvlBuilders/selects/select.ts +14 -0
  281. package/src/builders/lowLvlBuilders/selects/selectFrom.ts +50 -0
  282. package/src/builders/lowLvlBuilders/selects/selectJoined.ts +44 -0
  283. package/src/builders/lowLvlBuilders/selects/whereSelect.ts +36 -0
  284. package/src/builders/lowLvlBuilders/updates/update.ts +13 -0
  285. package/src/builders/lowLvlBuilders/updates/updateIn.ts +17 -0
  286. package/src/builders/lowLvlBuilders/updates/whereSelect.ts +17 -0
  287. package/src/builders/lowLvlBuilders/updates/whereSet.ts +21 -0
  288. package/src/builders/requestBuilders/updates/combine.ts +34 -0
  289. package/src/builders/requestBuilders/updates/increment.ts +24 -0
  290. package/src/builders/requestBuilders/updates/setObjects.ts +27 -0
  291. package/src/builders/requestBuilders/updates/static.ts +15 -0
  292. package/src/builders/requestBuilders/updates/updates.ts +8 -0
  293. package/src/builders/requestBuilders/where/and.ts +35 -0
  294. package/src/builders/requestBuilders/where/const.ts +23 -0
  295. package/src/builders/requestBuilders/where/constArray.ts +37 -0
  296. package/src/builders/requestBuilders/where/eqWhere.ts +20 -0
  297. package/src/builders/requestBuilders/where/greater.ts +20 -0
  298. package/src/builders/requestBuilders/where/greaterEq.ts +20 -0
  299. package/src/builders/requestBuilders/where/in.ts +20 -0
  300. package/src/builders/requestBuilders/where/isNotNull.ts +17 -0
  301. package/src/builders/requestBuilders/where/isNull.ts +17 -0
  302. package/src/builders/requestBuilders/where/less.ts +20 -0
  303. package/src/builders/requestBuilders/where/lessEq.ts +20 -0
  304. package/src/builders/requestBuilders/where/like.ts +20 -0
  305. package/src/builders/requestBuilders/where/notEqWhere.ts +20 -0
  306. package/src/builders/requestBuilders/where/or.ts +35 -0
  307. package/src/builders/requestBuilders/where/rawWhere.ts +10 -0
  308. package/src/builders/requestBuilders/where/static.ts +60 -0
  309. package/src/builders/requestBuilders/where/var.ts +19 -0
  310. package/src/builders/requestBuilders/where/where.ts +5 -0
  311. package/src/builders/transaction/transaction.ts +21 -0
  312. package/src/columns/column.ts +195 -0
  313. package/src/columns/index.ts +10 -0
  314. package/src/columns/types/columnType.ts +8 -0
  315. package/src/columns/types/pgBigDecimal.ts +29 -0
  316. package/src/columns/types/pgBigInt.ts +36 -0
  317. package/src/columns/types/pgBigSerial.ts +36 -0
  318. package/src/columns/types/pgBoolean.ts +18 -0
  319. package/src/columns/types/pgEnum.ts +17 -0
  320. package/src/columns/types/pgInteger.ts +21 -0
  321. package/src/columns/types/pgJsonb.ts +21 -0
  322. package/src/columns/types/pgSerial.ts +18 -0
  323. package/src/columns/types/pgSmallInt.ts +18 -0
  324. package/src/columns/types/pgText.ts +18 -0
  325. package/src/columns/types/pgTime.ts +18 -0
  326. package/src/columns/types/pgTimestamp.ts +18 -0
  327. package/src/columns/types/pgTimestamptz.ts +18 -0
  328. package/src/columns/types/pgVarChar.ts +24 -0
  329. package/src/db/db.ts +43 -0
  330. package/src/db/dbConnector.ts +30 -0
  331. package/src/db/dbStringConnector.ts +29 -0
  332. package/src/db/group_by.ts +75 -0
  333. package/src/db/index.ts +4 -0
  334. package/src/db/session.ts +16 -0
  335. package/src/docs/cases/simple_delete.ts +35 -0
  336. package/src/docs/cases/simple_insert.ts +65 -0
  337. package/src/docs/cases/simple_join.ts +140 -0
  338. package/src/docs/cases/simple_select.ts +72 -0
  339. package/src/docs/cases/simple_update.ts +40 -0
  340. package/src/docs/tables/citiesTable.ts +22 -0
  341. package/src/docs/tables/userGroupsTable.ts +12 -0
  342. package/src/docs/tables/usersTable.ts +33 -0
  343. package/src/docs/tables/usersToUserGroups.ts +14 -0
  344. package/src/docs/types/rolesType.ts +4 -0
  345. package/src/errors/baseError.ts +47 -0
  346. package/src/errors/builderError.ts +31 -0
  347. package/src/errors/dbErrors.ts +24 -0
  348. package/src/index.ts +20 -0
  349. package/src/indexes/tableIndex.ts +25 -0
  350. package/src/logger/abstractLogger.ts +4 -0
  351. package/src/logger/consoleLogger.ts +11 -0
  352. package/src/mappers/index.ts +0 -0
  353. package/src/mappers/responseMapper.ts +46 -0
  354. package/src/migrator/index.ts +0 -0
  355. package/src/migrator/migrator.ts +97 -0
  356. package/src/serializer/serializer.ts +336 -0
  357. package/src/tables/abstractTable.ts +188 -0
  358. package/src/tables/index.ts +4 -0
  359. package/src/tables/inferTypes.ts +67 -0
  360. package/src/tables/migrationsTable.ts +11 -0
  361. package/src/types/type.ts +15 -0
  362. package/src/utils/ecranate.ts +4 -0
  363. package/tsconfig.json +13 -0
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ /* eslint-disable max-len */
26
+ const __1 = require("..");
27
+ const builderError_1 = __importStar(require("../../errors/builderError"));
28
+ const responseMapper_1 = __importDefault(require("../../mappers/responseMapper"));
29
+ const insert_1 = __importDefault(require("../lowLvlBuilders/inserts/insert"));
30
+ const abstractRequestBuilder_1 = __importDefault(require("./abstractRequestBuilder"));
31
+ class InsertTRB extends abstractRequestBuilder_1.default {
32
+ constructor(values, session, mappedServiceToDb, table, logger) {
33
+ super(table, session, mappedServiceToDb, logger);
34
+ this.execute = async () => {
35
+ await this._execute();
36
+ };
37
+ this.onConflict = (callback, update) => {
38
+ this._onConflictField = callback(this._table);
39
+ const updates = [];
40
+ Object.entries(update).forEach(([key, value]) => {
41
+ const column = this._mappedServiceToDb[key];
42
+ updates.push(__1.set(column, value));
43
+ });
44
+ this._onConflict = __1.combine(updates);
45
+ return this;
46
+ };
47
+ this._execute = async () => {
48
+ if (!this._values)
49
+ throw Error('Values should be provided firestly\nExample: table.values().execute()');
50
+ const queryBuilder = insert_1.default
51
+ .into(this._table)
52
+ .values(this._values)
53
+ .onConflict(this._onConflict, this._onConflictField);
54
+ let query = '';
55
+ let values = [];
56
+ try {
57
+ const builderResult = queryBuilder.build();
58
+ query = builderResult.query;
59
+ values = builderResult.values;
60
+ }
61
+ catch (e) {
62
+ throw new builderError_1.default(builderError_1.BuilderType.INSERT, this._table.tableName(), this._columns, e);
63
+ }
64
+ if (this._logger) {
65
+ this._logger.info(`Inserting to ${this._table.tableName()} using query:\n ${query}\n${values}`);
66
+ }
67
+ const result = await this._session.execute(query, values);
68
+ return responseMapper_1.default.map(this._mappedServiceToDb, result);
69
+ };
70
+ this._values = values;
71
+ }
72
+ }
73
+ exports.default = InsertTRB;
@@ -0,0 +1,5 @@
1
+ declare enum Order {
2
+ ASC = 0,
3
+ DESC = 1
4
+ }
5
+ export default Order;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var Order;
4
+ (function (Order) {
5
+ Order[Order["ASC"] = 0] = "ASC";
6
+ Order[Order["DESC"] = 1] = "DESC";
7
+ })(Order || (Order = {}));
8
+ exports.default = Order;
@@ -0,0 +1,47 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import DB from '../../db/db';
4
+ import { ISession } from '../../db/session';
5
+ import BaseLogger from '../../logger/abstractLogger';
6
+ import { AbstractTable } from '../../tables';
7
+ import { ExtractModel, PartialFor } from '../../tables/inferTypes';
8
+ import SelectTRBWithJoin from '../joinBuilders/builders/selectWithJoin';
9
+ import Expr from '../requestBuilders/where/where';
10
+ import TableRequestBuilder from './abstractRequestBuilder';
11
+ import Order from './order';
12
+ export default class SelectTRB<TTable extends AbstractTable<TTable>, TPartial extends {
13
+ [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, TTable>;
14
+ } = {}> extends TableRequestBuilder<TTable, TPartial> {
15
+ protected _filter: Expr;
16
+ private props;
17
+ private __orderBy?;
18
+ private __groupBy?;
19
+ private __order?;
20
+ private __distinct;
21
+ private __partial?;
22
+ constructor(session: ISession, mappedServiceToDb: {
23
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
24
+ }, props: {
25
+ limit?: number;
26
+ offset?: number;
27
+ }, table: AbstractTable<TTable>, logger?: BaseLogger, partial?: TPartial);
28
+ where: (expr: Expr) => SelectTRB<TTable, TPartial>;
29
+ orderBy<TColumnType extends ColumnType>(callback: (table: TTable) => AbstractColumn<TColumnType, boolean, boolean>, order: Order): SelectTRB<TTable, TPartial>;
30
+ distinct: (column: AbstractColumn<ColumnType<any>, boolean, boolean>) => SelectTRB<TTable, TPartial>;
31
+ limit: (limit: number) => SelectTRB<TTable, TPartial>;
32
+ offset: (offset: number) => SelectTRB<TTable, TPartial>;
33
+ innerJoin<TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(table: {
34
+ new (db: DB): IToTable;
35
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial, IToPartial>;
36
+ leftJoin<TColumn extends ColumnType<any>, IToColumn extends ColumnType<any>, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(table: {
37
+ new (db: DB): IToTable;
38
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean, TTable>, to: (table: IToTable) => AbstractColumn<IToColumn, boolean, boolean, IToTable>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial, IToPartial>;
39
+ rightJoin<TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(table: {
40
+ new (db: DB): IToTable;
41
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial, IToPartial>;
42
+ fullJoin<TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(table: {
43
+ new (db: DB): IToTable;
44
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial, IToPartial>;
45
+ execute: () => Promise<([keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>)[]>;
46
+ protected _execute: () => Promise<Array<[keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>>>;
47
+ }
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const __1 = require("..");
26
+ const builderError_1 = __importStar(require("../../errors/builderError"));
27
+ const responseMapper_1 = __importDefault(require("../../mappers/responseMapper"));
28
+ const selectWithJoin_1 = __importDefault(require("../joinBuilders/builders/selectWithJoin"));
29
+ const join_1 = require("../joinBuilders/join");
30
+ const abstractRequestBuilder_1 = __importDefault(require("./abstractRequestBuilder"));
31
+ class SelectTRB extends abstractRequestBuilder_1.default {
32
+ constructor(session, mappedServiceToDb, props, table, logger, partial) {
33
+ super(table, session, mappedServiceToDb, logger);
34
+ this.where = (expr) => {
35
+ this._filter = expr;
36
+ return this;
37
+ };
38
+ this.distinct = (column) => {
39
+ this.__distinct = column;
40
+ return this;
41
+ };
42
+ this.limit = (limit) => {
43
+ this.props.limit = limit;
44
+ return this;
45
+ };
46
+ this.offset = (offset) => {
47
+ this.props.offset = offset;
48
+ return this;
49
+ };
50
+ this.execute = async () => {
51
+ const res = await this._execute();
52
+ return res;
53
+ };
54
+ this._execute = async () => {
55
+ // Select.from().filteredBy().limit().offset().orderBy().groupBy().build()
56
+ const queryBuilder = __1.Select
57
+ .from(this._table, this.__partial)
58
+ .distinct(this.__distinct)
59
+ .filteredBy(this._filter)
60
+ .limit(this.props.limit)
61
+ .offset(this.props.offset)
62
+ .orderBy(this.__orderBy, this.__order);
63
+ let query = '';
64
+ let values = [];
65
+ try {
66
+ const builderResult = queryBuilder.build();
67
+ query = builderResult.query;
68
+ values = builderResult.values;
69
+ }
70
+ catch (e) {
71
+ throw new builderError_1.default(builderError_1.BuilderType.SELECT, this._table.tableName(), this._columns, e, this._filter);
72
+ }
73
+ if (this._logger) {
74
+ this._logger.info(`Selecting from ${this._table.tableName()} using query:\n ${query}`);
75
+ }
76
+ const result = await this._session.execute(query, values);
77
+ if (this.__partial) {
78
+ return responseMapper_1.default.partialMap(this.__partial, result);
79
+ }
80
+ return responseMapper_1.default.map(this._mappedServiceToDb, result);
81
+ };
82
+ this.props = props;
83
+ this.__partial = partial;
84
+ }
85
+ orderBy(callback, order) {
86
+ this.__orderBy = callback(this._table);
87
+ this.__order = order;
88
+ return this;
89
+ }
90
+ // public groupBy(callback: (table: TTable) => Column<ColumnType, boolean, boolean>)
91
+ // : SelectTRB<TTable> {
92
+ // this.__groupBy = callback(this.__table);
93
+ // return this;
94
+ // }
95
+ innerJoin(table, from, to, partial) {
96
+ const toTable = this._table.db.create(table);
97
+ const fromColumn = from(this._table);
98
+ const toColumn = to(toTable);
99
+ const join = new __1.JoinWith(toTable.tableName(), toTable.mapServiceToDb())
100
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.INNER_JOIN);
101
+ return new selectWithJoin_1.default(this._table, this._session, this._filter, join, this.props, this.__orderBy, this.__order, this.__distinct, this.__partial, partial);
102
+ }
103
+ leftJoin(table, from, to, partial) {
104
+ const toTable = this._table.db.create(table);
105
+ const fromColumn = from(this._table);
106
+ const toColumn = to(toTable);
107
+ const join = new __1.JoinWith(toTable.tableName(), toTable.mapServiceToDb())
108
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.LEFT_JOIN);
109
+ return new selectWithJoin_1.default(this._table, this._session, this._filter, join, this.props, this.__orderBy, this.__order, this.__distinct, this.__partial, partial);
110
+ }
111
+ rightJoin(table, from, to, partial) {
112
+ const toTable = this._table.db.create(table);
113
+ const fromColumn = from(this._table);
114
+ const toColumn = to(toTable);
115
+ const join = new __1.JoinWith(toTable.tableName(), toTable.mapServiceToDb())
116
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.RIGHT_JOIN);
117
+ return new selectWithJoin_1.default(this._table, this._session, this._filter, join, this.props, this.__orderBy, this.__order, this.__distinct, this.__partial, partial);
118
+ }
119
+ fullJoin(table, from, to, partial) {
120
+ const toTable = this._table.db.create(table);
121
+ const fromColumn = from(this._table);
122
+ const toColumn = to(toTable);
123
+ const join = new __1.JoinWith(toTable.tableName(), toTable.mapServiceToDb())
124
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.FULL_JOIN);
125
+ return new selectWithJoin_1.default(this._table, this._session, this._filter, join, this.props, this.__orderBy, this.__order, this.__distinct, this.__partial, partial);
126
+ }
127
+ }
128
+ exports.default = SelectTRB;
@@ -0,0 +1,22 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import { ISession } from '../../db/session';
4
+ import BaseLogger from '../../logger/abstractLogger';
5
+ import { AbstractTable } from '../../tables';
6
+ import { ExtractModel, ExtractUpdateModel } from '../../tables/inferTypes';
7
+ import Expr from '../requestBuilders/where/where';
8
+ import TableRequestBuilder from './abstractRequestBuilder';
9
+ export default class UpdateTRB<TTable extends AbstractTable<TTable>, TPartial extends {
10
+ [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, TTable>;
11
+ } = {}> extends TableRequestBuilder<TTable, TPartial> {
12
+ private _filter;
13
+ private _update;
14
+ private _objToUpdate;
15
+ constructor(table: AbstractTable<TTable>, session: ISession, mappedServiceToDb: {
16
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
17
+ }, logger?: BaseLogger);
18
+ where: (expr: Expr) => UpdateTRB<TTable>;
19
+ set: (expr: Partial<ExtractUpdateModel<TTable>>) => UpdateTRB<TTable>;
20
+ execute: () => Promise<void>;
21
+ protected _execute: () => Promise<Array<[keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>>>;
22
+ }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const builderError_1 = __importStar(require("../../errors/builderError"));
26
+ const responseMapper_1 = __importDefault(require("../../mappers/responseMapper"));
27
+ const update_1 = __importDefault(require("../lowLvlBuilders/updates/update"));
28
+ const static_1 = require("../requestBuilders/updates/static");
29
+ const updates_1 = require("../requestBuilders/updates/updates");
30
+ const abstractRequestBuilder_1 = __importDefault(require("./abstractRequestBuilder"));
31
+ class UpdateTRB extends abstractRequestBuilder_1.default {
32
+ constructor(table, session, mappedServiceToDb, logger) {
33
+ super(table, session, mappedServiceToDb, logger);
34
+ this.where = (expr) => {
35
+ this._filter = expr;
36
+ return this;
37
+ };
38
+ this.set = (expr) => {
39
+ const updates = [];
40
+ Object.entries(expr).forEach(([key, value]) => {
41
+ const column = this._mappedServiceToDb[key];
42
+ if (value instanceof updates_1.UpdateCustomExpr) {
43
+ value.setColumn(column);
44
+ updates.push(value);
45
+ }
46
+ else {
47
+ updates.push(static_1.set(column, value));
48
+ }
49
+ });
50
+ this._update = static_1.combine(updates);
51
+ return this;
52
+ };
53
+ this.execute = async () => {
54
+ await this._execute();
55
+ };
56
+ this._execute = async () => {
57
+ let query = '';
58
+ let values = [];
59
+ try {
60
+ const builderResult = update_1.default.in(this._table)
61
+ .columns()
62
+ .set(this._update)
63
+ .filteredBy(this._filter)
64
+ .build();
65
+ query = builderResult.query;
66
+ values = builderResult.values;
67
+ }
68
+ catch (e) {
69
+ throw new builderError_1.default(builderError_1.BuilderType.UPDATE, this._table.tableName(), this._columns, e, this._filter);
70
+ }
71
+ if (this._logger) {
72
+ this._logger.info(`Updating ${this._table.tableName()} using query:\n ${query}`);
73
+ console.log(values);
74
+ }
75
+ const result = await this._session.execute(query, values);
76
+ return responseMapper_1.default.map(this._mappedServiceToDb, result);
77
+ };
78
+ }
79
+ }
80
+ exports.default = UpdateTRB;
@@ -0,0 +1,18 @@
1
+ export { default as DeleteTRB } from './highLvlBuilders/deleteRequestBuilder';
2
+ export { default as InsertTRB } from './highLvlBuilders/insertRequestBuilder';
3
+ export { default as SelectTRB } from './highLvlBuilders/selectRequestBuilder';
4
+ export { default as UpdateTRB } from './highLvlBuilders/updateRequestBuilder';
5
+ export { default as to } from './joinBuilders/static';
6
+ export { default as JoinWith } from './joinBuilders/joinWith';
7
+ export { default as Join } from './joinBuilders/join';
8
+ export { default as SelectTRBWithJoin } from './joinBuilders/builders/selectWithJoin';
9
+ export { default as SelectTRBWithTwoJoins } from './joinBuilders/builders/selectWithTwoJoins';
10
+ export { default as SelectResponseTwoJoins } from './joinBuilders/responses/selectResponseTwoJoins';
11
+ export { default as SelectResponseJoin } from './joinBuilders/responses/selectResponseWithJoin';
12
+ export { default as Create } from './lowLvlBuilders/create';
13
+ export { default as Delete } from './lowLvlBuilders/delets/delete';
14
+ export { default as Insert } from './lowLvlBuilders/inserts/insert';
15
+ export { default as Select } from './lowLvlBuilders/selects/select';
16
+ export { default as Update } from './lowLvlBuilders/updates/update';
17
+ export { set, combine } from './requestBuilders/updates/static';
18
+ export { eq, inArray as in, and, or, like, greater, greaterEq, less, lessEq, raw, isNotNull, } from './requestBuilders/where/static';
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isNotNull = exports.raw = exports.lessEq = exports.less = exports.greaterEq = exports.greater = exports.like = exports.or = exports.and = exports.in = exports.eq = exports.combine = exports.set = exports.Update = exports.Select = exports.Insert = exports.Delete = exports.Create = exports.SelectResponseJoin = exports.SelectResponseTwoJoins = exports.SelectTRBWithTwoJoins = exports.SelectTRBWithJoin = exports.Join = exports.JoinWith = exports.to = exports.UpdateTRB = exports.SelectTRB = exports.InsertTRB = exports.DeleteTRB = void 0;
7
+ /* eslint-disable import/no-cycle */
8
+ var deleteRequestBuilder_1 = require("./highLvlBuilders/deleteRequestBuilder");
9
+ Object.defineProperty(exports, "DeleteTRB", { enumerable: true, get: function () { return __importDefault(deleteRequestBuilder_1).default; } });
10
+ var insertRequestBuilder_1 = require("./highLvlBuilders/insertRequestBuilder");
11
+ Object.defineProperty(exports, "InsertTRB", { enumerable: true, get: function () { return __importDefault(insertRequestBuilder_1).default; } });
12
+ var selectRequestBuilder_1 = require("./highLvlBuilders/selectRequestBuilder");
13
+ Object.defineProperty(exports, "SelectTRB", { enumerable: true, get: function () { return __importDefault(selectRequestBuilder_1).default; } });
14
+ var updateRequestBuilder_1 = require("./highLvlBuilders/updateRequestBuilder");
15
+ Object.defineProperty(exports, "UpdateTRB", { enumerable: true, get: function () { return __importDefault(updateRequestBuilder_1).default; } });
16
+ var static_1 = require("./joinBuilders/static");
17
+ Object.defineProperty(exports, "to", { enumerable: true, get: function () { return __importDefault(static_1).default; } });
18
+ var joinWith_1 = require("./joinBuilders/joinWith");
19
+ Object.defineProperty(exports, "JoinWith", { enumerable: true, get: function () { return __importDefault(joinWith_1).default; } });
20
+ var join_1 = require("./joinBuilders/join");
21
+ Object.defineProperty(exports, "Join", { enumerable: true, get: function () { return __importDefault(join_1).default; } });
22
+ var selectWithJoin_1 = require("./joinBuilders/builders/selectWithJoin");
23
+ Object.defineProperty(exports, "SelectTRBWithJoin", { enumerable: true, get: function () { return __importDefault(selectWithJoin_1).default; } });
24
+ var selectWithTwoJoins_1 = require("./joinBuilders/builders/selectWithTwoJoins");
25
+ Object.defineProperty(exports, "SelectTRBWithTwoJoins", { enumerable: true, get: function () { return __importDefault(selectWithTwoJoins_1).default; } });
26
+ var selectResponseTwoJoins_1 = require("./joinBuilders/responses/selectResponseTwoJoins");
27
+ Object.defineProperty(exports, "SelectResponseTwoJoins", { enumerable: true, get: function () { return __importDefault(selectResponseTwoJoins_1).default; } });
28
+ var selectResponseWithJoin_1 = require("./joinBuilders/responses/selectResponseWithJoin");
29
+ Object.defineProperty(exports, "SelectResponseJoin", { enumerable: true, get: function () { return __importDefault(selectResponseWithJoin_1).default; } });
30
+ var create_1 = require("./lowLvlBuilders/create");
31
+ Object.defineProperty(exports, "Create", { enumerable: true, get: function () { return __importDefault(create_1).default; } });
32
+ var delete_1 = require("./lowLvlBuilders/delets/delete");
33
+ Object.defineProperty(exports, "Delete", { enumerable: true, get: function () { return __importDefault(delete_1).default; } });
34
+ var insert_1 = require("./lowLvlBuilders/inserts/insert");
35
+ Object.defineProperty(exports, "Insert", { enumerable: true, get: function () { return __importDefault(insert_1).default; } });
36
+ var select_1 = require("./lowLvlBuilders/selects/select");
37
+ Object.defineProperty(exports, "Select", { enumerable: true, get: function () { return __importDefault(select_1).default; } });
38
+ var update_1 = require("./lowLvlBuilders/updates/update");
39
+ Object.defineProperty(exports, "Update", { enumerable: true, get: function () { return __importDefault(update_1).default; } });
40
+ var static_2 = require("./requestBuilders/updates/static");
41
+ Object.defineProperty(exports, "set", { enumerable: true, get: function () { return static_2.set; } });
42
+ Object.defineProperty(exports, "combine", { enumerable: true, get: function () { return static_2.combine; } });
43
+ var static_3 = require("./requestBuilders/where/static");
44
+ Object.defineProperty(exports, "eq", { enumerable: true, get: function () { return static_3.eq; } });
45
+ Object.defineProperty(exports, "in", { enumerable: true, get: function () { return static_3.inArray; } });
46
+ Object.defineProperty(exports, "and", { enumerable: true, get: function () { return static_3.and; } });
47
+ Object.defineProperty(exports, "or", { enumerable: true, get: function () { return static_3.or; } });
48
+ Object.defineProperty(exports, "like", { enumerable: true, get: function () { return static_3.like; } });
49
+ Object.defineProperty(exports, "greater", { enumerable: true, get: function () { return static_3.greater; } });
50
+ Object.defineProperty(exports, "greaterEq", { enumerable: true, get: function () { return static_3.greaterEq; } });
51
+ Object.defineProperty(exports, "less", { enumerable: true, get: function () { return static_3.less; } });
52
+ Object.defineProperty(exports, "lessEq", { enumerable: true, get: function () { return static_3.lessEq; } });
53
+ Object.defineProperty(exports, "raw", { enumerable: true, get: function () { return static_3.raw; } });
54
+ Object.defineProperty(exports, "isNotNull", { enumerable: true, get: function () { return static_3.isNotNull; } });
@@ -0,0 +1,40 @@
1
+ import { QueryResult } from 'pg';
2
+ import { AbstractColumn } from '../../../columns/column';
3
+ import ColumnType from '../../../columns/types/columnType';
4
+ import { ISession } from '../../../db/session';
5
+ import { AbstractTable } from '../../../tables';
6
+ import { ExtractModel, FullOrPartial, PartialFor } from '../../../tables/inferTypes';
7
+ import Order from '../../highLvlBuilders/order';
8
+ import Expr from '../../requestBuilders/where/where';
9
+ import Join from '../join';
10
+ export default abstract class AbstractJoined<TTable extends AbstractTable<TTable>, TRes, TPartial extends PartialFor<TTable> = {}> {
11
+ protected _table: TTable;
12
+ protected _session: ISession;
13
+ protected _filter: Expr;
14
+ protected _distinct?: AbstractColumn<ColumnType, boolean, boolean>;
15
+ protected _props: {
16
+ limit?: number;
17
+ offset?: number;
18
+ };
19
+ protected _orderBy?: AbstractColumn<ColumnType, boolean, boolean>;
20
+ protected _order?: Order;
21
+ protected _partial?: TPartial;
22
+ constructor(table: TTable, filter: Expr, session: ISession, props: {
23
+ limit?: number;
24
+ offset?: number;
25
+ }, orderBy?: AbstractColumn<ColumnType, boolean, boolean>, order?: Order, distinct?: AbstractColumn<ColumnType, boolean, boolean>, tablePartial?: TPartial);
26
+ limit: (limit: number) => this;
27
+ offset: (offset: number) => this;
28
+ execute: () => Promise<TRes>;
29
+ protected fullOrPartial<Table extends AbstractTable<Table>, Partial extends PartialFor<Table>>(mappedServiceToDb: {
30
+ [name in keyof ExtractModel<Table>]: AbstractColumn<ColumnType>;
31
+ }, result: QueryResult<any>, partial?: Partial, joinId?: number): Array<FullOrPartial<Table, Partial>>;
32
+ protected abstract mapResponse(result: QueryResult<any>): TRes;
33
+ protected abstract joins(): Array<{
34
+ join: Join<any>;
35
+ partial?: {
36
+ [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, any>;
37
+ };
38
+ id?: number;
39
+ }>;
40
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const builderError_1 = __importStar(require("../../../errors/builderError"));
26
+ const responseMapper_1 = __importDefault(require("../../../mappers/responseMapper"));
27
+ const select_1 = __importDefault(require("../../lowLvlBuilders/selects/select"));
28
+ class AbstractJoined {
29
+ constructor(table, filter, session, props, orderBy, order, distinct, tablePartial) {
30
+ this.limit = (limit) => {
31
+ this._props.limit = limit;
32
+ return this;
33
+ };
34
+ this.offset = (offset) => {
35
+ this._props.offset = offset;
36
+ return this;
37
+ };
38
+ this.execute = async () => {
39
+ const queryBuilder = select_1.default
40
+ .from(this._table, this._partial)
41
+ .distinct(this._distinct)
42
+ .joined(this.joins())
43
+ .limit(this._props.limit)
44
+ .offset(this._props.offset)
45
+ .filteredBy(this._filter)
46
+ .orderBy(this._orderBy, this._order);
47
+ let query = '';
48
+ let values = [];
49
+ try {
50
+ const builderResult = queryBuilder.build();
51
+ query = builderResult.query;
52
+ values = builderResult.values;
53
+ }
54
+ catch (e) {
55
+ throw new builderError_1.default(builderError_1.BuilderType.JOINED_SELECT, this._table.tableName(), Object.values(this._table.mapServiceToDb()), e, this._filter);
56
+ }
57
+ console.log(query);
58
+ console.log(values);
59
+ const result = await this._session.execute(query, values);
60
+ return this.mapResponse(result);
61
+ };
62
+ this._table = table;
63
+ this._session = session;
64
+ this._filter = filter;
65
+ this._props = props;
66
+ this._order = order;
67
+ this._orderBy = orderBy;
68
+ this._distinct = distinct;
69
+ this._partial = tablePartial;
70
+ }
71
+ fullOrPartial(mappedServiceToDb, result, partial, joinId) {
72
+ if (partial) {
73
+ return responseMapper_1.default.partialMap(partial, result, joinId);
74
+ }
75
+ return responseMapper_1.default.map(mappedServiceToDb, result, joinId);
76
+ }
77
+ }
78
+ exports.default = AbstractJoined;
@@ -0,0 +1,35 @@
1
+ import { QueryResult } from 'pg';
2
+ import { AbstractColumn } from '../../../columns/column';
3
+ import ColumnType from '../../../columns/types/columnType';
4
+ import { ISession } from '../../../db/session';
5
+ import { AbstractTable } from '../../../tables';
6
+ import { PartialFor } from '../../../tables/inferTypes';
7
+ import Order from '../../highLvlBuilders/order';
8
+ import Expr from '../../requestBuilders/where/where';
9
+ import Join from '../join';
10
+ import SelectResponseFiveJoins from '../responses/selectResponseFiveJoins';
11
+ import AbstractJoined from './abstractJoinBuilder';
12
+ export default class SelectTRBWithFiveJoins<TTable extends AbstractTable<TTable>, TTable1 extends AbstractTable<TTable1>, TTable2 extends AbstractTable<TTable2>, TTable3 extends AbstractTable<TTable3>, TTable4 extends AbstractTable<TTable4>, TTable5 extends AbstractTable<TTable5>, TPartial extends PartialFor<TTable> = {}, TPartial1 extends PartialFor<TTable1> = {}, TPartial2 extends PartialFor<TTable2> = {}, TPartial3 extends PartialFor<TTable3> = {}, TPartial4 extends PartialFor<TTable4> = {}, TPartial5 extends PartialFor<TTable5> = {}> extends AbstractJoined<TTable, SelectResponseFiveJoins<TTable, TTable1, TTable2, TTable3, TTable4, TTable5, TPartial, TPartial1, TPartial2, TPartial3, TPartial4, TPartial5>, TPartial> {
13
+ private _join1;
14
+ private _join2;
15
+ private _join3;
16
+ private _join4;
17
+ private _join5;
18
+ private _joinedPartial?;
19
+ private _joinedPartial1?;
20
+ private _joinedPartial2?;
21
+ private _joinedPartial3?;
22
+ private _joinedPartial4?;
23
+ constructor(table: TTable, session: ISession, filter: Expr, join1: Join<TTable1>, join2: Join<TTable2>, join3: Join<TTable3>, join4: Join<TTable4>, join5: Join<TTable5>, props: {
24
+ limit?: number;
25
+ offset?: number;
26
+ }, orderBy?: AbstractColumn<ColumnType, boolean, boolean>, order?: Order, distinct?: AbstractColumn<ColumnType, boolean, boolean>, tablePartial?: TPartial, joinedPartial?: TPartial1, joinedPartial1?: TPartial2, joinedPartial2?: TPartial3, joinedPartial3?: TPartial4, joinedPartial4?: TPartial5);
27
+ protected joins(): Array<{
28
+ join: Join<any>;
29
+ partial?: {
30
+ [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, any>;
31
+ };
32
+ id?: number;
33
+ }>;
34
+ protected mapResponse(result: QueryResult<any>): SelectResponseFiveJoins<TTable, TTable1, TTable2, TTable3, TTable4, TTable5, TPartial, TPartial1, TPartial2, TPartial3, TPartial4, TPartial5>;
35
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const selectResponseFiveJoins_1 = __importDefault(require("../responses/selectResponseFiveJoins"));
7
+ const abstractJoinBuilder_1 = __importDefault(require("./abstractJoinBuilder"));
8
+ class SelectTRBWithFiveJoins extends abstractJoinBuilder_1.default {
9
+ constructor(table, session, filter, join1, join2, join3, join4, join5, props, orderBy, order, distinct, tablePartial, joinedPartial, joinedPartial1, joinedPartial2, joinedPartial3, joinedPartial4) {
10
+ super(table, filter, session, props, orderBy, order, distinct, tablePartial);
11
+ this._join1 = join1;
12
+ this._join2 = join2;
13
+ this._join3 = join3;
14
+ this._join4 = join4;
15
+ this._join5 = join5;
16
+ this._joinedPartial = joinedPartial;
17
+ this._joinedPartial1 = joinedPartial1;
18
+ this._joinedPartial2 = joinedPartial2;
19
+ this._joinedPartial3 = joinedPartial3;
20
+ this._joinedPartial4 = joinedPartial4;
21
+ }
22
+ joins() {
23
+ return [{ join: this._join1, partial: this._joinedPartial, id: 1 },
24
+ { join: this._join2, partial: this._joinedPartial1, id: 2 },
25
+ { join: this._join3, partial: this._joinedPartial2, id: 3 },
26
+ { join: this._join4, partial: this._joinedPartial3, id: 4 },
27
+ { join: this._join5, partial: this._joinedPartial4, id: 5 }];
28
+ }
29
+ mapResponse(result) {
30
+ const parent = this._join1.mappedServiceToDb;
31
+ const parentTwo = this._join2.mappedServiceToDb;
32
+ const parentThree = this._join3.mappedServiceToDb;
33
+ const parentFour = this._join4.mappedServiceToDb;
34
+ const parentFive = this._join5.mappedServiceToDb;
35
+ // TODO map ids for join properly
36
+ const response = this.fullOrPartial(this._table.mapServiceToDb(), result, this._partial);
37
+ const objects = this.fullOrPartial(parent, result, this._joinedPartial, 1);
38
+ const objectsTwo = this.fullOrPartial(parentTwo, result, this._joinedPartial1, 2);
39
+ const objectsThree = this.fullOrPartial(parentThree, result, this._joinedPartial2, 3);
40
+ const objectsFour = this.fullOrPartial(parentFour, result, this._joinedPartial3, 4);
41
+ const objectsFive = this.fullOrPartial(parentFive, result, this._joinedPartial4, 5);
42
+ return new selectResponseFiveJoins_1.default(response, objects, objectsTwo, objectsThree, objectsFour, objectsFive);
43
+ }
44
+ }
45
+ exports.default = SelectTRBWithFiveJoins;