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,9 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import { AbstractTable } from '../../tables';
4
+ export default class Aggregator {
5
+ protected _fields: Array<string>;
6
+ protected _table: AbstractTable<any>;
7
+ constructor(table: AbstractTable<any>);
8
+ protected generateSelectArray: (table: string, columns: AbstractColumn<ColumnType>[]) => string[];
9
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const column_1 = require("../../columns/column");
4
+ const ecranate_1 = require("../../utils/ecranate");
5
+ class Aggregator {
6
+ constructor(table) {
7
+ this._fields = [];
8
+ this.generateSelectArray = (table, columns) => {
9
+ const selectFields = [];
10
+ columns.forEach((field) => {
11
+ if (field instanceof column_1.Column) {
12
+ selectFields.push(' ');
13
+ selectFields.push(table);
14
+ selectFields.push('.');
15
+ selectFields.push(ecranate_1.ecranate(field.getColumnName()));
16
+ selectFields.push(' AS ');
17
+ selectFields.push(ecranate_1.ecranate(`${table.replace('.', '_')}_${field.getColumnName()}`));
18
+ selectFields.push(',');
19
+ }
20
+ });
21
+ selectFields.pop();
22
+ return selectFields;
23
+ };
24
+ this._table = table;
25
+ this._fields = this.generateSelectArray(this._table.tableName(), Object.values(this._table.mapServiceToDb()));
26
+ }
27
+ }
28
+ exports.default = Aggregator;
@@ -0,0 +1,12 @@
1
+ import { AbstractTable } from '../../tables';
2
+ import Expr from '../requestBuilders/where/where';
3
+ import Aggregator from './abstractAggregator';
4
+ export default class DeleteAggregator extends Aggregator {
5
+ private _from;
6
+ private _filters;
7
+ private _delete;
8
+ constructor(table: AbstractTable<any>);
9
+ filters: (filters: Expr) => DeleteAggregator;
10
+ appendFrom: (tableName: string) => DeleteAggregator;
11
+ buildQuery: () => string;
12
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const abstractAggregator_1 = require("./abstractAggregator");
4
+ class DeleteAggregator extends abstractAggregator_1.default {
5
+ constructor(table) {
6
+ super(table);
7
+ this._from = [];
8
+ this._filters = [];
9
+ this._delete = ['DELETE'];
10
+ this.filters = (filters) => {
11
+ if (filters) {
12
+ this._filters.push('WHERE ');
13
+ this._filters.push(filters.toQuery());
14
+ }
15
+ return this;
16
+ };
17
+ this.appendFrom = (tableName) => {
18
+ this._from.push(' FROM ');
19
+ this._from.push(tableName);
20
+ return this;
21
+ };
22
+ this.buildQuery = () => {
23
+ // this._delete.push(this._fields.join(''));
24
+ this._delete.push('\n');
25
+ this._delete.push(this._from.join(''));
26
+ this._delete.push('\n');
27
+ this._delete.push(this._filters.join(''));
28
+ this._delete.push('\n');
29
+ this._delete.push('RETURNING');
30
+ this._delete.push('\n');
31
+ this._delete.push(this._fields.join(''));
32
+ return this._delete.join('');
33
+ };
34
+ }
35
+ }
36
+ exports.default = DeleteAggregator;
@@ -0,0 +1,18 @@
1
+ import { AbstractTable } from '../../tables';
2
+ import { Indexing } from '../../tables/inferTypes';
3
+ import UpdateExpr from '../requestBuilders/updates/updates';
4
+ import Aggregator from './abstractAggregator';
5
+ export default class InsertAggregator extends Aggregator {
6
+ private _onConflict;
7
+ private _columns;
8
+ private _values;
9
+ private _from;
10
+ private _insert;
11
+ constructor(table: AbstractTable<any>);
12
+ appendColumns: () => void;
13
+ appendValues: (values: {
14
+ [name: string]: any;
15
+ }[]) => void;
16
+ appendOnConflict: (column: Indexing, updates?: UpdateExpr | undefined) => this;
17
+ buildQuery: () => string;
18
+ }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const column_1 = require("../../columns/column");
4
+ const abstractAggregator_1 = require("./abstractAggregator");
5
+ class InsertAggregator extends abstractAggregator_1.default {
6
+ constructor(table) {
7
+ super(table);
8
+ this._onConflict = [];
9
+ this._columns = [];
10
+ this._values = [];
11
+ this._from = [];
12
+ this._insert = ['INSERT INTO'];
13
+ this.appendColumns = () => {
14
+ const mapper = this._table.mapServiceToDb();
15
+ const columns = Object.values(mapper);
16
+ for (let i = 0; i < columns.length; i += 1) {
17
+ const column = columns[i];
18
+ this._columns.push('"');
19
+ this._columns.push(column.getColumnName());
20
+ this._columns.push('"');
21
+ if (i < columns.length - 1) {
22
+ this._columns.push(', ');
23
+ }
24
+ }
25
+ };
26
+ this.appendValues = (values) => {
27
+ // @TODO Check if values not empty
28
+ const mapper = this._table.mapServiceToDb();
29
+ for (let i = 0; i < values.length; i += 1) {
30
+ const value = values[i];
31
+ this._values.push('(');
32
+ const entries = Object.entries(mapper);
33
+ entries.forEach(([key], index) => {
34
+ const valueToInsert = value[key];
35
+ const isKeyExistsInValue = key.toString() in value;
36
+ const column = mapper[key];
37
+ if (isKeyExistsInValue) {
38
+ if (valueToInsert !== undefined && valueToInsert !== null) {
39
+ this._values.push(column.getColumnType().insertStrategy(valueToInsert));
40
+ }
41
+ else {
42
+ this._values.push('null');
43
+ }
44
+ }
45
+ else {
46
+ this._values.push('DEFAULT');
47
+ }
48
+ if (index < entries.length - 1) {
49
+ this._values.push(', ');
50
+ }
51
+ });
52
+ if (i < values.length - 1) {
53
+ this._values.push('),\n');
54
+ }
55
+ else {
56
+ this._values.push(')\n');
57
+ }
58
+ }
59
+ };
60
+ this.appendOnConflict = (column, updates) => {
61
+ if (column) {
62
+ const indexName = column instanceof column_1.IndexedColumn
63
+ ? column.getColumnName() : column.getColumns().map((it) => it.getColumnName()).join(',');
64
+ this._onConflict.push(`ON CONFLICT (${indexName})\n`);
65
+ if (updates) {
66
+ this._onConflict.push('DO UPDATE\n');
67
+ this._onConflict.push(`SET ${updates.toQuery()}`);
68
+ }
69
+ else {
70
+ this._onConflict.push('DO NOTHING\n');
71
+ }
72
+ }
73
+ return this;
74
+ };
75
+ this.buildQuery = () => {
76
+ this._insert.push(this._from.join(''));
77
+ this._insert.push(' (');
78
+ this._insert.push(this._columns.join(''));
79
+ this._insert.push(') ');
80
+ this._insert.push('VALUES\n');
81
+ this._insert.push(this._values.join(''));
82
+ this._insert.push('\n');
83
+ this._insert.push(this._onConflict.join(''));
84
+ this._insert.push('\n');
85
+ this._insert.push('RETURNING');
86
+ this._insert.push('\n');
87
+ this._insert.push(this._fields.join(''));
88
+ return this._insert.join('');
89
+ };
90
+ this._from.push(' ');
91
+ this._from.push(table.tableName());
92
+ }
93
+ }
94
+ exports.default = InsertAggregator;
@@ -0,0 +1,26 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import { AbstractTable } from '../../tables';
4
+ import Order from '../highLvlBuilders/order';
5
+ import Join from '../joinBuilders/join';
6
+ import Expr from '../requestBuilders/where/where';
7
+ import Aggregator from './abstractAggregator';
8
+ export default class SelectAggregator extends Aggregator {
9
+ private _from;
10
+ private _filters;
11
+ private _select;
12
+ private _join;
13
+ private _limit;
14
+ private _offset;
15
+ private _distinct;
16
+ private _orderBy;
17
+ constructor(table: AbstractTable<any>);
18
+ filters: (filters: Expr) => SelectAggregator;
19
+ limit: (limit?: number | undefined) => SelectAggregator;
20
+ offset: (offset?: number | undefined) => SelectAggregator;
21
+ orderBy: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean> | undefined, order?: Order | undefined) => SelectAggregator;
22
+ distinct: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean> | undefined) => SelectAggregator;
23
+ appendFrom: (tableName: string) => SelectAggregator;
24
+ join: (joins: Array<Join<any> | undefined>) => SelectAggregator;
25
+ buildQuery: () => string;
26
+ }
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const ecranate_1 = require("../../utils/ecranate");
4
+ const order_1 = require("../highLvlBuilders/order");
5
+ const abstractAggregator_1 = require("./abstractAggregator");
6
+ class SelectAggregator extends abstractAggregator_1.default {
7
+ constructor(table) {
8
+ super(table);
9
+ this._from = [];
10
+ this._filters = [];
11
+ this._select = ['SELECT'];
12
+ this._join = [];
13
+ this._limit = [];
14
+ this._offset = [];
15
+ this._distinct = [];
16
+ // private _groupBy: Array<string> = [];
17
+ this._orderBy = [];
18
+ this.filters = (filters) => {
19
+ if (filters) {
20
+ this._filters.push('WHERE ');
21
+ this._filters.push(filters.toQuery());
22
+ }
23
+ return this;
24
+ };
25
+ this.limit = (limit) => {
26
+ if (limit) {
27
+ this._limit.push('LIMIT ');
28
+ this._limit.push(limit.toString());
29
+ }
30
+ return this;
31
+ };
32
+ this.offset = (offset) => {
33
+ if (offset) {
34
+ this._offset.push('OFFSET ');
35
+ this._offset.push(offset.toString());
36
+ }
37
+ return this;
38
+ };
39
+ this.orderBy = (column, order) => {
40
+ if (column !== null && column !== undefined) {
41
+ this._orderBy.push('ORDER BY ');
42
+ this._orderBy.push(`${column.getColumnName()} `);
43
+ this._orderBy.push(order_1.default[order]);
44
+ }
45
+ return this;
46
+ };
47
+ this.distinct = (column) => {
48
+ if (column) {
49
+ this._distinct.push(` DISTINCT ON(${column.getParent()}.${ecranate_1.ecranate(column.getColumnName())}) `);
50
+ }
51
+ return this;
52
+ };
53
+ this.appendFrom = (tableName) => {
54
+ this._from.push('FROM ');
55
+ this._from.push(tableName);
56
+ return this;
57
+ };
58
+ // Add select generator for second table also
59
+ this.join = (joins) => {
60
+ joins.forEach((join) => {
61
+ if (join) {
62
+ const tableFrom = join.fromColumn.getParentName();
63
+ const tableTo = join.toColumn.getParentName();
64
+ const { type } = join;
65
+ const selectString = this.generateSelectArray(tableTo, Object.values(join.mappedServiceToDb)).join('');
66
+ this._fields.push(', ');
67
+ this._fields.push(selectString);
68
+ this._join.push('\n');
69
+ this._join.push(type);
70
+ this._join.push(' ');
71
+ this._join.push(tableTo);
72
+ this._join.push('\n');
73
+ this._join.push('ON ');
74
+ this._join.push(tableFrom);
75
+ this._join.push('.');
76
+ this._join.push(join.fromColumn.getColumnName());
77
+ this._join.push(' = ');
78
+ this._join.push(tableTo);
79
+ this._join.push('.');
80
+ this._join.push(join.toColumn.getColumnName());
81
+ }
82
+ });
83
+ return this;
84
+ };
85
+ this.buildQuery = () => {
86
+ this._select.push(this._distinct.join(''));
87
+ this._select.push(this._fields.join(''));
88
+ this._select.push('\n');
89
+ this._select.push(this._from.join(''));
90
+ this._select.push('\n');
91
+ this._select.push(this._join.join(''));
92
+ if (this._join.length > 0) {
93
+ this._select.push('\n');
94
+ }
95
+ this._select.push(this._filters.join(''));
96
+ this._select.push('\n');
97
+ this._select.push(this._orderBy.join(''));
98
+ this._select.push('\n');
99
+ this._select.push(this._limit.join(''));
100
+ this._select.push('\n');
101
+ this._select.push(this._offset.join(''));
102
+ return this._select.join('');
103
+ };
104
+ }
105
+ }
106
+ exports.default = SelectAggregator;
@@ -0,0 +1,15 @@
1
+ import { AbstractTable } from '../../tables';
2
+ import UpdateExpr from '../requestBuilders/updates/updates';
3
+ import Expr from '../requestBuilders/where/where';
4
+ import Aggregator from './abstractAggregator';
5
+ export default class UpdateAggregator extends Aggregator {
6
+ private _updates;
7
+ private _filters;
8
+ private _from;
9
+ private _update;
10
+ constructor(table: AbstractTable<any>);
11
+ where: (filters: Expr) => UpdateAggregator;
12
+ appendFrom: (tableName: string) => UpdateAggregator;
13
+ set: (updates: UpdateExpr) => UpdateAggregator;
14
+ buildQuery: () => string;
15
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const abstractAggregator_1 = require("./abstractAggregator");
4
+ class UpdateAggregator extends abstractAggregator_1.default {
5
+ constructor(table) {
6
+ super(table);
7
+ this._updates = [];
8
+ this._filters = [];
9
+ this._from = [];
10
+ this._update = ['UPDATE'];
11
+ this.where = (filters) => {
12
+ if (filters) {
13
+ this._filters.push('WHERE ');
14
+ this._filters.push(filters.toQuery());
15
+ }
16
+ return this;
17
+ };
18
+ this.appendFrom = (tableName) => {
19
+ this._from.push(' ');
20
+ this._from.push(tableName);
21
+ return this;
22
+ };
23
+ this.set = (updates) => {
24
+ this._updates.push(`\nSET ${updates.toQuery()}`);
25
+ return this;
26
+ };
27
+ this.buildQuery = () => {
28
+ this._update.push(this._from.join(''));
29
+ this._update.push('\n');
30
+ this._update.push(this._updates.join(''));
31
+ this._update.push('\n');
32
+ this._update.push(this._filters.join(''));
33
+ this._update.push('\n');
34
+ this._update.push('RETURNING');
35
+ this._update.push('\n');
36
+ this._update.push(this._fields.join(''));
37
+ return this._update.join('');
38
+ };
39
+ }
40
+ }
41
+ exports.default = UpdateAggregator;
@@ -0,0 +1,21 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import Session from '../../db/session';
4
+ import BaseLogger from '../../logger/abstractLogger';
5
+ import { AbstractTable } from '../../tables';
6
+ import { ExtractModel } from '../../tables/inferTypes';
7
+ export default abstract class TableRequestBuilder<TTable extends AbstractTable<TTable>> {
8
+ protected _table: TTable;
9
+ protected _session: Session;
10
+ protected _mappedServiceToDb: {
11
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
12
+ };
13
+ protected _columns: AbstractColumn<ColumnType>[];
14
+ protected _logger?: BaseLogger;
15
+ constructor(table: AbstractTable<TTable>, session: Session, mappedServiceToDb: {
16
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
17
+ }, logger?: BaseLogger);
18
+ all: () => Promise<Array<ExtractModel<TTable> | undefined>>;
19
+ first: () => Promise<ExtractModel<TTable> | undefined>;
20
+ protected abstract _execute(): Promise<Array<ExtractModel<TTable> | undefined>>;
21
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class TableRequestBuilder {
4
+ constructor(table, session, mappedServiceToDb, logger) {
5
+ this.all = async () => {
6
+ const res = await this._execute();
7
+ return res;
8
+ };
9
+ this.first = async () => {
10
+ const executionRes = await this._execute();
11
+ // TODO add checks for undefined or null
12
+ return executionRes[0];
13
+ };
14
+ this._mappedServiceToDb = mappedServiceToDb;
15
+ this._table = table;
16
+ this._session = session;
17
+ this._columns = Object.values(mappedServiceToDb);
18
+ this._logger = logger;
19
+ }
20
+ }
21
+ exports.default = TableRequestBuilder;
@@ -0,0 +1,17 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import Session from '../../db/session';
4
+ import BaseLogger from '../../logger/abstractLogger';
5
+ import { AbstractTable } from '../../tables';
6
+ import { ExtractModel } from '../../tables/inferTypes';
7
+ import Expr from '../requestBuilders/where/where';
8
+ import TableRequestBuilder from './abstractRequestBuilder';
9
+ export default class DeleteTRB<TTable extends AbstractTable<TTable>> extends TableRequestBuilder<TTable> {
10
+ private _filter;
11
+ constructor(table: AbstractTable<TTable>, session: Session, mappedServiceToDb: {
12
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
13
+ }, logger?: BaseLogger);
14
+ where: (expr: Expr) => DeleteTRB<TTable>;
15
+ execute: () => Promise<void>;
16
+ protected _execute: () => Promise<Array<ExtractModel<TTable> | undefined>>;
17
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const builderError_1 = require("../../errors/builderError");
4
+ const dbErrors_1 = require("../../errors/dbErrors");
5
+ const responseMapper_1 = require("../../mappers/responseMapper");
6
+ const delete_1 = require("../lowLvlBuilders/delets/delete");
7
+ const abstractRequestBuilder_1 = require("./abstractRequestBuilder");
8
+ class DeleteTRB extends abstractRequestBuilder_1.default {
9
+ constructor(table, session, mappedServiceToDb, logger) {
10
+ super(table, session, mappedServiceToDb, logger);
11
+ this.where = (expr) => {
12
+ this._filter = expr;
13
+ return this;
14
+ };
15
+ this.execute = async () => {
16
+ await this._execute();
17
+ };
18
+ this._execute = async () => {
19
+ const queryBuilder = delete_1.default
20
+ .from(this._table)
21
+ .filteredBy(this._filter);
22
+ let query = '';
23
+ try {
24
+ query = queryBuilder.build();
25
+ }
26
+ catch (e) {
27
+ throw new builderError_1.default(builderError_1.BuilderType.DELETE, this._table.tableName(), this._columns, e, this._filter);
28
+ }
29
+ if (this._logger) {
30
+ this._logger.info(`Deleting from ${this._table.tableName()} using query:\n ${query}`);
31
+ }
32
+ const result = await this._session.execute(query);
33
+ if (result.isLeft()) {
34
+ const { reason } = result.value;
35
+ throw new dbErrors_1.DatabaseDeleteError(this._table.tableName(), reason, query);
36
+ }
37
+ else {
38
+ return responseMapper_1.default.map(this._mappedServiceToDb, result.value);
39
+ }
40
+ };
41
+ }
42
+ }
43
+ exports.default = DeleteTRB;
@@ -0,0 +1,18 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import Session from '../../db/session';
4
+ import BaseLogger from '../../logger/abstractLogger';
5
+ import { AbstractTable } from '../../tables';
6
+ import { ExtractModel, Indexing } from '../../tables/inferTypes';
7
+ import TableRequestBuilder from './abstractRequestBuilder';
8
+ export default class InsertTRB<TTable extends AbstractTable<TTable>> extends TableRequestBuilder<TTable> {
9
+ private _values;
10
+ private _onConflict;
11
+ private _onConflictField;
12
+ constructor(values: ExtractModel<TTable>[], session: Session, mappedServiceToDb: {
13
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
14
+ }, table: AbstractTable<TTable>, logger?: BaseLogger);
15
+ execute: () => Promise<void>;
16
+ onConflict: (callback: (table: TTable) => Indexing, update: Partial<ExtractModel<TTable>>) => InsertTRB<TTable>;
17
+ protected _execute: () => Promise<Array<ExtractModel<TTable> | undefined>>;
18
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const __1 = require("..");
4
+ const builderError_1 = require("../../errors/builderError");
5
+ const dbErrors_1 = require("../../errors/dbErrors");
6
+ const responseMapper_1 = require("../../mappers/responseMapper");
7
+ const insert_1 = require("../lowLvlBuilders/inserts/insert");
8
+ const abstractRequestBuilder_1 = require("./abstractRequestBuilder");
9
+ class InsertTRB extends abstractRequestBuilder_1.default {
10
+ constructor(values, session, mappedServiceToDb, table, logger) {
11
+ super(table, session, mappedServiceToDb, logger);
12
+ this.execute = async () => {
13
+ await this._execute();
14
+ };
15
+ this.onConflict = (callback, update) => {
16
+ this._onConflictField = callback(this._table);
17
+ const updates = [];
18
+ Object.entries(update).forEach(([key, value]) => {
19
+ const column = this._mappedServiceToDb[key];
20
+ updates.push(__1.set(column, value));
21
+ });
22
+ this._onConflict = __1.combine(updates);
23
+ return this;
24
+ };
25
+ this._execute = async () => {
26
+ if (!this._values)
27
+ throw Error('Values should be provided firestly\nExample: table.values().execute()');
28
+ const queryBuilder = insert_1.default
29
+ .into(this._table)
30
+ .values(this._values)
31
+ .onConflict(this._onConflict, this._onConflictField);
32
+ let query = '';
33
+ try {
34
+ query = queryBuilder.build();
35
+ }
36
+ catch (e) {
37
+ throw new builderError_1.default(builderError_1.BuilderType.INSERT, this._table.tableName(), this._columns, e);
38
+ }
39
+ if (this._logger) {
40
+ this._logger.info(`Inserting to ${this._table.tableName()} using query:\n ${query}`);
41
+ }
42
+ const result = await this._session.execute(query);
43
+ if (result.isLeft()) {
44
+ const { reason } = result.value;
45
+ throw new dbErrors_1.DatabaseInsertError(this._table.tableName(), reason, query);
46
+ }
47
+ else {
48
+ return responseMapper_1.default.map(this._mappedServiceToDb, result.value);
49
+ }
50
+ };
51
+ this._values = values;
52
+ }
53
+ }
54
+ exports.default = InsertTRB;
@@ -0,0 +1,5 @@
1
+ declare enum Order {
2
+ ASC = 0,
3
+ DESC = 1
4
+ }
5
+ export default Order;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var Order;
4
+ (function (Order) {
5
+ Order[Order["ASC"] = 0] = "ASC";
6
+ Order[Order["DESC"] = 1] = "DESC";
7
+ })(Order || (Order = {}));
8
+ exports.default = Order;
@@ -0,0 +1,42 @@
1
+ import { AbstractColumn } from '../../columns/column';
2
+ import ColumnType from '../../columns/types/columnType';
3
+ import DB from '../../db/db';
4
+ import Session from '../../db/session';
5
+ import BaseLogger from '../../logger/abstractLogger';
6
+ import { AbstractTable } from '../../tables';
7
+ import { ExtractModel } from '../../tables/inferTypes';
8
+ import SelectTRBWithJoin from '../joinBuilders/builders/selectWithJoin';
9
+ import Expr from '../requestBuilders/where/where';
10
+ import TableRequestBuilder from './abstractRequestBuilder';
11
+ import Order from './order';
12
+ export default class SelectTRB<TTable extends AbstractTable<TTable>> extends TableRequestBuilder<TTable> {
13
+ protected _filter: Expr;
14
+ private props;
15
+ private __orderBy?;
16
+ private __groupBy?;
17
+ private __order?;
18
+ private __distinct;
19
+ constructor(session: Session, mappedServiceToDb: {
20
+ [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
21
+ }, props: {
22
+ limit?: number;
23
+ offset?: number;
24
+ }, table: AbstractTable<TTable>, logger?: BaseLogger);
25
+ where: (expr: Expr) => SelectTRB<TTable>;
26
+ orderBy<TColumnType extends ColumnType>(callback: (table: TTable) => AbstractColumn<TColumnType, boolean, boolean>, order: Order): SelectTRB<TTable>;
27
+ distinct: (column: AbstractColumn<ColumnType<any>, boolean, boolean>) => SelectTRB<TTable>;
28
+ innerJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
29
+ new (db: DB): IToTable;
30
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithJoin<TTable, IToTable>;
31
+ leftJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
32
+ new (db: DB): IToTable;
33
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithJoin<TTable, IToTable>;
34
+ rightJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
35
+ new (db: DB): IToTable;
36
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithJoin<TTable, IToTable>;
37
+ fullJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
38
+ new (db: DB): IToTable;
39
+ }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithJoin<TTable, IToTable>;
40
+ execute: () => Promise<(ExtractModel<TTable> | undefined)[]>;
41
+ protected _execute: () => Promise<Array<ExtractModel<TTable> | undefined>>;
42
+ }