drizzle-orm 0.9.0 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/builders/aggregators/abstractAggregator.d.ts +9 -0
  2. package/builders/aggregators/abstractAggregator.js +28 -0
  3. package/builders/aggregators/deleteAggregator.d.ts +12 -0
  4. package/builders/aggregators/deleteAggregator.js +36 -0
  5. package/builders/aggregators/insertAggregator.d.ts +18 -0
  6. package/builders/aggregators/insertAggregator.js +94 -0
  7. package/builders/aggregators/selectAggregator.d.ts +26 -0
  8. package/builders/aggregators/selectAggregator.js +106 -0
  9. package/builders/aggregators/updateAggregator.d.ts +15 -0
  10. package/builders/aggregators/updateAggregator.js +41 -0
  11. package/builders/highLvlBuilders/abstractRequestBuilder.d.ts +21 -0
  12. package/builders/highLvlBuilders/abstractRequestBuilder.js +21 -0
  13. package/builders/highLvlBuilders/deleteRequestBuilder.d.ts +17 -0
  14. package/builders/highLvlBuilders/deleteRequestBuilder.js +43 -0
  15. package/builders/highLvlBuilders/insertRequestBuilder.d.ts +18 -0
  16. package/builders/highLvlBuilders/insertRequestBuilder.js +54 -0
  17. package/builders/highLvlBuilders/order.d.ts +5 -0
  18. package/builders/highLvlBuilders/order.js +8 -0
  19. package/builders/highLvlBuilders/selectRequestBuilder.d.ts +42 -0
  20. package/builders/highLvlBuilders/selectRequestBuilder.js +99 -0
  21. package/builders/highLvlBuilders/updateRequestBuilder.d.ts +20 -0
  22. package/builders/highLvlBuilders/updateRequestBuilder.js +54 -0
  23. package/{src/builders/index.ts → builders/index.d.ts} +2 -4
  24. package/builders/index.js +50 -0
  25. package/builders/joinBuilders/builders/abstractJoinBuilder.d.ts +27 -0
  26. package/builders/joinBuilders/builders/abstractJoinBuilder.js +42 -0
  27. package/builders/joinBuilders/builders/selectWithFiveJoins.d.ts +23 -0
  28. package/builders/joinBuilders/builders/selectWithFiveJoins.js +33 -0
  29. package/builders/joinBuilders/builders/selectWithFourJoins.d.ts +36 -0
  30. package/builders/joinBuilders/builders/selectWithFourJoins.js +65 -0
  31. package/builders/joinBuilders/builders/selectWithJoin.d.ts +33 -0
  32. package/builders/joinBuilders/builders/selectWithJoin.js +56 -0
  33. package/builders/joinBuilders/builders/selectWithThreeJoins.d.ts +35 -0
  34. package/builders/joinBuilders/builders/selectWithThreeJoins.js +62 -0
  35. package/builders/joinBuilders/builders/selectWithTwoJoins.d.ts +34 -0
  36. package/builders/joinBuilders/builders/selectWithTwoJoins.js +59 -0
  37. package/builders/joinBuilders/join.d.ts +23 -0
  38. package/builders/joinBuilders/join.js +28 -0
  39. package/builders/joinBuilders/joinWith.d.ts +14 -0
  40. package/builders/joinBuilders/joinWith.js +11 -0
  41. package/builders/joinBuilders/responses/selectResponseFiveJoins.d.ts +19 -0
  42. package/builders/joinBuilders/responses/selectResponseFiveJoins.js +35 -0
  43. package/builders/joinBuilders/responses/selectResponseFourJoins.d.ts +18 -0
  44. package/builders/joinBuilders/responses/selectResponseFourJoins.js +34 -0
  45. package/builders/joinBuilders/responses/selectResponseThreeJoins.d.ts +17 -0
  46. package/builders/joinBuilders/responses/selectResponseThreeJoins.js +33 -0
  47. package/builders/joinBuilders/responses/selectResponseTwoJoins.d.ts +16 -0
  48. package/builders/joinBuilders/responses/selectResponseTwoJoins.js +32 -0
  49. package/builders/joinBuilders/responses/selectResponseWithJoin.d.ts +15 -0
  50. package/builders/joinBuilders/responses/selectResponseWithJoin.js +31 -0
  51. package/builders/joinBuilders/static.d.ts +5 -0
  52. package/builders/joinBuilders/static.js +6 -0
  53. package/{src/builders/lowLvlBuilders/alter.ts → builders/lowLvlBuilders/alter.d.ts} +0 -0
  54. package/builders/lowLvlBuilders/alter.js +1 -0
  55. package/builders/lowLvlBuilders/create.d.ts +12 -0
  56. package/builders/lowLvlBuilders/create.js +97 -0
  57. package/builders/lowLvlBuilders/delets/delete.d.ts +5 -0
  58. package/builders/lowLvlBuilders/delets/delete.js +12 -0
  59. package/builders/lowLvlBuilders/delets/deleteFilter.d.ts +8 -0
  60. package/builders/lowLvlBuilders/delets/deleteFilter.js +13 -0
  61. package/builders/lowLvlBuilders/delets/deleteFrom.d.ts +9 -0
  62. package/builders/lowLvlBuilders/delets/deleteFrom.js +11 -0
  63. package/builders/lowLvlBuilders/inserts/insert.d.ts +5 -0
  64. package/builders/lowLvlBuilders/inserts/insert.js +12 -0
  65. package/builders/lowLvlBuilders/inserts/insertInto.d.ts +10 -0
  66. package/builders/lowLvlBuilders/inserts/insertInto.js +13 -0
  67. package/builders/lowLvlBuilders/inserts/onConflictInsert.d.ts +9 -0
  68. package/builders/lowLvlBuilders/inserts/onConflictInsert.js +13 -0
  69. package/builders/lowLvlBuilders/inserts/valuesInsert.d.ts +13 -0
  70. package/builders/lowLvlBuilders/inserts/valuesInsert.js +16 -0
  71. package/builders/lowLvlBuilders/selects/select.d.ts +5 -0
  72. package/builders/lowLvlBuilders/selects/select.js +12 -0
  73. package/builders/lowLvlBuilders/selects/selectFrom.d.ts +19 -0
  74. package/builders/lowLvlBuilders/selects/selectFrom.js +31 -0
  75. package/builders/lowLvlBuilders/selects/selectJoined.d.ts +17 -0
  76. package/builders/lowLvlBuilders/selects/selectJoined.js +27 -0
  77. package/builders/lowLvlBuilders/selects/whereSelect.d.ts +14 -0
  78. package/builders/lowLvlBuilders/selects/whereSelect.js +25 -0
  79. package/builders/lowLvlBuilders/updates/update.d.ts +5 -0
  80. package/builders/lowLvlBuilders/updates/update.js +12 -0
  81. package/builders/lowLvlBuilders/updates/updateIn.d.ts +10 -0
  82. package/builders/lowLvlBuilders/updates/updateIn.js +12 -0
  83. package/builders/lowLvlBuilders/updates/whereSelect.d.ts +8 -0
  84. package/builders/lowLvlBuilders/updates/whereSelect.js +13 -0
  85. package/builders/lowLvlBuilders/updates/whereSet.d.ts +11 -0
  86. package/builders/lowLvlBuilders/updates/whereSet.js +15 -0
  87. package/builders/requestBuilders/updates/combine.d.ts +6 -0
  88. package/builders/requestBuilders/updates/combine.js +21 -0
  89. package/builders/requestBuilders/updates/setObjects.d.ts +9 -0
  90. package/builders/requestBuilders/updates/setObjects.js +12 -0
  91. package/builders/requestBuilders/updates/static.d.ts +6 -0
  92. package/builders/requestBuilders/updates/static.js +9 -0
  93. package/{src/builders/requestBuilders/updates/updates.ts → builders/requestBuilders/updates/updates.d.ts} +1 -1
  94. package/builders/requestBuilders/updates/updates.js +5 -0
  95. package/builders/requestBuilders/where/and.d.ts +6 -0
  96. package/builders/requestBuilders/where/and.js +22 -0
  97. package/builders/requestBuilders/where/const.d.ts +6 -0
  98. package/builders/requestBuilders/where/const.js +17 -0
  99. package/builders/requestBuilders/where/constArray.d.ts +6 -0
  100. package/builders/requestBuilders/where/constArray.js +27 -0
  101. package/builders/requestBuilders/where/eqWhere.d.ts +7 -0
  102. package/builders/requestBuilders/where/eqWhere.js +12 -0
  103. package/builders/requestBuilders/where/greater.d.ts +10 -0
  104. package/builders/requestBuilders/where/greater.js +12 -0
  105. package/builders/requestBuilders/where/greaterEq.d.ts +10 -0
  106. package/builders/requestBuilders/where/greaterEq.js +12 -0
  107. package/builders/requestBuilders/where/in.d.ts +7 -0
  108. package/builders/requestBuilders/where/in.js +12 -0
  109. package/builders/requestBuilders/where/isNull.d.ts +6 -0
  110. package/builders/requestBuilders/where/isNull.js +11 -0
  111. package/builders/requestBuilders/where/less.d.ts +10 -0
  112. package/builders/requestBuilders/where/less.js +12 -0
  113. package/builders/requestBuilders/where/lessEq.d.ts +10 -0
  114. package/builders/requestBuilders/where/lessEq.js +12 -0
  115. package/builders/requestBuilders/where/like.d.ts +7 -0
  116. package/builders/requestBuilders/where/like.js +12 -0
  117. package/builders/requestBuilders/where/notEqWhere.d.ts +7 -0
  118. package/builders/requestBuilders/where/notEqWhere.js +12 -0
  119. package/builders/requestBuilders/where/or.d.ts +6 -0
  120. package/builders/requestBuilders/where/or.js +22 -0
  121. package/builders/requestBuilders/where/rawWhere.d.ts +6 -0
  122. package/builders/requestBuilders/where/rawWhere.js +11 -0
  123. package/builders/requestBuilders/where/static.d.ts +16 -0
  124. package/builders/requestBuilders/where/static.js +43 -0
  125. package/builders/requestBuilders/where/var.d.ts +8 -0
  126. package/builders/requestBuilders/where/var.js +12 -0
  127. package/{src/builders/requestBuilders/where/where.ts → builders/requestBuilders/where/where.d.ts} +1 -1
  128. package/builders/requestBuilders/where/where.js +5 -0
  129. package/builders/transaction/transaction.d.ts +8 -0
  130. package/builders/transaction/transaction.js +20 -0
  131. package/columns/column.d.ts +61 -0
  132. package/columns/column.js +98 -0
  133. package/{src/columns/index.ts → columns/index.d.ts} +0 -0
  134. package/columns/index.js +23 -0
  135. package/columns/types/columnType.d.ts +7 -0
  136. package/columns/types/columnType.js +6 -0
  137. package/columns/types/pgBigDecimal.d.ts +10 -0
  138. package/columns/types/pgBigDecimal.js +28 -0
  139. package/columns/types/pgBigInt.d.ts +8 -0
  140. package/columns/types/pgBigInt.js +17 -0
  141. package/columns/types/pgBoolean.d.ts +8 -0
  142. package/columns/types/pgBoolean.js +15 -0
  143. package/columns/types/pgEnum.d.ts +9 -0
  144. package/columns/types/pgEnum.js +15 -0
  145. package/columns/types/pgInteger.d.ts +8 -0
  146. package/columns/types/pgInteger.js +15 -0
  147. package/columns/types/pgJsonb.d.ts +9 -0
  148. package/columns/types/pgJsonb.js +15 -0
  149. package/columns/types/pgText.d.ts +8 -0
  150. package/columns/types/pgText.js +15 -0
  151. package/columns/types/pgTime.d.ts +8 -0
  152. package/columns/types/pgTime.js +15 -0
  153. package/columns/types/pgTimestamp.d.ts +8 -0
  154. package/columns/types/pgTimestamp.js +15 -0
  155. package/columns/types/pgVarChar.d.ts +9 -0
  156. package/columns/types/pgVarChar.js +21 -0
  157. package/db/db.d.ts +19 -0
  158. package/db/db.js +26 -0
  159. package/db/dbConnector.d.ts +9 -0
  160. package/db/dbConnector.js +28 -0
  161. package/db/dbStringConnector.d.ts +6 -0
  162. package/db/dbStringConnector.js +25 -0
  163. package/{src/mappers/index.ts → db/group_by.d.ts} +0 -0
  164. package/db/group_by.js +68 -0
  165. package/{src/db/index.ts → db/index.d.ts} +0 -0
  166. package/db/index.js +9 -0
  167. package/db/session.d.ts +7 -0
  168. package/db/session.js +20 -0
  169. package/docs/cases/simple_delete.d.ts +1 -0
  170. package/docs/cases/simple_delete.js +30 -0
  171. package/docs/cases/simple_insert.d.ts +1 -0
  172. package/docs/cases/simple_insert.js +51 -0
  173. package/docs/cases/simple_join.d.ts +1 -0
  174. package/docs/cases/simple_join.js +95 -0
  175. package/docs/cases/simple_select.d.ts +1 -0
  176. package/docs/cases/simple_select.js +39 -0
  177. package/docs/cases/simple_update.d.ts +1 -0
  178. package/docs/cases/simple_update.js +33 -0
  179. package/docs/tables/citiesTable.d.ts +14 -0
  180. package/docs/tables/citiesTable.js +19 -0
  181. package/docs/tables/citiesToUsers.d.ts +7 -0
  182. package/docs/tables/citiesToUsers.js +18 -0
  183. package/docs/tables/userGroupsTable.d.ts +7 -0
  184. package/docs/tables/userGroupsTable.js +15 -0
  185. package/docs/tables/usersTable.d.ts +17 -0
  186. package/docs/tables/usersTable.js +29 -0
  187. package/docs/tables/usersToUserGroups.d.ts +7 -0
  188. package/docs/tables/usersToUserGroups.js +18 -0
  189. package/docs/types/rolesType.d.ts +1 -0
  190. package/docs/types/rolesType.js +6 -0
  191. package/errors/baseError.d.ts +22 -0
  192. package/errors/baseError.js +35 -0
  193. package/errors/builderError.d.ts +14 -0
  194. package/errors/builderError.js +24 -0
  195. package/errors/dbErrors.d.ts +12 -0
  196. package/errors/dbErrors.js +28 -0
  197. package/index.d.ts +13 -0
  198. package/index.js +32 -0
  199. package/indexes/tableIndex.d.ts +11 -0
  200. package/indexes/tableIndex.js +17 -0
  201. package/logger/abstractLogger.d.ts +4 -0
  202. package/logger/abstractLogger.js +5 -0
  203. package/logger/consoleLogger.d.ts +5 -0
  204. package/logger/consoleLogger.js +12 -0
  205. package/{src/migrator/index.ts → mappers/index.d.ts} +0 -0
  206. package/mappers/index.js +1 -0
  207. package/mappers/responseMapper.d.ts +7 -0
  208. package/mappers/responseMapper.js +23 -0
  209. package/migrator/index.d.ts +0 -0
  210. package/migrator/index.js +1 -0
  211. package/migrator/migrator.d.ts +16 -0
  212. package/migrator/migrator.js +101 -0
  213. package/package.json +2 -2
  214. package/serializer/serializer.d.ts +40 -0
  215. package/serializer/serializer.js +74 -0
  216. package/tables/abstractTable.d.ts +118 -0
  217. package/tables/abstractTable.js +116 -0
  218. package/{src/tables/index.ts → tables/index.d.ts} +0 -0
  219. package/tables/index.js +8 -0
  220. package/tables/inferTypes.d.ts +19 -0
  221. package/tables/inferTypes.js +2 -0
  222. package/tables/migrationsTable.d.ts +8 -0
  223. package/tables/migrationsTable.js +16 -0
  224. package/test.d.ts +1 -0
  225. package/test.js +81 -0
  226. package/types/type.d.ts +10 -0
  227. package/types/type.js +14 -0
  228. package/utils/ecranate.d.ts +2 -0
  229. package/utils/ecranate.js +8 -0
  230. package/.eslintrc +0 -26
  231. package/.tslintignore +0 -1
  232. package/LICENSE +0 -674
  233. package/README.md +0 -147
  234. package/src/builders/aggregators/abstractAggregator.ts +0 -37
  235. package/src/builders/aggregators/deleteAggregator.ts +0 -34
  236. package/src/builders/aggregators/insertAggregator.ts +0 -116
  237. package/src/builders/aggregators/selectAggregator.ts +0 -102
  238. package/src/builders/aggregators/updateAggregator.ts +0 -45
  239. package/src/builders/highLvlBuilders/abstractRequestBuilder.ts +0 -37
  240. package/src/builders/highLvlBuilders/deleteRequestBuilder.ts +0 -59
  241. package/src/builders/highLvlBuilders/insertRequestBuilder.ts +0 -87
  242. package/src/builders/highLvlBuilders/order.ts +0 -4
  243. package/src/builders/highLvlBuilders/selectRequestBuilder.ts +0 -102
  244. package/src/builders/highLvlBuilders/updateRequestBuilder.ts +0 -63
  245. package/src/builders/joinBuilders/builders/abstractJoinBuilder.ts +0 -22
  246. package/src/builders/joinBuilders/builders/selectWithFourJoins.ts +0 -71
  247. package/src/builders/joinBuilders/builders/selectWithJoin.ts +0 -67
  248. package/src/builders/joinBuilders/builders/selectWithThreeJoins.ts +0 -78
  249. package/src/builders/joinBuilders/builders/selectWithTwoJoins.ts +0 -72
  250. package/src/builders/joinBuilders/join.ts +0 -37
  251. package/src/builders/joinBuilders/joinWith.ts +0 -19
  252. package/src/builders/joinBuilders/responses/selectResponseFourJoins.ts +0 -33
  253. package/src/builders/joinBuilders/responses/selectResponseThreeJoins.ts +0 -29
  254. package/src/builders/joinBuilders/responses/selectResponseTwoJoins.ts +0 -22
  255. package/src/builders/joinBuilders/responses/selectResponseWithJoin.ts +0 -28
  256. package/src/builders/joinBuilders/static.ts +0 -9
  257. package/src/builders/lowLvlBuilders/create.ts +0 -114
  258. package/src/builders/lowLvlBuilders/delets/delete.ts +0 -10
  259. package/src/builders/lowLvlBuilders/delets/deleteFilter.ts +0 -17
  260. package/src/builders/lowLvlBuilders/delets/deleteFrom.ts +0 -15
  261. package/src/builders/lowLvlBuilders/inserts/insert.ts +0 -12
  262. package/src/builders/lowLvlBuilders/inserts/insertInto.ts +0 -18
  263. package/src/builders/lowLvlBuilders/inserts/onConflictInsert.ts +0 -19
  264. package/src/builders/lowLvlBuilders/inserts/valuesInsert.ts +0 -30
  265. package/src/builders/lowLvlBuilders/selects/select.ts +0 -12
  266. package/src/builders/lowLvlBuilders/selects/selectFrom.ts +0 -38
  267. package/src/builders/lowLvlBuilders/selects/selectJoined.ts +0 -40
  268. package/src/builders/lowLvlBuilders/selects/whereSelect.ts +0 -35
  269. package/src/builders/lowLvlBuilders/updates/update.ts +0 -10
  270. package/src/builders/lowLvlBuilders/updates/updateIn.ts +0 -22
  271. package/src/builders/lowLvlBuilders/updates/whereSelect.ts +0 -17
  272. package/src/builders/lowLvlBuilders/updates/whereSet.ts +0 -21
  273. package/src/builders/requestBuilders/updates/combine.ts +0 -25
  274. package/src/builders/requestBuilders/updates/setObjects.ts +0 -18
  275. package/src/builders/requestBuilders/updates/static.ts +0 -11
  276. package/src/builders/requestBuilders/where/and.ts +0 -26
  277. package/src/builders/requestBuilders/where/const.ts +0 -18
  278. package/src/builders/requestBuilders/where/constArray.ts +0 -27
  279. package/src/builders/requestBuilders/where/eqWhere.ts +0 -14
  280. package/src/builders/requestBuilders/where/greater.ts +0 -14
  281. package/src/builders/requestBuilders/where/greaterEq.ts +0 -14
  282. package/src/builders/requestBuilders/where/in.ts +0 -14
  283. package/src/builders/requestBuilders/where/less.ts +0 -14
  284. package/src/builders/requestBuilders/where/lessEq.ts +0 -14
  285. package/src/builders/requestBuilders/where/like.ts +0 -14
  286. package/src/builders/requestBuilders/where/or.ts +0 -26
  287. package/src/builders/requestBuilders/where/static.ts +0 -42
  288. package/src/builders/requestBuilders/where/var.ts +0 -15
  289. package/src/builders/transaction/transaction.ts +0 -21
  290. package/src/columns/column.ts +0 -86
  291. package/src/columns/types/columnType.ts +0 -7
  292. package/src/columns/types/pgBigDecimal.ts +0 -29
  293. package/src/columns/types/pgBigInt.ts +0 -20
  294. package/src/columns/types/pgBoolean.ts +0 -18
  295. package/src/columns/types/pgEnum.ts +0 -22
  296. package/src/columns/types/pgInteger.ts +0 -18
  297. package/src/columns/types/pgJsonb.ts +0 -19
  298. package/src/columns/types/pgText.ts +0 -18
  299. package/src/columns/types/pgTime.ts +0 -18
  300. package/src/columns/types/pgTimestamp.ts +0 -18
  301. package/src/columns/types/pgVarChar.ts +0 -24
  302. package/src/db/db.ts +0 -29
  303. package/src/db/dbConnector.ts +0 -30
  304. package/src/db/dbStringConnector.ts +0 -28
  305. package/src/db/session.ts +0 -21
  306. package/src/errors/baseError.ts +0 -47
  307. package/src/errors/builderError.ts +0 -30
  308. package/src/errors/dbErrors.ts +0 -24
  309. package/src/examples/tables/authOtpTable.ts +0 -17
  310. package/src/examples/tables/cityTable.ts +0 -15
  311. package/src/examples/tables/usersTable.ts +0 -18
  312. package/src/examples/testEnum.ts +0 -6
  313. package/src/index.ts +0 -40
  314. package/src/indexes/tableIndex.ts +0 -19
  315. package/src/logger/abstractLogger.ts +0 -4
  316. package/src/logger/consoleLogger.ts +0 -11
  317. package/src/mappers/responseMapper.ts +0 -24
  318. package/src/migrator/migrator.ts +0 -110
  319. package/src/serializer/Untitled.js +0 -72
  320. package/src/serializer/out.json +0 -140
  321. package/src/tables/abstractTable.ts +0 -183
  322. package/src/tables/inferTypes.ts +0 -34
  323. package/src/tables/migrationsTable.ts +0 -12
  324. package/src/utils/ecranate.ts +0 -4
  325. package/tsconfig.json +0 -29
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const responseMapper_1 = require("../../../mappers/responseMapper");
4
+ const join_1 = require("../join");
5
+ const joinWith_1 = require("../joinWith");
6
+ const selectResponseThreeJoins_1 = require("../responses/selectResponseThreeJoins");
7
+ const abstractJoinBuilder_1 = require("./abstractJoinBuilder");
8
+ const selectWithFourJoins_1 = require("./selectWithFourJoins");
9
+ class SelectTRBWithThreeJoins extends abstractJoinBuilder_1.default {
10
+ constructor(table, session, filter, join1, join2, join3, props, orderBy, order, distinct) {
11
+ super(table, filter, session, props, orderBy, order, distinct);
12
+ this._join1 = join1;
13
+ this._join2 = join2;
14
+ this._join3 = join3;
15
+ }
16
+ innerJoin(table, from, to) {
17
+ const toTable = this._table.db.create(table);
18
+ const fromColumn = from(this._table);
19
+ const toColumn = to(toTable);
20
+ const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
21
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.INNER_JOIN);
22
+ return new selectWithFourJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, this._join3, join, this._props, this._orderBy, this._order, this._distinct);
23
+ }
24
+ leftJoin(table, from, to) {
25
+ const toTable = this._table.db.create(table);
26
+ const fromColumn = from(this._table);
27
+ const toColumn = to(toTable);
28
+ const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
29
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.LEFT_JOIN);
30
+ return new selectWithFourJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, this._join3, join, this._props, this._orderBy, this._order, this._distinct);
31
+ }
32
+ rightJoin(table, from, to) {
33
+ const toTable = this._table.db.create(table);
34
+ const fromColumn = from(this._table);
35
+ const toColumn = to(toTable);
36
+ const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
37
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.RIGHT_JOIN);
38
+ return new selectWithFourJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, this._join3, join, this._props, this._orderBy, this._order, this._distinct);
39
+ }
40
+ fullJoin(table, from, to) {
41
+ const toTable = this._table.db.create(table);
42
+ const fromColumn = from(this._table);
43
+ const toColumn = to(toTable);
44
+ const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
45
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.FULL_JOIN);
46
+ return new selectWithFourJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, this._join3, join, this._props, this._orderBy, this._order, this._distinct);
47
+ }
48
+ mapResponse(result) {
49
+ const parent = this._join1.mappedServiceToDb;
50
+ const parentTwo = this._join2.mappedServiceToDb;
51
+ const parentThree = this._join3.mappedServiceToDb;
52
+ const response = responseMapper_1.default.map(this._table.mapServiceToDb(), result);
53
+ const objects = responseMapper_1.default.map(parent, result);
54
+ const objectsTwo = responseMapper_1.default.map(parentTwo, result);
55
+ const objectsThree = responseMapper_1.default.map(parentThree, result);
56
+ return new selectResponseThreeJoins_1.default(response, objects, objectsTwo, objectsThree);
57
+ }
58
+ joins() {
59
+ return [this._join1, this._join2, this._join3];
60
+ }
61
+ }
62
+ exports.default = SelectTRBWithThreeJoins;
@@ -0,0 +1,34 @@
1
+ import { QueryResult } from 'pg';
2
+ import { AbstractColumn } from '../../../columns/column';
3
+ import ColumnType from '../../../columns/types/columnType';
4
+ import DB from '../../../db/db';
5
+ import Session from '../../../db/session';
6
+ import AbstractTable from '../../../tables/abstractTable';
7
+ import Order from '../../highLvlBuilders/order';
8
+ import Expr from '../../requestBuilders/where/where';
9
+ import Join from '../join';
10
+ import SelectResponseTwoJoins from '../responses/selectResponseTwoJoins';
11
+ import AbstractJoined from './abstractJoinBuilder';
12
+ import SelectTRBWithThreeJoins from './selectWithThreeJoins';
13
+ export default class SelectTRBWithTwoJoins<TTable extends AbstractTable<TTable>, TTable1, TTable2> extends AbstractJoined<TTable, SelectResponseTwoJoins<TTable, TTable1, TTable2>> {
14
+ private _join1;
15
+ private _join2;
16
+ constructor(table: TTable, session: Session, filter: Expr, join1: Join<TTable1>, join2: Join<TTable2>, props: {
17
+ limit?: number;
18
+ offset?: number;
19
+ }, orderBy?: AbstractColumn<ColumnType, boolean, boolean>, order?: Order, distinct?: AbstractColumn<ColumnType, boolean, boolean>);
20
+ innerJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
21
+ new (db: DB): IToTable;
22
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithThreeJoins<TTable, TTable1, TTable2, IToTable>;
23
+ leftJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
24
+ new (db: DB): IToTable;
25
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithThreeJoins<TTable, TTable1, TTable2, IToTable>;
26
+ rightJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
27
+ new (db: DB): IToTable;
28
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithThreeJoins<TTable, TTable1, TTable2, IToTable>;
29
+ fullJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
30
+ new (db: DB): IToTable;
31
+ }, from: (table: TTable) => AbstractColumn<TColumn>, to: (table: IToTable) => AbstractColumn<TColumn>): SelectTRBWithThreeJoins<TTable, TTable1, TTable2, IToTable>;
32
+ protected mapResponse(result: QueryResult<any>): SelectResponseTwoJoins<TTable, TTable1, TTable2>;
33
+ protected joins(): Join<any>[];
34
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const responseMapper_1 = require("../../../mappers/responseMapper");
4
+ const join_1 = require("../join");
5
+ const joinWith_1 = require("../joinWith");
6
+ const selectResponseTwoJoins_1 = require("../responses/selectResponseTwoJoins");
7
+ const abstractJoinBuilder_1 = require("./abstractJoinBuilder");
8
+ const selectWithThreeJoins_1 = require("./selectWithThreeJoins");
9
+ class SelectTRBWithTwoJoins extends abstractJoinBuilder_1.default {
10
+ constructor(table, session, filter, join1, join2, props, orderBy, order, distinct) {
11
+ super(table, filter, session, props, orderBy, order, distinct);
12
+ this._join1 = join1;
13
+ this._join2 = join2;
14
+ }
15
+ innerJoin(table, from, to) {
16
+ const toTable = this._table.db.create(table);
17
+ const fromColumn = from(this._table);
18
+ const toColumn = to(toTable);
19
+ const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
20
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.INNER_JOIN);
21
+ return new selectWithThreeJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, join, this._props, this._orderBy, this._order, this._distinct);
22
+ }
23
+ leftJoin(table, from, to) {
24
+ const toTable = this._table.db.create(table);
25
+ const fromColumn = from(this._table);
26
+ const toColumn = to(toTable);
27
+ const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
28
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.LEFT_JOIN);
29
+ return new selectWithThreeJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, join, this._props, this._orderBy, this._order, this._distinct);
30
+ }
31
+ rightJoin(table, from, to) {
32
+ const toTable = this._table.db.create(table);
33
+ const fromColumn = from(this._table);
34
+ const toColumn = to(toTable);
35
+ const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
36
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.RIGHT_JOIN);
37
+ return new selectWithThreeJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, join, this._props, this._orderBy, this._order, this._distinct);
38
+ }
39
+ fullJoin(table, from, to) {
40
+ const toTable = this._table.db.create(table);
41
+ const fromColumn = from(this._table);
42
+ const toColumn = to(toTable);
43
+ const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
44
+ .columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.FULL_JOIN);
45
+ return new selectWithThreeJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, join, this._props, this._orderBy, this._order, this._distinct);
46
+ }
47
+ mapResponse(result) {
48
+ const parent = this._join1.mappedServiceToDb;
49
+ const parentTwo = this._join2.mappedServiceToDb;
50
+ const response = responseMapper_1.default.map(this._table.mapServiceToDb(), result);
51
+ const objects = responseMapper_1.default.map(parent, result);
52
+ const objectsTwo = responseMapper_1.default.map(parentTwo, result);
53
+ return new selectResponseTwoJoins_1.default(response, objects, objectsTwo);
54
+ }
55
+ joins() {
56
+ return [this._join1, this._join2];
57
+ }
58
+ }
59
+ exports.default = SelectTRBWithTwoJoins;
@@ -0,0 +1,23 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import { ExtractModel } from '../../tables/inferTypes';
4
+ export default class Join<TTable> {
5
+ fromColumn: AbstractColumn<ColumnType, boolean, boolean>;
6
+ toColumn: AbstractColumn<ColumnType, boolean, boolean>;
7
+ joinTableName: string;
8
+ mappedServiceToDb: {
9
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
10
+ };
11
+ type: JoinStrategy;
12
+ constructor(joinTableName: string, fromColumn: AbstractColumn<ColumnType, boolean, boolean>, toColumn: AbstractColumn<ColumnType, boolean, boolean>, mappedServiceToDb: {
13
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
14
+ });
15
+ joinStrategy: (type: JoinStrategy) => Join<TTable>;
16
+ columns: (fromColumn: AbstractColumn<ColumnType>, toColumn: AbstractColumn<ColumnType>) => Join<TTable>;
17
+ }
18
+ export declare enum JoinStrategy {
19
+ INNER_JOIN = "INNER JOIN",
20
+ LEFT_JOIN = "LEFT JOIN",
21
+ RIGHT_JOIN = "RIGHT JOIN",
22
+ FULL_JOIN = "FULL JOIN"
23
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JoinStrategy = void 0;
4
+ class Join {
5
+ constructor(joinTableName, fromColumn, toColumn, mappedServiceToDb) {
6
+ this.joinStrategy = (type) => {
7
+ this.type = type;
8
+ return this;
9
+ };
10
+ this.columns = (fromColumn, toColumn) => {
11
+ this.toColumn = toColumn;
12
+ this.fromColumn = fromColumn;
13
+ return this;
14
+ };
15
+ this.joinTableName = joinTableName;
16
+ this.toColumn = toColumn;
17
+ this.fromColumn = fromColumn;
18
+ this.mappedServiceToDb = mappedServiceToDb;
19
+ }
20
+ }
21
+ exports.default = Join;
22
+ var JoinStrategy;
23
+ (function (JoinStrategy) {
24
+ JoinStrategy["INNER_JOIN"] = "INNER JOIN";
25
+ JoinStrategy["LEFT_JOIN"] = "LEFT JOIN";
26
+ JoinStrategy["RIGHT_JOIN"] = "RIGHT JOIN";
27
+ JoinStrategy["FULL_JOIN"] = "FULL JOIN";
28
+ })(JoinStrategy = exports.JoinStrategy || (exports.JoinStrategy = {}));
@@ -0,0 +1,14 @@
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
+ export default class JoinWith<TColumn extends ColumnType, TTable> {
6
+ joinTableName: string;
7
+ mappedServiceToDb: {
8
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<TColumn>;
9
+ };
10
+ constructor(joinTableName: string, mappedServiceToDb: {
11
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<TColumn>;
12
+ });
13
+ columns: (fromColumn: AbstractColumn<TColumn, boolean, boolean>, toColumn: AbstractColumn<TColumn, boolean, boolean>) => Join<TTable>;
14
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const join_1 = require("./join");
4
+ class JoinWith {
5
+ constructor(joinTableName, mappedServiceToDb) {
6
+ this.columns = (fromColumn, toColumn) => new join_1.default(this.joinTableName, fromColumn, toColumn, this.mappedServiceToDb);
7
+ this.joinTableName = joinTableName;
8
+ this.mappedServiceToDb = mappedServiceToDb;
9
+ }
10
+ }
11
+ exports.default = JoinWith;
@@ -0,0 +1,19 @@
1
+ import { ExtractModel } from '../../../tables/inferTypes';
2
+ export default class SelectResponseFiveJoins<T1, T2, T3, T4, T5, T6> {
3
+ _t1: Array<ExtractModel<T1> | undefined>;
4
+ _t2: Array<ExtractModel<T2> | undefined>;
5
+ _t3: Array<ExtractModel<T3> | undefined>;
6
+ _t4: Array<ExtractModel<T4> | undefined>;
7
+ _t5: Array<ExtractModel<T5> | undefined>;
8
+ _t6: Array<ExtractModel<T6> | undefined>;
9
+ constructor(t1: Array<ExtractModel<T1> | undefined>, t2: Array<ExtractModel<T2> | undefined>, t3: Array<ExtractModel<T3> | undefined>, t4: Array<ExtractModel<T4> | undefined>, t5: Array<ExtractModel<T5> | undefined>, t6: Array<ExtractModel<T6> | undefined>);
10
+ map: <M>(imac: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined, t5: ExtractModel<T5> | undefined, t6: ExtractModel<T6> | undefined) => M) => M[];
11
+ foreach: (imac: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined, t5: ExtractModel<T5> | undefined, t6: ExtractModel<T6> | undefined) => void) => void;
12
+ group: <TOne, TMany>({ one, many, }: {
13
+ one: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined, t5: ExtractModel<T5> | undefined, t6: ExtractModel<T6> | undefined) => TOne;
14
+ many: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined, t5: ExtractModel<T5> | undefined, t6: ExtractModel<T6> | undefined) => TMany;
15
+ }) => {
16
+ one: TOne;
17
+ many: TMany[];
18
+ };
19
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class SelectResponseFiveJoins {
4
+ constructor(t1, t2, t3, t4, t5, t6) {
5
+ this.map = (imac) => {
6
+ const objects = new Array();
7
+ for (let i = 0; i < this._t1.length; i += 1) {
8
+ objects.push(imac(this._t1[i], this._t2[i], this._t3[i], this._t4[i], this._t5[i], this._t6[i]));
9
+ }
10
+ return objects;
11
+ };
12
+ this.foreach = (imac) => {
13
+ for (let i = 0; i < this._t1.length; i += 1) {
14
+ imac(this._t1[i], this._t2[i], this._t3[i], this._t4[i], this._t5[i], this._t6[i]);
15
+ }
16
+ };
17
+ this.group = ({ one, many, }) => {
18
+ const objects = new Array();
19
+ for (let i = 0; i < this._t1.length; i += 1) {
20
+ objects.push(many(this._t1[i], this._t2[i], this._t3[i], this._t4[i], this._t5[i], this._t6[i]));
21
+ }
22
+ return {
23
+ one: one(this._t1[0], this._t2[0], this._t3[0], this._t4[0], this._t5[0], this._t6[0]),
24
+ many: objects,
25
+ };
26
+ };
27
+ this._t1 = t1;
28
+ this._t2 = t2;
29
+ this._t3 = t3;
30
+ this._t4 = t4;
31
+ this._t5 = t5;
32
+ this._t6 = t6;
33
+ }
34
+ }
35
+ exports.default = SelectResponseFiveJoins;
@@ -0,0 +1,18 @@
1
+ import { ExtractModel } from '../../../tables/inferTypes';
2
+ export default class SelectResponseFourJoins<T1, T2, T3, T4, T5> {
3
+ _t1: Array<ExtractModel<T1> | undefined>;
4
+ _t2: Array<ExtractModel<T2> | undefined>;
5
+ _t3: Array<ExtractModel<T3> | undefined>;
6
+ _t4: Array<ExtractModel<T4> | undefined>;
7
+ _t5: Array<ExtractModel<T5> | undefined>;
8
+ constructor(t1: Array<ExtractModel<T1> | undefined>, t2: Array<ExtractModel<T2> | undefined>, t3: Array<ExtractModel<T3> | undefined>, t4: Array<ExtractModel<T4> | undefined>, t5: Array<ExtractModel<T5> | undefined>);
9
+ map: <M>(imac: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined, t5: ExtractModel<T5> | undefined) => M) => M[];
10
+ foreach: (imac: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined, t5: ExtractModel<T5> | undefined) => void) => void;
11
+ group: <TOne, TMany>({ one, many, }: {
12
+ one: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined, t5: ExtractModel<T5> | undefined) => TOne;
13
+ many: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined, t5: ExtractModel<T5> | undefined) => TMany;
14
+ }) => {
15
+ one: TOne;
16
+ many: TMany[];
17
+ };
18
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class SelectResponseFourJoins {
4
+ constructor(t1, t2, t3, t4, t5) {
5
+ this.map = (imac) => {
6
+ const objects = new Array();
7
+ for (let i = 0; i < this._t1.length; i += 1) {
8
+ objects.push(imac(this._t1[i], this._t2[i], this._t3[i], this._t4[i], this._t5[i]));
9
+ }
10
+ return objects;
11
+ };
12
+ this.foreach = (imac) => {
13
+ for (let i = 0; i < this._t1.length; i += 1) {
14
+ imac(this._t1[i], this._t2[i], this._t3[i], this._t4[i], this._t5[i]);
15
+ }
16
+ };
17
+ this.group = ({ one, many, }) => {
18
+ const objects = new Array();
19
+ for (let i = 0; i < this._t1.length; i += 1) {
20
+ objects.push(many(this._t1[i], this._t2[i], this._t3[i], this._t4[i], this._t5[i]));
21
+ }
22
+ return {
23
+ one: one(this._t1[0], this._t2[0], this._t3[0], this._t4[0], this._t5[0]),
24
+ many: objects,
25
+ };
26
+ };
27
+ this._t1 = t1;
28
+ this._t2 = t2;
29
+ this._t3 = t3;
30
+ this._t4 = t4;
31
+ this._t5 = t5;
32
+ }
33
+ }
34
+ exports.default = SelectResponseFourJoins;
@@ -0,0 +1,17 @@
1
+ import { ExtractModel } from '../../../tables/inferTypes';
2
+ export default class SelectResponseThreeJoins<T1, T2, T3, T4> {
3
+ private _t1;
4
+ private _t2;
5
+ private _t3;
6
+ private _t4;
7
+ constructor(t1: Array<ExtractModel<T1> | undefined>, t2: Array<ExtractModel<T2> | undefined>, t3: Array<ExtractModel<T3> | undefined>, t4: Array<ExtractModel<T4> | undefined>);
8
+ map: <M>(imac: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined) => M) => M[];
9
+ foreach: (imac: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined) => void) => void;
10
+ group: <TOne, TMany>({ one, many, }: {
11
+ one: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined) => TOne;
12
+ many: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined, t4: ExtractModel<T4> | undefined) => TMany;
13
+ }) => {
14
+ one: TOne;
15
+ many: TMany[];
16
+ };
17
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class SelectResponseThreeJoins {
4
+ constructor(t1, t2, t3, t4) {
5
+ this.map = (imac) => {
6
+ const objects = new Array();
7
+ for (let i = 0; i < this._t1.length; i += 1) {
8
+ objects.push(imac(this._t1[i], this._t2[i], this._t3[i], this._t4[i]));
9
+ }
10
+ return objects;
11
+ };
12
+ this.foreach = (imac) => {
13
+ for (let i = 0; i < this._t1.length; i += 1) {
14
+ imac(this._t1[i], this._t2[i], this._t3[i], this._t4[i]);
15
+ }
16
+ };
17
+ this.group = ({ one, many, }) => {
18
+ const objects = new Array();
19
+ for (let i = 0; i < this._t1.length; i += 1) {
20
+ objects.push(many(this._t1[i], this._t2[i], this._t3[i], this._t4[i]));
21
+ }
22
+ return {
23
+ one: one(this._t1[0], this._t2[0], this._t3[0], this._t4[0]),
24
+ many: objects,
25
+ };
26
+ };
27
+ this._t1 = t1;
28
+ this._t2 = t2;
29
+ this._t3 = t3;
30
+ this._t4 = t4;
31
+ }
32
+ }
33
+ exports.default = SelectResponseThreeJoins;
@@ -0,0 +1,16 @@
1
+ import { ExtractModel } from '../../../tables/inferTypes';
2
+ export default class SelectResponseTwoJoins<T1, T2, T3> {
3
+ private _t1;
4
+ private _t2;
5
+ private _t3;
6
+ constructor(t1: Array<ExtractModel<T1> | undefined>, t2: Array<ExtractModel<T2> | undefined>, t3: Array<ExtractModel<T3> | undefined>);
7
+ map: <M>(imac: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined) => M) => M[];
8
+ foreach: (imac: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined) => void) => void;
9
+ group: <TOne, TMany>({ one, many, }: {
10
+ one: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined) => TOne;
11
+ many: (t1: ExtractModel<T1> | undefined, t2: ExtractModel<T2> | undefined, t3: ExtractModel<T3> | undefined) => TMany;
12
+ }) => {
13
+ one: TOne;
14
+ many: TMany[];
15
+ };
16
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class SelectResponseTwoJoins {
4
+ constructor(t1, t2, t3) {
5
+ this.map = (imac) => {
6
+ const objects = new Array();
7
+ for (let i = 0; i < this._t1.length; i += 1) {
8
+ objects.push(imac(this._t1[i], this._t2[i], this._t3[i]));
9
+ }
10
+ return objects;
11
+ };
12
+ this.foreach = (imac) => {
13
+ for (let i = 0; i < this._t1.length; i += 1) {
14
+ imac(this._t1[i], this._t2[i], this._t3[i]);
15
+ }
16
+ };
17
+ this.group = ({ one, many, }) => {
18
+ const objects = new Array();
19
+ for (let i = 0; i < this._t1.length; i += 1) {
20
+ objects.push(many(this._t1[i], this._t2[i], this._t3[i]));
21
+ }
22
+ return {
23
+ one: one(this._t1[0], this._t2[0], this._t3[0]),
24
+ many: objects,
25
+ };
26
+ };
27
+ this._t1 = t1;
28
+ this._t2 = t2;
29
+ this._t3 = t3;
30
+ }
31
+ }
32
+ exports.default = SelectResponseTwoJoins;
@@ -0,0 +1,15 @@
1
+ import { ExtractModel } from '../../../tables/inferTypes';
2
+ export default class SelectResponseJoin<TTable1, TTable2> {
3
+ private _t1;
4
+ private _t2;
5
+ constructor(t1: Array<ExtractModel<TTable1> | undefined>, t2: Array<ExtractModel<TTable2> | undefined>);
6
+ map: <M>(imac: (t1: ExtractModel<TTable1> | undefined, t2: ExtractModel<TTable2> | undefined) => M) => M[];
7
+ foreach: (imac: (t1: ExtractModel<TTable1> | undefined, t2: ExtractModel<TTable2> | undefined) => void) => void;
8
+ group: <TOne, TMany>({ one, many, }: {
9
+ one: (t1: ExtractModel<TTable1> | undefined, t2: ExtractModel<TTable2> | undefined) => TOne;
10
+ many: (t1: ExtractModel<TTable1> | undefined, t2: ExtractModel<TTable2> | undefined) => TMany;
11
+ }) => {
12
+ one: TOne;
13
+ many: TMany[];
14
+ };
15
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class SelectResponseJoin {
4
+ constructor(t1, t2) {
5
+ this.map = (imac) => {
6
+ const objects = new Array();
7
+ for (let i = 0; i < this._t1.length; i += 1) {
8
+ objects.push(imac(this._t1[i], this._t2[i]));
9
+ }
10
+ return objects;
11
+ };
12
+ this.foreach = (imac) => {
13
+ for (let i = 0; i < this._t1.length; i += 1) {
14
+ imac(this._t1[i], this._t2[i]);
15
+ }
16
+ };
17
+ this.group = ({ one, many, }) => {
18
+ const objects = new Array();
19
+ for (let i = 0; i < this._t1.length; i += 1) {
20
+ objects.push(many(this._t1[i], this._t2[i]));
21
+ }
22
+ return {
23
+ one: one(this._t1[0], this._t2[0]),
24
+ many: objects,
25
+ };
26
+ };
27
+ this._t1 = t1;
28
+ this._t2 = t2;
29
+ }
30
+ }
31
+ exports.default = SelectResponseJoin;
@@ -0,0 +1,5 @@
1
+ import ColumnType from '../../columns/types/columnType';
2
+ import AbstractTable from '../../tables/abstractTable';
3
+ import JoinWith from './joinWith';
4
+ declare const to: <TTable extends AbstractTable<TTable>>(table: AbstractTable<TTable>) => JoinWith<ColumnType<{}>, TTable>;
5
+ export default to;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const joinWith_1 = require("./joinWith");
4
+ const to = (table) => new joinWith_1.default(table.tableName(), table.mapServiceToDb());
5
+ // eslint-disable-next-line import/prefer-default-export
6
+ exports.default = to;
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,12 @@
1
+ import AbstractTable from '../../tables/abstractTable';
2
+ export default class Create<TTable extends AbstractTable<TTable>> {
3
+ private tableBuilder;
4
+ private enumBuilder;
5
+ private columnsBuilder;
6
+ private primaryKey;
7
+ private uniqueKey;
8
+ private tableClass;
9
+ private constructor();
10
+ static table: <StaticTTable extends AbstractTable<StaticTTable>>(tableClass: AbstractTable<StaticTTable>) => Create<StaticTTable>;
11
+ build: () => string;
12
+ }
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const column_1 = require("../../columns/column");
4
+ const pgEnum_1 = require("../../columns/types/pgEnum");
5
+ const ecranate_1 = require("../../utils/ecranate");
6
+ class Create {
7
+ constructor(tableClass) {
8
+ this.tableBuilder = [];
9
+ this.enumBuilder = [];
10
+ this.columnsBuilder = [];
11
+ this.primaryKey = [];
12
+ this.uniqueKey = [];
13
+ this.build = () => {
14
+ this.tableBuilder.push('CREATE TABLE IF NOT EXISTS ');
15
+ this.tableBuilder.push(this.tableClass.tableName());
16
+ this.tableBuilder.push(' (');
17
+ const tableValues = Object.values(this.tableClass);
18
+ const columns = tableValues.filter((value) => value instanceof column_1.Column);
19
+ for (let i = 0; i < columns.length; i += 1) {
20
+ const column = columns[i];
21
+ if (column instanceof column_1.Column) {
22
+ const columnType = column.getColumnType();
23
+ if (columnType instanceof pgEnum_1.default) {
24
+ // eslint-disable-next-line new-cap
25
+ const enumValues = Object.values(columnType.codeType);
26
+ let resValue = '';
27
+ for (let j = 0; j < enumValues.length; j += 1) {
28
+ resValue += `'${enumValues[j]}'`;
29
+ if (j !== enumValues.length - 1) {
30
+ resValue += ',';
31
+ }
32
+ }
33
+ this.enumBuilder.push(`DO $$ BEGIN
34
+ CREATE TYPE ${columnType.dbName} AS ENUM (${resValue});
35
+ EXCEPTION
36
+ WHEN duplicate_object THEN null;
37
+ END $$;`);
38
+ }
39
+ this.columnsBuilder.push(ecranate_1.ecranate(column.getColumnName()));
40
+ this.columnsBuilder.push(' ');
41
+ this.columnsBuilder.push(column.isAutoIncrement() ? 'SERIAL' : column.getColumnType().getDbName());
42
+ this.columnsBuilder.push(' ');
43
+ this.columnsBuilder.push(column.getDefaultValue() != null ? `DEFAULT ${column.getColumnType().insertStrategy(column.getDefaultValue())}` : '');
44
+ this.columnsBuilder.push(column.isNullableFlag ? '' : ' NOT NULL');
45
+ const referenced = column.getReferenced();
46
+ this.columnsBuilder.push(referenced != null ? ` REFERENCES ${referenced.getParentName()} (${referenced.getColumnName()})` : '');
47
+ if (i !== columns.length - 1) {
48
+ this.columnsBuilder.push(',');
49
+ }
50
+ }
51
+ }
52
+ const primaryKeys = [];
53
+ const uniqueKeys = [];
54
+ Object.values(this.tableClass).forEach((field) => {
55
+ if (field instanceof column_1.Column) {
56
+ if (field.primaryKeyName) {
57
+ primaryKeys.push(field);
58
+ }
59
+ if (field.uniqueKeyName) {
60
+ uniqueKeys.push(field);
61
+ }
62
+ }
63
+ });
64
+ if (primaryKeys.length !== 0) {
65
+ this.primaryKey.push(',');
66
+ this.primaryKey.push(`\nCONSTRAINT ${this.tableClass.tableName()}_${primaryKeys[0].getColumnName()}`);
67
+ this.primaryKey.push(' PRIMARY KEY(');
68
+ for (let i = 0; i < primaryKeys.length; i += 1) {
69
+ const column = primaryKeys[i];
70
+ this.primaryKey.push(column.getColumnName());
71
+ if (i !== primaryKeys.length - 1) {
72
+ this.primaryKey.push(',');
73
+ }
74
+ }
75
+ this.primaryKey.push(')');
76
+ }
77
+ if (uniqueKeys.length !== 0) {
78
+ const columnName = uniqueKeys[0].getColumnName();
79
+ this.uniqueKey.push(',');
80
+ this.uniqueKey.push(`\nCONSTRAINT ${this.tableClass.tableName()}_${columnName}`);
81
+ this.uniqueKey.push(' UNIQUE(');
82
+ for (let i = 0; i < uniqueKeys.length; i += 1) {
83
+ const column = uniqueKeys[i];
84
+ this.uniqueKey.push(column.getColumnName());
85
+ if (i !== uniqueKeys.length - 1) {
86
+ this.uniqueKey.push(',');
87
+ }
88
+ }
89
+ this.uniqueKey.push(')');
90
+ }
91
+ return `${this.enumBuilder.join('')} ${this.tableBuilder.join('') + this.columnsBuilder.join('') + this.primaryKey.join('') + this.uniqueKey.join('')});`;
92
+ };
93
+ this.tableClass = tableClass;
94
+ }
95
+ }
96
+ exports.default = Create;
97
+ Create.table = (tableClass) => new Create(tableClass);
@@ -0,0 +1,5 @@
1
+ import { AbstractTable } from '../../../tables';
2
+ import DeleteFrom from './deleteFrom';
3
+ export default class Delete {
4
+ static from: <TTable extends AbstractTable<TTable>>(table: AbstractTable<TTable>) => DeleteFrom;
5
+ }