drizzle-orm 0.10.23 → 0.10.26

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 (243) hide show
  1. package/LICENSE +674 -0
  2. package/package.json +16 -12
  3. package/README.md +0 -439
  4. package/builders/aggregators/abstractAggregator.d.ts +0 -11
  5. package/builders/aggregators/abstractAggregator.js +0 -35
  6. package/builders/aggregators/deleteAggregator.d.ts +0 -16
  7. package/builders/aggregators/deleteAggregator.js +0 -39
  8. package/builders/aggregators/insertAggregator.d.ts +0 -22
  9. package/builders/aggregators/insertAggregator.js +0 -103
  10. package/builders/aggregators/selectAggregator.d.ts +0 -39
  11. package/builders/aggregators/selectAggregator.js +0 -140
  12. package/builders/aggregators/updateAggregator.d.ts +0 -19
  13. package/builders/aggregators/updateAggregator.js +0 -47
  14. package/builders/highLvlBuilders/abstractRequestBuilder.d.ts +0 -27
  15. package/builders/highLvlBuilders/abstractRequestBuilder.js +0 -32
  16. package/builders/highLvlBuilders/deleteRequestBuilder.d.ts +0 -19
  17. package/builders/highLvlBuilders/deleteRequestBuilder.js +0 -39
  18. package/builders/highLvlBuilders/insertRequestBuilder.d.ts +0 -20
  19. package/builders/highLvlBuilders/insertRequestBuilder.js +0 -51
  20. package/builders/highLvlBuilders/order.d.ts +0 -5
  21. package/builders/highLvlBuilders/order.js +0 -8
  22. package/builders/highLvlBuilders/selectRequestBuilder.d.ts +0 -47
  23. package/builders/highLvlBuilders/selectRequestBuilder.js +0 -106
  24. package/builders/highLvlBuilders/updateRequestBuilder.d.ts +0 -22
  25. package/builders/highLvlBuilders/updateRequestBuilder.js +0 -58
  26. package/builders/index.d.ts +0 -18
  27. package/builders/index.js +0 -51
  28. package/builders/joinBuilders/builders/abstractJoinBuilder.d.ts +0 -40
  29. package/builders/joinBuilders/builders/abstractJoinBuilder.js +0 -56
  30. package/builders/joinBuilders/builders/selectWithFiveJoins.d.ts +0 -35
  31. package/builders/joinBuilders/builders/selectWithFiveJoins.js +0 -42
  32. package/builders/joinBuilders/builders/selectWithFourJoins.d.ts +0 -55
  33. package/builders/joinBuilders/builders/selectWithFourJoins.js +0 -75
  34. package/builders/joinBuilders/builders/selectWithJoin.d.ts +0 -49
  35. package/builders/joinBuilders/builders/selectWithJoin.js +0 -61
  36. package/builders/joinBuilders/builders/selectWithThreeJoins.d.ts +0 -53
  37. package/builders/joinBuilders/builders/selectWithThreeJoins.js +0 -70
  38. package/builders/joinBuilders/builders/selectWithTwoJoins.d.ts +0 -51
  39. package/builders/joinBuilders/builders/selectWithTwoJoins.js +0 -65
  40. package/builders/joinBuilders/join.d.ts +0 -23
  41. package/builders/joinBuilders/join.js +0 -28
  42. package/builders/joinBuilders/joinWith.d.ts +0 -14
  43. package/builders/joinBuilders/joinWith.js +0 -11
  44. package/builders/joinBuilders/responses/selectResponseFiveJoins.d.ts +0 -20
  45. package/builders/joinBuilders/responses/selectResponseFiveJoins.js +0 -35
  46. package/builders/joinBuilders/responses/selectResponseFourJoins.d.ts +0 -19
  47. package/builders/joinBuilders/responses/selectResponseFourJoins.js +0 -34
  48. package/builders/joinBuilders/responses/selectResponseThreeJoins.d.ts +0 -18
  49. package/builders/joinBuilders/responses/selectResponseThreeJoins.js +0 -33
  50. package/builders/joinBuilders/responses/selectResponseTwoJoins.d.ts +0 -17
  51. package/builders/joinBuilders/responses/selectResponseTwoJoins.js +0 -32
  52. package/builders/joinBuilders/responses/selectResponseWithJoin.d.ts +0 -16
  53. package/builders/joinBuilders/responses/selectResponseWithJoin.js +0 -31
  54. package/builders/joinBuilders/static.d.ts +0 -5
  55. package/builders/joinBuilders/static.js +0 -6
  56. package/builders/lowLvlBuilders/alter.d.ts +0 -0
  57. package/builders/lowLvlBuilders/alter.js +0 -1
  58. package/builders/lowLvlBuilders/create.d.ts +0 -12
  59. package/builders/lowLvlBuilders/create.js +0 -97
  60. package/builders/lowLvlBuilders/delets/delete.d.ts +0 -5
  61. package/builders/lowLvlBuilders/delets/delete.js +0 -12
  62. package/builders/lowLvlBuilders/delets/deleteFilter.d.ts +0 -11
  63. package/builders/lowLvlBuilders/delets/deleteFilter.js +0 -13
  64. package/builders/lowLvlBuilders/delets/deleteFrom.d.ts +0 -12
  65. package/builders/lowLvlBuilders/delets/deleteFrom.js +0 -11
  66. package/builders/lowLvlBuilders/inserts/insert.d.ts +0 -5
  67. package/builders/lowLvlBuilders/inserts/insert.js +0 -12
  68. package/builders/lowLvlBuilders/inserts/insertInto.d.ts +0 -13
  69. package/builders/lowLvlBuilders/inserts/insertInto.js +0 -13
  70. package/builders/lowLvlBuilders/inserts/onConflictInsert.d.ts +0 -12
  71. package/builders/lowLvlBuilders/inserts/onConflictInsert.js +0 -13
  72. package/builders/lowLvlBuilders/inserts/valuesInsert.d.ts +0 -16
  73. package/builders/lowLvlBuilders/inserts/valuesInsert.js +0 -16
  74. package/builders/lowLvlBuilders/selects/select.d.ts +0 -9
  75. package/builders/lowLvlBuilders/selects/select.js +0 -13
  76. package/builders/lowLvlBuilders/selects/selectFrom.d.ts +0 -28
  77. package/builders/lowLvlBuilders/selects/selectFrom.js +0 -31
  78. package/builders/lowLvlBuilders/selects/selectJoined.d.ts +0 -26
  79. package/builders/lowLvlBuilders/selects/selectJoined.js +0 -27
  80. package/builders/lowLvlBuilders/selects/whereSelect.d.ts +0 -17
  81. package/builders/lowLvlBuilders/selects/whereSelect.js +0 -25
  82. package/builders/lowLvlBuilders/updates/update.d.ts +0 -5
  83. package/builders/lowLvlBuilders/updates/update.js +0 -12
  84. package/builders/lowLvlBuilders/updates/updateIn.d.ts +0 -13
  85. package/builders/lowLvlBuilders/updates/updateIn.js +0 -12
  86. package/builders/lowLvlBuilders/updates/whereSelect.d.ts +0 -11
  87. package/builders/lowLvlBuilders/updates/whereSelect.js +0 -13
  88. package/builders/lowLvlBuilders/updates/whereSet.d.ts +0 -14
  89. package/builders/lowLvlBuilders/updates/whereSet.js +0 -15
  90. package/builders/requestBuilders/updates/combine.d.ts +0 -9
  91. package/builders/requestBuilders/updates/combine.js +0 -26
  92. package/builders/requestBuilders/updates/increment.d.ts +0 -13
  93. package/builders/requestBuilders/updates/increment.js +0 -18
  94. package/builders/requestBuilders/updates/setObjects.d.ts +0 -12
  95. package/builders/requestBuilders/updates/setObjects.js +0 -19
  96. package/builders/requestBuilders/updates/static.d.ts +0 -7
  97. package/builders/requestBuilders/updates/static.js +0 -12
  98. package/builders/requestBuilders/updates/updates.d.ts +0 -9
  99. package/builders/requestBuilders/updates/updates.js +0 -10
  100. package/builders/requestBuilders/where/and.d.ts +0 -11
  101. package/builders/requestBuilders/where/and.js +0 -28
  102. package/builders/requestBuilders/where/const.d.ts +0 -9
  103. package/builders/requestBuilders/where/const.js +0 -22
  104. package/builders/requestBuilders/where/constArray.d.ts +0 -9
  105. package/builders/requestBuilders/where/constArray.js +0 -36
  106. package/builders/requestBuilders/where/eqWhere.d.ts +0 -12
  107. package/builders/requestBuilders/where/eqWhere.js +0 -17
  108. package/builders/requestBuilders/where/greater.d.ts +0 -15
  109. package/builders/requestBuilders/where/greater.js +0 -17
  110. package/builders/requestBuilders/where/greaterEq.d.ts +0 -15
  111. package/builders/requestBuilders/where/greaterEq.js +0 -17
  112. package/builders/requestBuilders/where/in.d.ts +0 -12
  113. package/builders/requestBuilders/where/in.js +0 -17
  114. package/builders/requestBuilders/where/isNotNull.d.ts +0 -11
  115. package/builders/requestBuilders/where/isNotNull.js +0 -15
  116. package/builders/requestBuilders/where/isNull.d.ts +0 -11
  117. package/builders/requestBuilders/where/isNull.js +0 -15
  118. package/builders/requestBuilders/where/less.d.ts +0 -15
  119. package/builders/requestBuilders/where/less.js +0 -17
  120. package/builders/requestBuilders/where/lessEq.d.ts +0 -15
  121. package/builders/requestBuilders/where/lessEq.js +0 -17
  122. package/builders/requestBuilders/where/like.d.ts +0 -12
  123. package/builders/requestBuilders/where/like.js +0 -17
  124. package/builders/requestBuilders/where/notEqWhere.d.ts +0 -12
  125. package/builders/requestBuilders/where/notEqWhere.js +0 -17
  126. package/builders/requestBuilders/where/or.d.ts +0 -11
  127. package/builders/requestBuilders/where/or.js +0 -28
  128. package/builders/requestBuilders/where/rawWhere.d.ts +0 -9
  129. package/builders/requestBuilders/where/rawWhere.js +0 -12
  130. package/builders/requestBuilders/where/static.d.ts +0 -17
  131. package/builders/requestBuilders/where/static.js +0 -46
  132. package/builders/requestBuilders/where/var.d.ts +0 -13
  133. package/builders/requestBuilders/where/var.js +0 -15
  134. package/builders/requestBuilders/where/where.d.ts +0 -8
  135. package/builders/requestBuilders/where/where.js +0 -6
  136. package/builders/transaction/transaction.d.ts +0 -8
  137. package/builders/transaction/transaction.js +0 -20
  138. package/columns/column.d.ts +0 -72
  139. package/columns/column.js +0 -101
  140. package/columns/index.d.ts +0 -10
  141. package/columns/index.js +0 -24
  142. package/columns/types/columnType.d.ts +0 -7
  143. package/columns/types/columnType.js +0 -6
  144. package/columns/types/pgBigDecimal.d.ts +0 -10
  145. package/columns/types/pgBigDecimal.js +0 -28
  146. package/columns/types/pgBigInt.d.ts +0 -15
  147. package/columns/types/pgBigInt.js +0 -29
  148. package/columns/types/pgBigSerial.d.ts +0 -15
  149. package/columns/types/pgBigSerial.js +0 -29
  150. package/columns/types/pgBoolean.d.ts +0 -8
  151. package/columns/types/pgBoolean.js +0 -15
  152. package/columns/types/pgEnum.d.ts +0 -9
  153. package/columns/types/pgEnum.js +0 -15
  154. package/columns/types/pgInteger.d.ts +0 -8
  155. package/columns/types/pgInteger.js +0 -18
  156. package/columns/types/pgJsonb.d.ts +0 -9
  157. package/columns/types/pgJsonb.js +0 -17
  158. package/columns/types/pgSerial.d.ts +0 -8
  159. package/columns/types/pgSerial.js +0 -15
  160. package/columns/types/pgSmallInt.d.ts +0 -8
  161. package/columns/types/pgSmallInt.js +0 -15
  162. package/columns/types/pgText.d.ts +0 -8
  163. package/columns/types/pgText.js +0 -15
  164. package/columns/types/pgTime.d.ts +0 -8
  165. package/columns/types/pgTime.js +0 -15
  166. package/columns/types/pgTimestamp.d.ts +0 -8
  167. package/columns/types/pgTimestamp.js +0 -15
  168. package/columns/types/pgTimestamptz.d.ts +0 -8
  169. package/columns/types/pgTimestamptz.js +0 -15
  170. package/columns/types/pgVarChar.d.ts +0 -9
  171. package/columns/types/pgVarChar.js +0 -21
  172. package/db/db.d.ts +0 -18
  173. package/db/db.js +0 -25
  174. package/db/dbConnector.d.ts +0 -9
  175. package/db/dbConnector.js +0 -29
  176. package/db/dbStringConnector.d.ts +0 -6
  177. package/db/dbStringConnector.js +0 -26
  178. package/db/group_by.d.ts +0 -0
  179. package/db/group_by.js +0 -68
  180. package/db/index.d.ts +0 -4
  181. package/db/index.js +0 -11
  182. package/db/session.d.ts +0 -9
  183. package/db/session.js +0 -16
  184. package/docs/cases/simple_delete.d.ts +0 -1
  185. package/docs/cases/simple_delete.js +0 -32
  186. package/docs/cases/simple_insert.d.ts +0 -1
  187. package/docs/cases/simple_insert.js +0 -54
  188. package/docs/cases/simple_join.d.ts +0 -1
  189. package/docs/cases/simple_join.js +0 -112
  190. package/docs/cases/simple_select.d.ts +0 -1
  191. package/docs/cases/simple_select.js +0 -47
  192. package/docs/cases/simple_update.d.ts +0 -1
  193. package/docs/cases/simple_update.js +0 -36
  194. package/docs/tables/citiesTable.d.ts +0 -14
  195. package/docs/tables/citiesTable.js +0 -18
  196. package/docs/tables/userGroupsTable.d.ts +0 -7
  197. package/docs/tables/userGroupsTable.js +0 -15
  198. package/docs/tables/usersTable.d.ts +0 -17
  199. package/docs/tables/usersTable.js +0 -32
  200. package/docs/tables/usersToUserGroups.d.ts +0 -7
  201. package/docs/tables/usersToUserGroups.js +0 -17
  202. package/docs/types/rolesType.d.ts +0 -1
  203. package/docs/types/rolesType.js +0 -6
  204. package/errors/baseError.d.ts +0 -22
  205. package/errors/baseError.js +0 -35
  206. package/errors/builderError.d.ts +0 -14
  207. package/errors/builderError.js +0 -25
  208. package/errors/dbErrors.d.ts +0 -12
  209. package/errors/dbErrors.js +0 -28
  210. package/index.d.ts +0 -11
  211. package/index.js +0 -28
  212. package/indexes/tableIndex.d.ts +0 -11
  213. package/indexes/tableIndex.js +0 -17
  214. package/logger/abstractLogger.d.ts +0 -4
  215. package/logger/abstractLogger.js +0 -5
  216. package/logger/consoleLogger.d.ts +0 -5
  217. package/logger/consoleLogger.js +0 -12
  218. package/mappers/index.d.ts +0 -0
  219. package/mappers/index.js +0 -1
  220. package/mappers/responseMapper.d.ts +0 -10
  221. package/mappers/responseMapper.js +0 -35
  222. package/migrator/index.d.ts +0 -0
  223. package/migrator/index.js +0 -1
  224. package/migrator/migrator.d.ts +0 -11
  225. package/migrator/migrator.js +0 -83
  226. package/serializer/serializer.d.ts +0 -53
  227. package/serializer/serializer.js +0 -257
  228. package/tables/abstractTable.d.ts +0 -68
  229. package/tables/abstractTable.js +0 -129
  230. package/tables/aggregators.d.ts +0 -27
  231. package/tables/aggregators.js +0 -56
  232. package/tables/index.d.ts +0 -3
  233. package/tables/index.js +0 -8
  234. package/tables/inferTypes.d.ts +0 -39
  235. package/tables/inferTypes.js +0 -2
  236. package/tables/migrationsTable.d.ts +0 -7
  237. package/tables/migrationsTable.js +0 -15
  238. package/test.d.ts +0 -1
  239. package/test.js +0 -62
  240. package/types/type.d.ts +0 -10
  241. package/types/type.js +0 -14
  242. package/utils/ecranate.d.ts +0 -2
  243. package/utils/ecranate.js +0 -8
@@ -1,103 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /* eslint-disable @typescript-eslint/no-loop-func */
4
- const column_1 = require("../../columns/column");
5
- const abstractAggregator_1 = require("./abstractAggregator");
6
- class InsertAggregator extends abstractAggregator_1.default {
7
- constructor(table) {
8
- super(table);
9
- this._onConflict = [];
10
- this._columns = [];
11
- this._query = [];
12
- this._values = [];
13
- this._from = [];
14
- this._insert = ['INSERT INTO'];
15
- this.appendColumns = () => {
16
- const mapper = this._table.mapServiceToDb();
17
- const columns = Object.values(mapper);
18
- for (let i = 0; i < columns.length; i += 1) {
19
- const column = columns[i];
20
- this._columns.push('"');
21
- this._columns.push(column.getColumnName());
22
- this._columns.push('"');
23
- if (i < columns.length - 1) {
24
- this._columns.push(', ');
25
- }
26
- }
27
- };
28
- this.appendValues = (values) => {
29
- // @TODO Check if values not empty
30
- const mapper = this._table.mapServiceToDb();
31
- let position = 0;
32
- for (let i = 0; i < values.length; i += 1) {
33
- const value = values[i];
34
- this._query.push('(');
35
- const entries = Object.entries(mapper);
36
- entries.forEach(([key], index) => {
37
- const valueToInsert = value[key];
38
- const isKeyExistsInValue = key.toString() in value;
39
- const column = mapper[key];
40
- if (isKeyExistsInValue) {
41
- if (valueToInsert !== undefined && valueToInsert !== null) {
42
- position += 1;
43
- this._query.push(`$${position}`);
44
- this._values.push(column.getColumnType().insertStrategy(valueToInsert));
45
- }
46
- else {
47
- this._query.push('null');
48
- }
49
- }
50
- else {
51
- this._query.push('DEFAULT');
52
- }
53
- if (index < entries.length - 1) {
54
- this._query.push(', ');
55
- }
56
- });
57
- if (i < values.length - 1) {
58
- this._query.push('),\n');
59
- }
60
- else {
61
- this._query.push(')\n');
62
- }
63
- }
64
- };
65
- this.appendOnConflict = (column, updates) => {
66
- if (column) {
67
- const indexName = column instanceof column_1.IndexedColumn
68
- ? column.getColumnName() : column.getColumns().map((it) => it.getColumnName()).join(',');
69
- this._onConflict.push(`ON CONFLICT (${indexName})\n`);
70
- if (updates) {
71
- const currentPointerPosition = this._values.length > 0
72
- ? this._values.length + 1 : undefined;
73
- const updatesQuery = updates.toQuery(currentPointerPosition);
74
- this._onConflict.push('DO UPDATE\n');
75
- this._onConflict.push(`SET ${updatesQuery.query}`);
76
- this._values.push(...updatesQuery.values);
77
- }
78
- else {
79
- this._onConflict.push('DO NOTHING\n');
80
- }
81
- }
82
- return this;
83
- };
84
- this.buildQuery = () => {
85
- this._insert.push(this._from.join(''));
86
- this._insert.push(' (');
87
- this._insert.push(this._columns.join(''));
88
- this._insert.push(') ');
89
- this._insert.push('VALUES\n');
90
- this._insert.push(this._query.join(''));
91
- this._insert.push('\n');
92
- this._insert.push(this._onConflict.join(''));
93
- this._insert.push('\n');
94
- this._insert.push('RETURNING');
95
- this._insert.push('\n');
96
- this._insert.push(this._fields.join(''));
97
- return { query: this._insert.join(''), values: this._values };
98
- };
99
- this._from.push(' ');
100
- this._from.push(table.tableName());
101
- }
102
- }
103
- exports.default = InsertAggregator;
@@ -1,39 +0,0 @@
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
- private _values;
18
- private _joinCache;
19
- constructor(table: AbstractTable<any>, partial?: {
20
- [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, AbstractTable<any>>;
21
- });
22
- filters: (filters: Expr) => SelectAggregator;
23
- limit: (limit?: number | undefined) => SelectAggregator;
24
- offset: (offset?: number | undefined) => SelectAggregator;
25
- orderBy: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined, order?: Order | undefined) => SelectAggregator;
26
- distinct: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean, any> | undefined) => SelectAggregator;
27
- appendFrom: (tableName: string) => SelectAggregator;
28
- join: (joins: {
29
- join: Join<any>;
30
- partial?: {
31
- [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, any>;
32
- } | undefined;
33
- id?: number | undefined;
34
- }[]) => SelectAggregator;
35
- buildQuery: () => {
36
- query: string;
37
- values: Array<any>;
38
- };
39
- }
@@ -1,140 +0,0 @@
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
- // public constructor(table: AbstractTable<any>);
8
- // public constructor(table: AbstractTable<any>, partial: {[name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, AbstractTable<any>>})
9
- constructor(table, partial) {
10
- super(table, partial);
11
- this._from = [];
12
- this._filters = [];
13
- this._select = ['SELECT'];
14
- this._join = [];
15
- this._limit = [];
16
- this._offset = [];
17
- this._distinct = [];
18
- // private _groupBy: Array<string> = [];
19
- this._orderBy = [];
20
- this._values = [];
21
- this._joinCache = {};
22
- this.filters = (filters) => {
23
- if (filters) {
24
- const queryBuilder = filters.toQuery(1, this._joinCache);
25
- this._filters.push('WHERE ');
26
- this._filters.push(queryBuilder.query);
27
- this._values = queryBuilder.values;
28
- }
29
- return this;
30
- };
31
- this.limit = (limit) => {
32
- if (limit) {
33
- this._limit.push('LIMIT ');
34
- this._limit.push(limit.toString());
35
- }
36
- return this;
37
- };
38
- this.offset = (offset) => {
39
- if (offset) {
40
- this._offset.push('OFFSET ');
41
- this._offset.push(offset.toString());
42
- }
43
- return this;
44
- };
45
- this.orderBy = (column, order) => {
46
- if (column !== null && column !== undefined) {
47
- this._orderBy.push('ORDER BY ');
48
- const columnParent = this._joinCache[column.getParent().tableName()] ? this._joinCache[column.getParent().tableName()] : column.getParent().tableName();
49
- this._orderBy.push(`${columnParent}.${ecranate_1.ecranate(column.getColumnName())} `);
50
- this._orderBy.push(order_1.default[order]);
51
- }
52
- return this;
53
- };
54
- this.distinct = (column) => {
55
- if (column) {
56
- this._distinct.push(` DISTINCT ON(${column.getParent().tableName()}.${ecranate_1.ecranate(column.getColumnName())}) `);
57
- }
58
- return this;
59
- };
60
- this.appendFrom = (tableName) => {
61
- this._from.push('FROM ');
62
- this._from.push(tableName);
63
- // this._from.push(`${tableName} AS ${tableName}_0`);
64
- this._joinCache[tableName] = tableName;
65
- return this;
66
- };
67
- // Add select generator for second table also
68
- this.join = (joins) => {
69
- // const cache: {[tableName: string]: string} = {};
70
- joins.forEach((joinObject) => {
71
- if (joinObject) {
72
- const tableFrom = joinObject.join.fromColumn.getParentName();
73
- const tableTo = joinObject.join.toColumn.getParentName();
74
- const { type } = joinObject.join;
75
- let fromAlias = '';
76
- if (this._joinCache[tableFrom]) {
77
- fromAlias = this._joinCache[tableFrom];
78
- }
79
- else {
80
- fromAlias = `${tableFrom}${joinObject.id ? `_${joinObject.id}` : ''}`;
81
- this._joinCache[tableFrom] = fromAlias;
82
- }
83
- let selectString;
84
- if (joinObject.partial) {
85
- selectString = this.generateSelectArray(`${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`, Object.values(joinObject.partial), joinObject.id).join('');
86
- }
87
- else {
88
- selectString = this.generateSelectArray(`${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`, Object.values(joinObject.join.mappedServiceToDb), joinObject.id).join('');
89
- }
90
- this._fields.push(', ');
91
- this._fields.push(selectString);
92
- this._join.push('\n');
93
- this._join.push(type);
94
- this._join.push(' ');
95
- this._join.push(tableTo);
96
- this._join.push(' ');
97
- this._join.push(`AS ${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`);
98
- this._joinCache[tableTo] = `${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`;
99
- this._join.push('\n');
100
- this._join.push('ON ');
101
- this._join.push(fromAlias);
102
- // if (this._joinCache[tableFrom]) {
103
- // this._join.push(this._joinCache[tableFrom]);
104
- // } else {
105
- // this._join.push(tableFrom);
106
- // this._joinCache[tableFrom] = `${tableFrom}${joinObject.id ? `_${joinObject.id}` : ''}`;
107
- // }
108
- this._join.push('.');
109
- this._join.push(joinObject.join.fromColumn.getColumnName());
110
- this._join.push(' = ');
111
- this._join.push(`${tableTo}${joinObject.id ? `_${joinObject.id}` : ''}`);
112
- // this._join.push(toAlias);
113
- this._join.push('.');
114
- this._join.push(joinObject.join.toColumn.getColumnName());
115
- }
116
- });
117
- return this;
118
- };
119
- this.buildQuery = () => {
120
- this._select.push(this._distinct.join(''));
121
- this._select.push(this._fields.join(''));
122
- this._select.push('\n');
123
- this._select.push(this._from.join(''));
124
- this._select.push('\n');
125
- this._select.push(this._join.join(''));
126
- if (this._join.length > 0) {
127
- this._select.push('\n');
128
- }
129
- this._select.push(this._filters.join(''));
130
- this._select.push('\n');
131
- this._select.push(this._orderBy.join(''));
132
- this._select.push('\n');
133
- this._select.push(this._limit.join(''));
134
- this._select.push('\n');
135
- this._select.push(this._offset.join(''));
136
- return { query: this._select.join(''), values: this._values };
137
- };
138
- }
139
- }
140
- exports.default = SelectAggregator;
@@ -1,19 +0,0 @@
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 _values;
10
- private _update;
11
- constructor(table: AbstractTable<any>);
12
- where: (filters: Expr) => UpdateAggregator;
13
- appendFrom: (tableName: string) => UpdateAggregator;
14
- set: (updates: UpdateExpr) => UpdateAggregator;
15
- buildQuery: () => {
16
- query: string;
17
- values: Array<any>;
18
- };
19
- }
@@ -1,47 +0,0 @@
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._values = [];
11
- this._update = ['UPDATE'];
12
- this.where = (filters) => {
13
- if (filters) {
14
- const currentPointerPosition = this._values.length > 0 ? this._values.length + 1 : undefined;
15
- const filterQuery = filters.toQuery(currentPointerPosition);
16
- this._filters.push('WHERE ');
17
- this._filters.push(filterQuery.query);
18
- this._values.push(...filterQuery.values);
19
- }
20
- return this;
21
- };
22
- this.appendFrom = (tableName) => {
23
- this._from.push(' ');
24
- this._from.push(tableName);
25
- return this;
26
- };
27
- this.set = (updates) => {
28
- const setQuery = updates.toQuery();
29
- this._updates.push(`\nSET ${setQuery.query}`);
30
- this._values.push(...setQuery.values);
31
- return this;
32
- };
33
- this.buildQuery = () => {
34
- this._update.push(this._from.join(''));
35
- this._update.push('\n');
36
- this._update.push(this._updates.join(''));
37
- this._update.push('\n');
38
- this._update.push(this._filters.join(''));
39
- this._update.push('\n');
40
- this._update.push('RETURNING');
41
- this._update.push('\n');
42
- this._update.push(this._fields.join(''));
43
- return { query: this._update.join(''), values: this._values };
44
- };
45
- }
46
- }
47
- exports.default = UpdateAggregator;
@@ -1,27 +0,0 @@
1
- import { AbstractColumn } from '../../columns/column';
2
- import ColumnType from '../../columns/types/columnType';
3
- import { ISession } from '../../db/session';
4
- import BaseLogger from '../../logger/abstractLogger';
5
- import { AbstractTable } from '../../tables';
6
- import { ExtractModel } from '../../tables/inferTypes';
7
- export default abstract class TableRequestBuilder<TTable extends AbstractTable<TTable>, TPartial extends {
8
- [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, TTable>;
9
- } = {}> {
10
- protected _table: TTable;
11
- protected _session: ISession;
12
- protected _mappedServiceToDb: {
13
- [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
14
- };
15
- protected _columns: AbstractColumn<ColumnType>[];
16
- protected _logger?: BaseLogger;
17
- constructor(table: AbstractTable<TTable>, session: ISession, mappedServiceToDb: {
18
- [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
19
- }, logger?: BaseLogger);
20
- all: () => Promise<([keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>)[]>;
21
- /**
22
- * Current function will return an element only if response is of length 1
23
- * If there are more or less than 1 element, will throw an Error
24
- */
25
- findOne: () => Promise<[keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>>;
26
- protected abstract _execute(): Promise<Array<[keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>>>;
27
- }
@@ -1,32 +0,0 @@
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
- /**
10
- * Current function will return an element only if response is of length 1
11
- * If there are more or less than 1 element, will throw an Error
12
- */
13
- this.findOne = async () => {
14
- const executionRes = await this._execute();
15
- if (executionRes.length > 1) {
16
- throw new Error('Request contains more than 1 element');
17
- }
18
- else if (executionRes.length < 1) {
19
- throw new Error('Request contains less than 1 element ');
20
- }
21
- else {
22
- return executionRes[0];
23
- }
24
- };
25
- this._mappedServiceToDb = mappedServiceToDb;
26
- this._table = table;
27
- this._session = session;
28
- this._columns = Object.values(mappedServiceToDb);
29
- this._logger = logger;
30
- }
31
- }
32
- exports.default = TableRequestBuilder;
@@ -1,19 +0,0 @@
1
- import { AbstractColumn } from '../../columns/column';
2
- import ColumnType from '../../columns/types/columnType';
3
- import { ISession } from '../../db/session';
4
- import BaseLogger from '../../logger/abstractLogger';
5
- import { AbstractTable } from '../../tables';
6
- import { ExtractModel } from '../../tables/inferTypes';
7
- import Expr from '../requestBuilders/where/where';
8
- import TableRequestBuilder from './abstractRequestBuilder';
9
- export default class DeleteTRB<TTable extends AbstractTable<TTable>, TPartial extends {
10
- [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, TTable>;
11
- } = {}> extends TableRequestBuilder<TTable, TPartial> {
12
- private _filter;
13
- constructor(table: AbstractTable<TTable>, session: ISession, mappedServiceToDb: {
14
- [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
15
- }, logger?: BaseLogger);
16
- where: (expr: Expr) => DeleteTRB<TTable>;
17
- execute: () => Promise<void>;
18
- protected _execute: () => Promise<Array<[keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>>>;
19
- }
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const builderError_1 = require("../../errors/builderError");
4
- const responseMapper_1 = require("../../mappers/responseMapper");
5
- const delete_1 = require("../lowLvlBuilders/delets/delete");
6
- const abstractRequestBuilder_1 = require("./abstractRequestBuilder");
7
- class DeleteTRB extends abstractRequestBuilder_1.default {
8
- constructor(table, session, mappedServiceToDb, logger) {
9
- super(table, session, mappedServiceToDb, logger);
10
- this.where = (expr) => {
11
- this._filter = expr;
12
- return this;
13
- };
14
- this.execute = async () => {
15
- await this._execute();
16
- };
17
- this._execute = async () => {
18
- const queryBuilder = delete_1.default
19
- .from(this._table)
20
- .filteredBy(this._filter);
21
- let query = '';
22
- let values = [];
23
- try {
24
- const builderResult = queryBuilder.build();
25
- query = builderResult.query;
26
- values = builderResult.values;
27
- }
28
- catch (e) {
29
- throw new builderError_1.default(builderError_1.BuilderType.DELETE, this._table.tableName(), this._columns, e, this._filter);
30
- }
31
- if (this._logger) {
32
- this._logger.info(`Deleting from ${this._table.tableName()} using query:\n ${query}`);
33
- }
34
- const result = await this._session.execute(query, values);
35
- return responseMapper_1.default.map(this._mappedServiceToDb, result);
36
- };
37
- }
38
- }
39
- exports.default = DeleteTRB;
@@ -1,20 +0,0 @@
1
- import { AbstractColumn } from '../../columns/column';
2
- import ColumnType from '../../columns/types/columnType';
3
- import { ISession } from '../../db/session';
4
- import BaseLogger from '../../logger/abstractLogger';
5
- import { AbstractTable } from '../../tables';
6
- import { ExtractModel, Indexing } from '../../tables/inferTypes';
7
- import TableRequestBuilder from './abstractRequestBuilder';
8
- export default class InsertTRB<TTable extends AbstractTable<TTable>, TPartial extends {
9
- [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, TTable>;
10
- } = {}> extends TableRequestBuilder<TTable, TPartial> {
11
- private _values;
12
- private _onConflict;
13
- private _onConflictField;
14
- constructor(values: ExtractModel<TTable>[], session: ISession, mappedServiceToDb: {
15
- [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
16
- }, table: AbstractTable<TTable>, logger?: BaseLogger);
17
- execute: () => Promise<void>;
18
- onConflict: (callback: (table: TTable) => Indexing, update: Partial<ExtractModel<TTable>>) => InsertTRB<TTable>;
19
- protected _execute: () => Promise<Array<[keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>>>;
20
- }
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /* eslint-disable max-len */
4
- const __1 = require("..");
5
- const builderError_1 = require("../../errors/builderError");
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
- let values = [];
34
- try {
35
- const builderResult = queryBuilder.build();
36
- query = builderResult.query;
37
- values = builderResult.values;
38
- }
39
- catch (e) {
40
- throw new builderError_1.default(builderError_1.BuilderType.INSERT, this._table.tableName(), this._columns, e);
41
- }
42
- if (this._logger) {
43
- this._logger.info(`Inserting to ${this._table.tableName()} using query:\n ${query}\n${values}`);
44
- }
45
- const result = await this._session.execute(query, values);
46
- return responseMapper_1.default.map(this._mappedServiceToDb, result);
47
- };
48
- this._values = values;
49
- }
50
- }
51
- exports.default = InsertTRB;
@@ -1,5 +0,0 @@
1
- declare enum Order {
2
- ASC = 0,
3
- DESC = 1
4
- }
5
- export default Order;
@@ -1,8 +0,0 @@
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;
@@ -1,47 +0,0 @@
1
- import { AbstractColumn } from '../../columns/column';
2
- import ColumnType from '../../columns/types/columnType';
3
- import DB from '../../db/db';
4
- import { ISession } from '../../db/session';
5
- import BaseLogger from '../../logger/abstractLogger';
6
- import { AbstractTable } from '../../tables';
7
- import { ExtractModel, PartialFor } from '../../tables/inferTypes';
8
- import SelectTRBWithJoin from '../joinBuilders/builders/selectWithJoin';
9
- import Expr from '../requestBuilders/where/where';
10
- import TableRequestBuilder from './abstractRequestBuilder';
11
- import Order from './order';
12
- export default class SelectTRB<TTable extends AbstractTable<TTable>, TPartial extends {
13
- [name: string]: AbstractColumn<ColumnType<any>, boolean, boolean, TTable>;
14
- } = {}> extends TableRequestBuilder<TTable, TPartial> {
15
- protected _filter: Expr;
16
- private props;
17
- private __orderBy?;
18
- private __groupBy?;
19
- private __order?;
20
- private __distinct;
21
- private __partial?;
22
- constructor(session: ISession, mappedServiceToDb: {
23
- [name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
24
- }, props: {
25
- limit?: number;
26
- offset?: number;
27
- }, table: AbstractTable<TTable>, logger?: BaseLogger, partial?: TPartial);
28
- where: (expr: Expr) => SelectTRB<TTable, TPartial>;
29
- orderBy<TColumnType extends ColumnType>(callback: (table: TTable) => AbstractColumn<TColumnType, boolean, boolean>, order: Order): SelectTRB<TTable, TPartial>;
30
- distinct: (column: AbstractColumn<ColumnType<any>, boolean, boolean>) => SelectTRB<TTable, TPartial>;
31
- limit: (limit: number) => SelectTRB<TTable, TPartial>;
32
- offset: (offset: number) => SelectTRB<TTable, TPartial>;
33
- innerJoin<TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(table: {
34
- new (db: DB): IToTable;
35
- }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial, IToPartial>;
36
- leftJoin<TColumn extends ColumnType<any>, IToColumn extends ColumnType<any>, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(table: {
37
- new (db: DB): IToTable;
38
- }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean, TTable>, to: (table: IToTable) => AbstractColumn<IToColumn, boolean, boolean, IToTable>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial, IToPartial>;
39
- rightJoin<TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(table: {
40
- new (db: DB): IToTable;
41
- }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial, IToPartial>;
42
- fullJoin<TColumn extends ColumnType, TToColumn extends ColumnType, IToTable extends AbstractTable<IToTable>, IToPartial extends PartialFor<IToTable> = {}>(table: {
43
- new (db: DB): IToTable;
44
- }, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TToColumn, boolean, boolean>, partial?: IToPartial): SelectTRBWithJoin<TTable, IToTable, TPartial, IToPartial>;
45
- execute: () => Promise<([keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>)[]>;
46
- protected _execute: () => Promise<Array<[keyof TPartial] extends [never] ? ExtractModel<TTable> : ExtractModel<TPartial>>>;
47
- }