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,210 @@
1
+ /* eslint-disable max-len */
2
+ /* eslint-disable import/no-cycle */
3
+ import { QueryResult } from 'pg';
4
+ import { AbstractColumn } from '../../../columns/column';
5
+ import ColumnType from '../../../columns/types/columnType';
6
+ import DB from '../../../db/db';
7
+ import { ISession } from '../../../db/session';
8
+ import AbstractTable from '../../../tables/abstractTable';
9
+ import { CheckThreeTypes, ExtractModel, PartialFor } from '../../../tables/inferTypes';
10
+ import Order from '../../highLvlBuilders/order';
11
+ import Expr from '../../requestBuilders/where/where';
12
+ import Join, { JoinStrategy } from '../join';
13
+ import JoinWith from '../joinWith';
14
+ import SelectResponseTwoJoins from '../responses/selectResponseTwoJoins';
15
+ import AbstractJoined from './abstractJoinBuilder';
16
+ import SelectTRBWithThreeJoins from './selectWithThreeJoins';
17
+
18
+ export default class SelectTRBWithTwoJoins<TTable extends AbstractTable<TTable>, TTable1 extends AbstractTable<TTable1>, TTable2 extends AbstractTable<TTable2>,
19
+ TPartial extends PartialFor<TTable> = {},
20
+ TPartial1 extends PartialFor<TTable1> = {},
21
+ TPartial2 extends PartialFor<TTable2> = {}>
22
+ extends AbstractJoined<TTable, SelectResponseTwoJoins<TTable, TTable1, TTable2, TPartial, TPartial1, TPartial2>, TPartial> {
23
+ private _join1: Join<TTable1>;
24
+ private _join2: Join<TTable2>;
25
+
26
+ private _joinedPartial?: TPartial1;
27
+ private _joinedPartial1?: TPartial2;
28
+
29
+ public constructor(
30
+ table: TTable,
31
+ session: ISession,
32
+ filter: Expr,
33
+ join1: Join<TTable1>,
34
+ join2: Join<TTable2>,
35
+ props: {limit?:number, offset?:number},
36
+ orderBy?: AbstractColumn<ColumnType, boolean, boolean>,
37
+ order?: Order,
38
+ distinct?: AbstractColumn<ColumnType, boolean, boolean>,
39
+ tablePartial?: TPartial,
40
+ joinedPartial?: TPartial1,
41
+ joinedPartial1?: TPartial2,
42
+ ) {
43
+ super(table, filter, session, props, orderBy, order, distinct, tablePartial);
44
+ this._join1 = join1;
45
+ this._join2 = join2;
46
+
47
+ this._joinedPartial = joinedPartial;
48
+ this._joinedPartial1 = joinedPartial1;
49
+ }
50
+
51
+ public innerJoin<InputTable extends AbstractTable<InputTable>, TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(
52
+ fromTable: { new(db: DB): InputTable ;},
53
+ table: { new(db: DB): IToTable ;},
54
+ from: (table: CheckThreeTypes<InputTable, TTable, TTable1, TTable2>) => AbstractColumn<TColumn, boolean, boolean, CheckThreeTypes<InputTable, TTable, TTable1, TTable2>>,
55
+ to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean, IToTable>,
56
+ partial?: IToPartial,
57
+ ): SelectTRBWithThreeJoins<TTable, TTable1, TTable2, IToTable, TPartial, TPartial1, TPartial2, IToPartial> {
58
+ const toTable = this._table.db.create(table);
59
+ const tableFrom = this._table.db.create(fromTable);
60
+
61
+ const fromColumn = from(tableFrom as unknown as CheckThreeTypes<InputTable, TTable, TTable1, TTable2>);
62
+ const toColumn = to(toTable);
63
+
64
+ const join = new JoinWith(toTable.tableName(), toTable.mapServiceToDb())
65
+ .columns(fromColumn, toColumn).joinStrategy(JoinStrategy.INNER_JOIN);
66
+
67
+ return new SelectTRBWithThreeJoins(
68
+ this._table,
69
+ this._session,
70
+ this._filter,
71
+ this._join1,
72
+ this._join2,
73
+ join,
74
+ this._props,
75
+ this._orderBy,
76
+ this._order,
77
+ this._distinct,
78
+ this._partial,
79
+ this._joinedPartial,
80
+ this._joinedPartial1,
81
+ partial,
82
+ );
83
+ }
84
+
85
+ public leftJoin<InputTable extends AbstractTable<InputTable>, TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(
86
+ fromTable: { new(db: DB): InputTable ;},
87
+ table: { new(db: DB): IToTable ;},
88
+ from: (table: CheckThreeTypes<InputTable, TTable, TTable1, TTable2>) => AbstractColumn<TColumn, boolean, boolean, CheckThreeTypes<InputTable, TTable, TTable1, TTable2>>,
89
+ to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean, IToTable>,
90
+ partial?: IToPartial,
91
+ ): SelectTRBWithThreeJoins<TTable, TTable1, TTable2, IToTable, TPartial, TPartial1, TPartial2, IToPartial> {
92
+ const toTable = this._table.db.create(table);
93
+ const tableFrom = this._table.db.create(fromTable);
94
+
95
+ const fromColumn = from(tableFrom as unknown as CheckThreeTypes<InputTable, TTable, TTable1, TTable2>);
96
+ const toColumn = to(toTable);
97
+
98
+ const join = new JoinWith(toTable.tableName(), toTable.mapServiceToDb())
99
+ .columns(fromColumn, toColumn).joinStrategy(JoinStrategy.LEFT_JOIN);
100
+
101
+ return new SelectTRBWithThreeJoins(
102
+ this._table,
103
+ this._session,
104
+ this._filter,
105
+ this._join1,
106
+ this._join2,
107
+ join,
108
+ this._props,
109
+ this._orderBy,
110
+ this._order,
111
+ this._distinct,
112
+ this._partial,
113
+ this._joinedPartial,
114
+ this._joinedPartial1,
115
+ partial,
116
+ );
117
+ }
118
+
119
+ public rightJoin<InputTable extends AbstractTable<InputTable>, TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(
120
+ fromTable: { new(db: DB): InputTable ;},
121
+ table: { new(db: DB): IToTable ;},
122
+ from: (table: CheckThreeTypes<InputTable, TTable, TTable1, TTable2>) => AbstractColumn<TColumn, boolean, boolean, CheckThreeTypes<InputTable, TTable, TTable1, TTable2>>,
123
+ to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean, IToTable>,
124
+ partial?: IToPartial,
125
+ ): SelectTRBWithThreeJoins<TTable, TTable1, TTable2, IToTable, TPartial, TPartial1, TPartial2, IToPartial> {
126
+ const toTable = this._table.db.create(table);
127
+ const tableFrom = this._table.db.create(fromTable);
128
+
129
+ const fromColumn = from(tableFrom as unknown as CheckThreeTypes<InputTable, TTable, TTable1, TTable2>);
130
+ const toColumn = to(toTable);
131
+
132
+ const join = new JoinWith(toTable.tableName(), toTable.mapServiceToDb())
133
+ .columns(fromColumn, toColumn).joinStrategy(JoinStrategy.RIGHT_JOIN);
134
+
135
+ return new SelectTRBWithThreeJoins(
136
+ this._table,
137
+ this._session,
138
+ this._filter,
139
+ this._join1,
140
+ this._join2,
141
+ join,
142
+ this._props,
143
+ this._orderBy,
144
+ this._order,
145
+ this._distinct,
146
+ this._partial,
147
+ this._joinedPartial,
148
+ this._joinedPartial1,
149
+ partial,
150
+ );
151
+ }
152
+
153
+ public fullJoin<InputTable extends AbstractTable<InputTable>, TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(
154
+ fromTable: { new(db: DB): InputTable ;},
155
+ table: { new(db: DB): IToTable ;},
156
+ from: (table: CheckThreeTypes<InputTable, TTable, TTable1, TTable2>) => AbstractColumn<TColumn, boolean, boolean, CheckThreeTypes<InputTable, TTable, TTable1, TTable2>>,
157
+ to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean, IToTable>,
158
+ partial?: IToPartial,
159
+ ): SelectTRBWithThreeJoins<TTable, TTable1, TTable2, IToTable, TPartial, TPartial1, TPartial2, IToPartial> {
160
+ const toTable = this._table.db.create(table);
161
+ const tableFrom = this._table.db.create(fromTable);
162
+
163
+ const fromColumn = from(tableFrom as unknown as CheckThreeTypes<InputTable, TTable, TTable1, TTable2>);
164
+ const toColumn = to(toTable);
165
+
166
+ const join = new JoinWith(toTable.tableName(), toTable.mapServiceToDb())
167
+ .columns(fromColumn, toColumn).joinStrategy(JoinStrategy.FULL_JOIN);
168
+
169
+ return new SelectTRBWithThreeJoins(
170
+ this._table,
171
+ this._session,
172
+ this._filter,
173
+ this._join1,
174
+ this._join2,
175
+ join,
176
+ this._props,
177
+ this._orderBy,
178
+ this._order,
179
+ this._distinct,
180
+ this._partial,
181
+ this._joinedPartial,
182
+ this._joinedPartial1,
183
+ partial,
184
+ );
185
+ }
186
+
187
+ protected mapResponse(result: QueryResult<any>)
188
+ : SelectResponseTwoJoins<TTable, TTable1, TTable2, TPartial, TPartial1, TPartial2> {
189
+ const parent:
190
+ { [name in keyof ExtractModel<TTable1>]:
191
+ AbstractColumn<ColumnType>; } = this._join1.mappedServiceToDb;
192
+ const parentTwo:
193
+ { [name in keyof ExtractModel<TTable2>]:
194
+ AbstractColumn<ColumnType>; } = this._join2.mappedServiceToDb;
195
+
196
+ const response = this.fullOrPartial(this._table.mapServiceToDb(), result, this._partial);
197
+ const objects = this.fullOrPartial(parent, result, this._joinedPartial, 1);
198
+ const objectsTwo = this.fullOrPartial(parentTwo, result, this._joinedPartial1, 2);
199
+
200
+ return new SelectResponseTwoJoins(response, objects, objectsTwo);
201
+ }
202
+
203
+ protected joins(): Array<{
204
+ join: Join<any>, partial?: {[name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, any>},
205
+ id?: number
206
+ }> {
207
+ return [{ join: this._join1, partial: this._joinedPartial, id: 1 },
208
+ { join: this._join2, partial: this._joinedPartial1, id: 2 }];
209
+ }
210
+ }
@@ -0,0 +1,40 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import { ExtractModel } from '../../tables/inferTypes';
4
+
5
+ export default class Join<TTable> {
6
+ public fromColumn: AbstractColumn<ColumnType, boolean, boolean>;
7
+ public toColumn: AbstractColumn<ColumnType, boolean, boolean>;
8
+ public joinTableName: string;
9
+ public mappedServiceToDb: { [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>; };
10
+ public type: JoinStrategy;
11
+
12
+ public constructor(joinTableName: string,
13
+ fromColumn: AbstractColumn<ColumnType, boolean, boolean>,
14
+ toColumn: AbstractColumn<ColumnType, boolean, boolean>,
15
+ mappedServiceToDb: { [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>; }) {
16
+ this.joinTableName = joinTableName;
17
+ this.toColumn = toColumn;
18
+ this.fromColumn = fromColumn;
19
+ this.mappedServiceToDb = mappedServiceToDb;
20
+ }
21
+
22
+ public joinStrategy = (type: JoinStrategy): Join<TTable> => {
23
+ this.type = type;
24
+ return this;
25
+ };
26
+
27
+ public columns = (fromColumn: AbstractColumn<ColumnType>,
28
+ toColumn: AbstractColumn<ColumnType>): Join<TTable> => {
29
+ this.toColumn = toColumn;
30
+ this.fromColumn = fromColumn;
31
+ return this;
32
+ };
33
+ }
34
+
35
+ export enum JoinStrategy {
36
+ INNER_JOIN = 'INNER JOIN',
37
+ LEFT_JOIN = 'LEFT JOIN',
38
+ RIGHT_JOIN = 'RIGHT JOIN',
39
+ FULL_JOIN = 'FULL JOIN',
40
+ }
@@ -0,0 +1,21 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import { ExtractModel } from '../../tables/inferTypes';
4
+ import Join from './join';
5
+
6
+ export default class JoinWith<TColumn extends ColumnType, TTable> {
7
+ public joinTableName: string;
8
+ public mappedServiceToDb: { [name in keyof ExtractModel<TTable>]: AbstractColumn<TColumn>; };
9
+
10
+ public constructor(joinTableName: string,
11
+ mappedServiceToDb: { [name in keyof ExtractModel<TTable>]: AbstractColumn<TColumn>; }) {
12
+ this.joinTableName = joinTableName;
13
+ this.mappedServiceToDb = mappedServiceToDb;
14
+ }
15
+
16
+ public columns = (fromColumn: AbstractColumn<TColumn, boolean, boolean>,
17
+ toColumn: AbstractColumn<TColumn, boolean, boolean>): Join<TTable> => new Join(
18
+ this.joinTableName,
19
+ fromColumn, toColumn, this.mappedServiceToDb,
20
+ );
21
+ }
@@ -0,0 +1,82 @@
1
+ /* eslint-disable max-len */
2
+ import AbstractTable from '../../../tables/abstractTable';
3
+ import { FullOrPartial, PartialFor } from '../../../tables/inferTypes';
4
+
5
+ export default class SelectResponseFiveJoins<T1 extends AbstractTable<T1>, T2 extends AbstractTable<T2>, T3 extends AbstractTable<T3>, T4 extends AbstractTable<T4>, T5 extends AbstractTable<T5>, T6 extends AbstractTable<T6>,
6
+ TPartial1 extends PartialFor<T1>, TPartial2 extends PartialFor<T2>, TPartial3 extends PartialFor<T3>, TPartial4 extends PartialFor<T4>, TPartial5 extends PartialFor<T5>, TPartial6 extends PartialFor<T6>> {
7
+ public _t1: Array<FullOrPartial<T1, TPartial1>>;
8
+ public _t2: Array<FullOrPartial<T2, TPartial2>>;
9
+ public _t3: Array<FullOrPartial<T3, TPartial3>>;
10
+ public _t4: Array<FullOrPartial<T4, TPartial4>>;
11
+ public _t5: Array<FullOrPartial<T5, TPartial5>>;
12
+ public _t6: Array<FullOrPartial<T6, TPartial6>>;
13
+
14
+ public constructor(
15
+ t1: Array<FullOrPartial<T1, TPartial1>>,
16
+ t2: Array<FullOrPartial<T2, TPartial2>>,
17
+ t3: Array<FullOrPartial<T3, TPartial3>>,
18
+ t4: Array<FullOrPartial<T4, TPartial4>>,
19
+ t5: Array<FullOrPartial<T5, TPartial5>>,
20
+ t6: Array<FullOrPartial<T6, TPartial6>>,
21
+ ) {
22
+ this._t1 = t1;
23
+ this._t2 = t2;
24
+ this._t3 = t3;
25
+ this._t4 = t4;
26
+ this._t5 = t5;
27
+ this._t6 = t6;
28
+ }
29
+
30
+ public map = <M>(imac: (t1: FullOrPartial<T1, TPartial1>,
31
+ t2: FullOrPartial<T2, TPartial2>,
32
+ t3: FullOrPartial<T3, TPartial3>,
33
+ t4: FullOrPartial<T4, TPartial4>,
34
+ t5: FullOrPartial<T5, TPartial5>,
35
+ t6: FullOrPartial<T6, TPartial6>) => M): Array<M> => {
36
+ const objects = new Array<M>();
37
+ for (let i = 0; i < this._t1.length; i += 1) {
38
+ objects.push(imac(this._t1[i], this._t2[i], this._t3[i],
39
+ this._t4[i], this._t5[i], this._t6[i]));
40
+ }
41
+ return objects;
42
+ };
43
+
44
+ public foreach = (imac: (t1: FullOrPartial<T1, TPartial1>,
45
+ t2: FullOrPartial<T2, TPartial2>,
46
+ t3: FullOrPartial<T3, TPartial3>,
47
+ t4: FullOrPartial<T4, TPartial4>,
48
+ t5: FullOrPartial<T5, TPartial5>,
49
+ t6: FullOrPartial<T6, TPartial6>) => void): void => {
50
+ for (let i = 0; i < this._t1.length; i += 1) {
51
+ imac(this._t1[i], this._t2[i], this._t3[i], this._t4[i], this._t5[i], this._t6[i]);
52
+ }
53
+ };
54
+
55
+ public group = <TOne, TMany>({
56
+ one,
57
+ many,
58
+ }:{
59
+ one: (t1: FullOrPartial<T1, TPartial1>,
60
+ t2: FullOrPartial<T2, TPartial2>,
61
+ t3: FullOrPartial<T3, TPartial3>,
62
+ t4: FullOrPartial<T4, TPartial4>,
63
+ t5: FullOrPartial<T5, TPartial5>,
64
+ t6: FullOrPartial<T6, TPartial6>) => TOne,
65
+ many: (t1: FullOrPartial<T1, TPartial1>,
66
+ t2: FullOrPartial<T2, TPartial2>,
67
+ t3: FullOrPartial<T3, TPartial3>,
68
+ t4: FullOrPartial<T4, TPartial4>,
69
+ t5: FullOrPartial<T5, TPartial5>,
70
+ t6: FullOrPartial<T6, TPartial6>) => TMany
71
+ }) => {
72
+ const objects = new Array<TMany>();
73
+ for (let i = 0; i < this._t1.length; i += 1) {
74
+ objects.push(many(this._t1[i], this._t2[i], this._t3[i],
75
+ this._t4[i], this._t5[i], this._t6[i]));
76
+ }
77
+ return {
78
+ one: one(this._t1[0], this._t2[0], this._t3[0], this._t4[0], this._t5[0], this._t6[0]),
79
+ many: objects,
80
+ };
81
+ };
82
+ }
@@ -0,0 +1,73 @@
1
+ /* eslint-disable max-len */
2
+ import AbstractTable from '../../../tables/abstractTable';
3
+ import { FullOrPartial, PartialFor } from '../../../tables/inferTypes';
4
+
5
+ export default class SelectResponseFourJoins<T1 extends AbstractTable<T1>, T2 extends AbstractTable<T2>, T3 extends AbstractTable<T3>, T4 extends AbstractTable<T4>, T5 extends AbstractTable<T5>,
6
+ TPartial1 extends PartialFor<T1>, TPartial2 extends PartialFor<T2>, TPartial3 extends PartialFor<T3>, TPartial4 extends PartialFor<T4>, TPartial5 extends PartialFor<T5>> {
7
+ public _t1: Array<FullOrPartial<T1, TPartial1>>;
8
+ public _t2: Array<FullOrPartial<T2, TPartial2>>;
9
+ public _t3: Array<FullOrPartial<T3, TPartial3>>;
10
+ public _t4: Array<FullOrPartial<T4, TPartial4>>;
11
+ public _t5: Array<FullOrPartial<T5, TPartial5>>;
12
+
13
+ public constructor(
14
+ t1: Array<FullOrPartial<T1, TPartial1>>,
15
+ t2: Array<FullOrPartial<T2, TPartial2>>,
16
+ t3: Array<FullOrPartial<T3, TPartial3>>,
17
+ t4: Array<FullOrPartial<T4, TPartial4>>,
18
+ t5: Array<FullOrPartial<T5, TPartial5>>,
19
+ ) {
20
+ this._t1 = t1;
21
+ this._t2 = t2;
22
+ this._t3 = t3;
23
+ this._t4 = t4;
24
+ this._t5 = t5;
25
+ }
26
+
27
+ public map = <M>(imac: (t1: FullOrPartial<T1, TPartial1>,
28
+ t2: FullOrPartial<T2, TPartial2>,
29
+ t3: FullOrPartial<T3, TPartial3>,
30
+ t4: FullOrPartial<T4, TPartial4>,
31
+ t5: FullOrPartial<T5, TPartial5>) => M): Array<M> => {
32
+ const objects = new Array<M>();
33
+ for (let i = 0; i < this._t1.length; i += 1) {
34
+ objects.push(imac(this._t1[i], this._t2[i], this._t3[i], this._t4[i], this._t5[i]));
35
+ }
36
+ return objects;
37
+ };
38
+
39
+ public foreach = (imac: (t1: FullOrPartial<T1, TPartial1>,
40
+ t2: FullOrPartial<T2, TPartial2>,
41
+ t3: FullOrPartial<T3, TPartial3>,
42
+ t4: FullOrPartial<T4, TPartial4>,
43
+ t5: FullOrPartial<T5, TPartial5>) => void): void => {
44
+ for (let i = 0; i < this._t1.length; i += 1) {
45
+ imac(this._t1[i], this._t2[i], this._t3[i], this._t4[i], this._t5[i]);
46
+ }
47
+ };
48
+
49
+ public group = <TOne, TMany>({
50
+ one,
51
+ many,
52
+ }:{
53
+ one: (t1: FullOrPartial<T1, TPartial1>,
54
+ t2: FullOrPartial<T2, TPartial2>,
55
+ t3: FullOrPartial<T3, TPartial3>,
56
+ t4: FullOrPartial<T4, TPartial4>,
57
+ t5: FullOrPartial<T5, TPartial5>) => TOne,
58
+ many: (t1: FullOrPartial<T1, TPartial1>,
59
+ t2: FullOrPartial<T2, TPartial2>,
60
+ t3: FullOrPartial<T3, TPartial3>,
61
+ t4: FullOrPartial<T4, TPartial4>,
62
+ t5: FullOrPartial<T5, TPartial5>) => TMany
63
+ }) => {
64
+ const objects = new Array<TMany>();
65
+ for (let i = 0; i < this._t1.length; i += 1) {
66
+ objects.push(many(this._t1[i], this._t2[i], this._t3[i], this._t4[i], this._t5[i]));
67
+ }
68
+ return {
69
+ one: one(this._t1[0], this._t2[0], this._t3[0], this._t4[0], this._t5[0]),
70
+ many: objects,
71
+ };
72
+ };
73
+ }
@@ -0,0 +1,64 @@
1
+ /* eslint-disable max-len */
2
+ import AbstractTable from '../../../tables/abstractTable';
3
+ import { FullOrPartial, PartialFor } from '../../../tables/inferTypes';
4
+
5
+ export default class SelectResponseThreeJoins<T1 extends AbstractTable<T1>, T2 extends AbstractTable<T2>, T3 extends AbstractTable<T3>, T4 extends AbstractTable<T4>,
6
+ TPartial1 extends PartialFor<T1>, TPartial2 extends PartialFor<T2>, TPartial3 extends PartialFor<T3>, TPartial4 extends PartialFor<T4>> {
7
+ private _t1: Array<FullOrPartial<T1, TPartial1>>;
8
+ private _t2: Array<FullOrPartial<T2, TPartial2>>;
9
+ private _t3: Array<FullOrPartial<T3, TPartial3>>;
10
+ private _t4: Array<FullOrPartial<T4, TPartial4>>;
11
+
12
+ public constructor(t1: Array<FullOrPartial<T1, TPartial1>>,
13
+ t2: Array<FullOrPartial<T2, TPartial2>>,
14
+ t3: Array<FullOrPartial<T3, TPartial3>>,
15
+ t4: Array<FullOrPartial<T4, TPartial4>>) {
16
+ this._t1 = t1;
17
+ this._t2 = t2;
18
+ this._t3 = t3;
19
+ this._t4 = t4;
20
+ }
21
+
22
+ public map = <M>(imac: (t1: FullOrPartial<T1, TPartial1>,
23
+ t2: FullOrPartial<T2, TPartial2>,
24
+ t3: FullOrPartial<T3, TPartial3>,
25
+ t4: FullOrPartial<T4, TPartial4>) => M): Array<M> => {
26
+ const objects = new Array<M>();
27
+ for (let i = 0; i < this._t1.length; i += 1) {
28
+ objects.push(imac(this._t1[i], this._t2[i], this._t3[i], this._t4[i]));
29
+ }
30
+ return objects;
31
+ };
32
+
33
+ public foreach = (imac: (t1: FullOrPartial<T1, TPartial1>,
34
+ t2: FullOrPartial<T2, TPartial2>,
35
+ t3: FullOrPartial<T3, TPartial3>,
36
+ t4: FullOrPartial<T4, TPartial4>) => void): void => {
37
+ for (let i = 0; i < this._t1.length; i += 1) {
38
+ imac(this._t1[i], this._t2[i], this._t3[i], this._t4[i]);
39
+ }
40
+ };
41
+
42
+ public group = <TOne, TMany>({
43
+ one,
44
+ many,
45
+ }:{
46
+ one: (t1: FullOrPartial<T1, TPartial1>,
47
+ t2: FullOrPartial<T2, TPartial2>,
48
+ t3: FullOrPartial<T3, TPartial3>,
49
+ t4: FullOrPartial<T4, TPartial4>) => TOne,
50
+ many: (t1: FullOrPartial<T1, TPartial1>,
51
+ t2: FullOrPartial<T2, TPartial2>,
52
+ t3: FullOrPartial<T3, TPartial3>,
53
+ t4: FullOrPartial<T4, TPartial4>) => TMany
54
+ }) => {
55
+ const objects = new Array<TMany>();
56
+ for (let i = 0; i < this._t1.length; i += 1) {
57
+ objects.push(many(this._t1[i], this._t2[i], this._t3[i], this._t4[i]));
58
+ }
59
+ return {
60
+ one: one(this._t1[0], this._t2[0], this._t3[0], this._t4[0]),
61
+ many: objects,
62
+ };
63
+ };
64
+ }
@@ -0,0 +1,57 @@
1
+ /* eslint-disable max-len */
2
+ import AbstractTable from '../../../tables/abstractTable';
3
+ import { FullOrPartial, PartialFor } from '../../../tables/inferTypes';
4
+
5
+ export default class SelectResponseTwoJoins<T1 extends AbstractTable<T1>, T2 extends AbstractTable<T2>, T3 extends AbstractTable<T3>,
6
+ TPartial1 extends PartialFor<T1>, TPartial2 extends PartialFor<T2>, TPartial3 extends PartialFor<T3>> {
7
+ private _t1: Array<FullOrPartial<T1, TPartial1>>;
8
+ private _t2: Array<FullOrPartial<T2, TPartial2>>;
9
+ private _t3: Array<FullOrPartial<T3, TPartial3>>;
10
+
11
+ public constructor(t1: Array<FullOrPartial<T1, TPartial1>>,
12
+ t2: Array<FullOrPartial<T2, TPartial2>>,
13
+ t3: Array<FullOrPartial<T3, TPartial3>>) {
14
+ this._t1 = t1;
15
+ this._t2 = t2;
16
+ this._t3 = t3;
17
+ }
18
+
19
+ public map = <M>(imac: (t1: FullOrPartial<T1, TPartial1>,
20
+ t2: FullOrPartial<T2, TPartial2>,
21
+ t3: FullOrPartial<T3, TPartial3>) => M): Array<M> => {
22
+ const objects = new Array<M>();
23
+ for (let i = 0; i < this._t1.length; i += 1) {
24
+ objects.push(imac(this._t1[i], this._t2[i], this._t3[i]));
25
+ }
26
+ return objects;
27
+ };
28
+
29
+ public foreach = (imac: (t1: FullOrPartial<T1, TPartial1>,
30
+ t2: FullOrPartial<T2, TPartial2>,
31
+ t3: FullOrPartial<T3, TPartial3>) => void): void => {
32
+ for (let i = 0; i < this._t1.length; i += 1) {
33
+ imac(this._t1[i], this._t2[i], this._t3[i]);
34
+ }
35
+ };
36
+
37
+ public group = <TOne, TMany>({
38
+ one,
39
+ many,
40
+ }:{
41
+ one: (t1: FullOrPartial<T1, TPartial1>,
42
+ t2: FullOrPartial<T2, TPartial2>,
43
+ t3: FullOrPartial<T3, TPartial3>) => TOne,
44
+ many: (t1: FullOrPartial<T1, TPartial1>,
45
+ t2: FullOrPartial<T2, TPartial2>,
46
+ t3: FullOrPartial<T3, TPartial3>) => TMany
47
+ }) => {
48
+ const objects = new Array<TMany>();
49
+ for (let i = 0; i < this._t1.length; i += 1) {
50
+ objects.push(many(this._t1[i], this._t2[i], this._t3[i]));
51
+ }
52
+ return {
53
+ one: one(this._t1[0], this._t2[0], this._t3[0]),
54
+ many: objects,
55
+ };
56
+ };
57
+ }
@@ -0,0 +1,49 @@
1
+ /* eslint-disable max-len */
2
+ import AbstractTable from '../../../tables/abstractTable';
3
+ import { FullOrPartial, PartialFor } from '../../../tables/inferTypes';
4
+
5
+ export default class SelectResponseJoin<TTable1 extends AbstractTable<TTable1>, TTable2 extends AbstractTable<TTable2>, TPartial1 extends PartialFor<TTable1>, TPartial2 extends PartialFor<TTable2>> {
6
+ private _t1: Array<FullOrPartial<TTable1, TPartial1>>;
7
+ private _t2: Array<FullOrPartial<TTable2, TPartial2>>;
8
+
9
+ public constructor(t1: Array<FullOrPartial<TTable1, TPartial1>>,
10
+ t2: Array<FullOrPartial<TTable2, TPartial2>>) {
11
+ this._t1 = t1;
12
+ this._t2 = t2;
13
+ }
14
+
15
+ public map = <M>(imac: (t1: FullOrPartial<TTable1, TPartial1>,
16
+ t2: FullOrPartial<TTable2, TPartial2>) => M): Array<M> => {
17
+ const objects = new Array<M>();
18
+ for (let i = 0; i < this._t1.length; i += 1) {
19
+ objects.push(imac(this._t1[i], this._t2[i]));
20
+ }
21
+ return objects;
22
+ };
23
+
24
+ public foreach = (imac: (t1: FullOrPartial<TTable1, TPartial1>,
25
+ t2: FullOrPartial<TTable2, TPartial2>) => void): void => {
26
+ for (let i = 0; i < this._t1.length; i += 1) {
27
+ imac(this._t1[i], this._t2[i]);
28
+ }
29
+ };
30
+
31
+ public group = <TOne, TMany>({
32
+ one,
33
+ many,
34
+ }:{
35
+ one: (t1: FullOrPartial<TTable1, TPartial1>,
36
+ t2: FullOrPartial<TTable2, TPartial2>) => TOne,
37
+ many: (t1: FullOrPartial<TTable1, TPartial1>,
38
+ t2: FullOrPartial<TTable2, TPartial2>) => TMany
39
+ }) => {
40
+ const objects = new Array<TMany>();
41
+ for (let i = 0; i < this._t1.length; i += 1) {
42
+ objects.push(many(this._t1[i], this._t2[i]));
43
+ }
44
+ return {
45
+ one: one(this._t1[0], this._t2[0]),
46
+ many: objects,
47
+ };
48
+ };
49
+ }
@@ -0,0 +1,9 @@
1
+ import ColumnType from '../../columns/types/columnType';
2
+ import AbstractTable from '../../tables/abstractTable';
3
+ import JoinWith from './joinWith';
4
+
5
+ const to = <TTable extends AbstractTable<TTable>>(table: AbstractTable<TTable>):
6
+ JoinWith<ColumnType, TTable> => new JoinWith(table.tableName(), table.mapServiceToDb());
7
+
8
+ // eslint-disable-next-line import/prefer-default-export
9
+ export default to;
File without changes