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.
- package/builders/aggregators/abstractAggregator.d.ts +9 -0
- package/builders/aggregators/abstractAggregator.js +28 -0
- package/builders/aggregators/deleteAggregator.d.ts +12 -0
- package/builders/aggregators/deleteAggregator.js +36 -0
- package/builders/aggregators/insertAggregator.d.ts +18 -0
- package/builders/aggregators/insertAggregator.js +94 -0
- package/builders/aggregators/selectAggregator.d.ts +26 -0
- package/builders/aggregators/selectAggregator.js +106 -0
- package/builders/aggregators/updateAggregator.d.ts +15 -0
- package/builders/aggregators/updateAggregator.js +41 -0
- package/builders/highLvlBuilders/abstractRequestBuilder.d.ts +21 -0
- package/builders/highLvlBuilders/abstractRequestBuilder.js +21 -0
- package/builders/highLvlBuilders/deleteRequestBuilder.d.ts +17 -0
- package/builders/highLvlBuilders/deleteRequestBuilder.js +43 -0
- package/builders/highLvlBuilders/insertRequestBuilder.d.ts +18 -0
- package/builders/highLvlBuilders/insertRequestBuilder.js +54 -0
- package/builders/highLvlBuilders/order.d.ts +5 -0
- package/builders/highLvlBuilders/order.js +8 -0
- package/builders/highLvlBuilders/selectRequestBuilder.d.ts +42 -0
- package/builders/highLvlBuilders/selectRequestBuilder.js +99 -0
- package/builders/highLvlBuilders/updateRequestBuilder.d.ts +20 -0
- package/builders/highLvlBuilders/updateRequestBuilder.js +54 -0
- package/{src/builders/index.ts → builders/index.d.ts} +2 -4
- package/builders/index.js +50 -0
- package/builders/joinBuilders/builders/abstractJoinBuilder.d.ts +27 -0
- package/builders/joinBuilders/builders/abstractJoinBuilder.js +42 -0
- package/builders/joinBuilders/builders/selectWithFiveJoins.d.ts +23 -0
- package/builders/joinBuilders/builders/selectWithFiveJoins.js +33 -0
- package/builders/joinBuilders/builders/selectWithFourJoins.d.ts +36 -0
- package/builders/joinBuilders/builders/selectWithFourJoins.js +65 -0
- package/builders/joinBuilders/builders/selectWithJoin.d.ts +33 -0
- package/builders/joinBuilders/builders/selectWithJoin.js +56 -0
- package/builders/joinBuilders/builders/selectWithThreeJoins.d.ts +35 -0
- package/builders/joinBuilders/builders/selectWithThreeJoins.js +62 -0
- package/builders/joinBuilders/builders/selectWithTwoJoins.d.ts +34 -0
- package/builders/joinBuilders/builders/selectWithTwoJoins.js +59 -0
- package/builders/joinBuilders/join.d.ts +23 -0
- package/builders/joinBuilders/join.js +28 -0
- package/builders/joinBuilders/joinWith.d.ts +14 -0
- package/builders/joinBuilders/joinWith.js +11 -0
- package/builders/joinBuilders/responses/selectResponseFiveJoins.d.ts +19 -0
- package/builders/joinBuilders/responses/selectResponseFiveJoins.js +35 -0
- package/builders/joinBuilders/responses/selectResponseFourJoins.d.ts +18 -0
- package/builders/joinBuilders/responses/selectResponseFourJoins.js +34 -0
- package/builders/joinBuilders/responses/selectResponseThreeJoins.d.ts +17 -0
- package/builders/joinBuilders/responses/selectResponseThreeJoins.js +33 -0
- package/builders/joinBuilders/responses/selectResponseTwoJoins.d.ts +16 -0
- package/builders/joinBuilders/responses/selectResponseTwoJoins.js +32 -0
- package/builders/joinBuilders/responses/selectResponseWithJoin.d.ts +15 -0
- package/builders/joinBuilders/responses/selectResponseWithJoin.js +31 -0
- package/builders/joinBuilders/static.d.ts +5 -0
- package/builders/joinBuilders/static.js +6 -0
- package/{src/builders/lowLvlBuilders/alter.ts → builders/lowLvlBuilders/alter.d.ts} +0 -0
- package/builders/lowLvlBuilders/alter.js +1 -0
- package/builders/lowLvlBuilders/create.d.ts +12 -0
- package/builders/lowLvlBuilders/create.js +97 -0
- package/builders/lowLvlBuilders/delets/delete.d.ts +5 -0
- package/builders/lowLvlBuilders/delets/delete.js +12 -0
- package/builders/lowLvlBuilders/delets/deleteFilter.d.ts +8 -0
- package/builders/lowLvlBuilders/delets/deleteFilter.js +13 -0
- package/builders/lowLvlBuilders/delets/deleteFrom.d.ts +9 -0
- package/builders/lowLvlBuilders/delets/deleteFrom.js +11 -0
- package/builders/lowLvlBuilders/inserts/insert.d.ts +5 -0
- package/builders/lowLvlBuilders/inserts/insert.js +12 -0
- package/builders/lowLvlBuilders/inserts/insertInto.d.ts +10 -0
- package/builders/lowLvlBuilders/inserts/insertInto.js +13 -0
- package/builders/lowLvlBuilders/inserts/onConflictInsert.d.ts +9 -0
- package/builders/lowLvlBuilders/inserts/onConflictInsert.js +13 -0
- package/builders/lowLvlBuilders/inserts/valuesInsert.d.ts +13 -0
- package/builders/lowLvlBuilders/inserts/valuesInsert.js +16 -0
- package/builders/lowLvlBuilders/selects/select.d.ts +5 -0
- package/builders/lowLvlBuilders/selects/select.js +12 -0
- package/builders/lowLvlBuilders/selects/selectFrom.d.ts +19 -0
- package/builders/lowLvlBuilders/selects/selectFrom.js +31 -0
- package/builders/lowLvlBuilders/selects/selectJoined.d.ts +17 -0
- package/builders/lowLvlBuilders/selects/selectJoined.js +27 -0
- package/builders/lowLvlBuilders/selects/whereSelect.d.ts +14 -0
- package/builders/lowLvlBuilders/selects/whereSelect.js +25 -0
- package/builders/lowLvlBuilders/updates/update.d.ts +5 -0
- package/builders/lowLvlBuilders/updates/update.js +12 -0
- package/builders/lowLvlBuilders/updates/updateIn.d.ts +10 -0
- package/builders/lowLvlBuilders/updates/updateIn.js +12 -0
- package/builders/lowLvlBuilders/updates/whereSelect.d.ts +8 -0
- package/builders/lowLvlBuilders/updates/whereSelect.js +13 -0
- package/builders/lowLvlBuilders/updates/whereSet.d.ts +11 -0
- package/builders/lowLvlBuilders/updates/whereSet.js +15 -0
- package/builders/requestBuilders/updates/combine.d.ts +6 -0
- package/builders/requestBuilders/updates/combine.js +21 -0
- package/builders/requestBuilders/updates/setObjects.d.ts +9 -0
- package/builders/requestBuilders/updates/setObjects.js +12 -0
- package/builders/requestBuilders/updates/static.d.ts +6 -0
- package/builders/requestBuilders/updates/static.js +9 -0
- package/{src/builders/requestBuilders/updates/updates.ts → builders/requestBuilders/updates/updates.d.ts} +1 -1
- package/builders/requestBuilders/updates/updates.js +5 -0
- package/builders/requestBuilders/where/and.d.ts +6 -0
- package/builders/requestBuilders/where/and.js +22 -0
- package/builders/requestBuilders/where/const.d.ts +6 -0
- package/builders/requestBuilders/where/const.js +17 -0
- package/builders/requestBuilders/where/constArray.d.ts +6 -0
- package/builders/requestBuilders/where/constArray.js +27 -0
- package/builders/requestBuilders/where/eqWhere.d.ts +7 -0
- package/builders/requestBuilders/where/eqWhere.js +12 -0
- package/builders/requestBuilders/where/greater.d.ts +10 -0
- package/builders/requestBuilders/where/greater.js +12 -0
- package/builders/requestBuilders/where/greaterEq.d.ts +10 -0
- package/builders/requestBuilders/where/greaterEq.js +12 -0
- package/builders/requestBuilders/where/in.d.ts +7 -0
- package/builders/requestBuilders/where/in.js +12 -0
- package/builders/requestBuilders/where/isNull.d.ts +6 -0
- package/builders/requestBuilders/where/isNull.js +11 -0
- package/builders/requestBuilders/where/less.d.ts +10 -0
- package/builders/requestBuilders/where/less.js +12 -0
- package/builders/requestBuilders/where/lessEq.d.ts +10 -0
- package/builders/requestBuilders/where/lessEq.js +12 -0
- package/builders/requestBuilders/where/like.d.ts +7 -0
- package/builders/requestBuilders/where/like.js +12 -0
- package/builders/requestBuilders/where/notEqWhere.d.ts +7 -0
- package/builders/requestBuilders/where/notEqWhere.js +12 -0
- package/builders/requestBuilders/where/or.d.ts +6 -0
- package/builders/requestBuilders/where/or.js +22 -0
- package/builders/requestBuilders/where/rawWhere.d.ts +6 -0
- package/builders/requestBuilders/where/rawWhere.js +11 -0
- package/builders/requestBuilders/where/static.d.ts +16 -0
- package/builders/requestBuilders/where/static.js +43 -0
- package/builders/requestBuilders/where/var.d.ts +8 -0
- package/builders/requestBuilders/where/var.js +12 -0
- package/{src/builders/requestBuilders/where/where.ts → builders/requestBuilders/where/where.d.ts} +1 -1
- package/builders/requestBuilders/where/where.js +5 -0
- package/builders/transaction/transaction.d.ts +8 -0
- package/builders/transaction/transaction.js +20 -0
- package/columns/column.d.ts +61 -0
- package/columns/column.js +98 -0
- package/{src/columns/index.ts → columns/index.d.ts} +0 -0
- package/columns/index.js +23 -0
- package/columns/types/columnType.d.ts +7 -0
- package/columns/types/columnType.js +6 -0
- package/columns/types/pgBigDecimal.d.ts +10 -0
- package/columns/types/pgBigDecimal.js +28 -0
- package/columns/types/pgBigInt.d.ts +8 -0
- package/columns/types/pgBigInt.js +17 -0
- package/columns/types/pgBoolean.d.ts +8 -0
- package/columns/types/pgBoolean.js +15 -0
- package/columns/types/pgEnum.d.ts +9 -0
- package/columns/types/pgEnum.js +15 -0
- package/columns/types/pgInteger.d.ts +8 -0
- package/columns/types/pgInteger.js +15 -0
- package/columns/types/pgJsonb.d.ts +9 -0
- package/columns/types/pgJsonb.js +15 -0
- package/columns/types/pgText.d.ts +8 -0
- package/columns/types/pgText.js +15 -0
- package/columns/types/pgTime.d.ts +8 -0
- package/columns/types/pgTime.js +15 -0
- package/columns/types/pgTimestamp.d.ts +8 -0
- package/columns/types/pgTimestamp.js +15 -0
- package/columns/types/pgVarChar.d.ts +9 -0
- package/columns/types/pgVarChar.js +21 -0
- package/db/db.d.ts +19 -0
- package/db/db.js +26 -0
- package/db/dbConnector.d.ts +9 -0
- package/db/dbConnector.js +28 -0
- package/db/dbStringConnector.d.ts +6 -0
- package/db/dbStringConnector.js +25 -0
- package/{src/mappers/index.ts → db/group_by.d.ts} +0 -0
- package/db/group_by.js +68 -0
- package/{src/db/index.ts → db/index.d.ts} +0 -0
- package/db/index.js +9 -0
- package/db/session.d.ts +7 -0
- package/db/session.js +20 -0
- package/docs/cases/simple_delete.d.ts +1 -0
- package/docs/cases/simple_delete.js +30 -0
- package/docs/cases/simple_insert.d.ts +1 -0
- package/docs/cases/simple_insert.js +51 -0
- package/docs/cases/simple_join.d.ts +1 -0
- package/docs/cases/simple_join.js +95 -0
- package/docs/cases/simple_select.d.ts +1 -0
- package/docs/cases/simple_select.js +39 -0
- package/docs/cases/simple_update.d.ts +1 -0
- package/docs/cases/simple_update.js +33 -0
- package/docs/tables/citiesTable.d.ts +14 -0
- package/docs/tables/citiesTable.js +19 -0
- package/docs/tables/citiesToUsers.d.ts +7 -0
- package/docs/tables/citiesToUsers.js +18 -0
- package/docs/tables/userGroupsTable.d.ts +7 -0
- package/docs/tables/userGroupsTable.js +15 -0
- package/docs/tables/usersTable.d.ts +17 -0
- package/docs/tables/usersTable.js +29 -0
- package/docs/tables/usersToUserGroups.d.ts +7 -0
- package/docs/tables/usersToUserGroups.js +18 -0
- package/docs/types/rolesType.d.ts +1 -0
- package/docs/types/rolesType.js +6 -0
- package/errors/baseError.d.ts +22 -0
- package/errors/baseError.js +35 -0
- package/errors/builderError.d.ts +14 -0
- package/errors/builderError.js +24 -0
- package/errors/dbErrors.d.ts +12 -0
- package/errors/dbErrors.js +28 -0
- package/index.d.ts +13 -0
- package/index.js +32 -0
- package/indexes/tableIndex.d.ts +11 -0
- package/indexes/tableIndex.js +17 -0
- package/logger/abstractLogger.d.ts +4 -0
- package/logger/abstractLogger.js +5 -0
- package/logger/consoleLogger.d.ts +5 -0
- package/logger/consoleLogger.js +12 -0
- package/{src/migrator/index.ts → mappers/index.d.ts} +0 -0
- package/mappers/index.js +1 -0
- package/mappers/responseMapper.d.ts +7 -0
- package/mappers/responseMapper.js +23 -0
- package/migrator/index.d.ts +0 -0
- package/migrator/index.js +1 -0
- package/migrator/migrator.d.ts +16 -0
- package/migrator/migrator.js +101 -0
- package/package.json +2 -2
- package/serializer/serializer.d.ts +40 -0
- package/serializer/serializer.js +74 -0
- package/tables/abstractTable.d.ts +118 -0
- package/tables/abstractTable.js +116 -0
- package/{src/tables/index.ts → tables/index.d.ts} +0 -0
- package/tables/index.js +8 -0
- package/tables/inferTypes.d.ts +19 -0
- package/tables/inferTypes.js +2 -0
- package/tables/migrationsTable.d.ts +8 -0
- package/tables/migrationsTable.js +16 -0
- package/test.d.ts +1 -0
- package/test.js +81 -0
- package/types/type.d.ts +10 -0
- package/types/type.js +14 -0
- package/utils/ecranate.d.ts +2 -0
- package/utils/ecranate.js +8 -0
- package/.eslintrc +0 -26
- package/.tslintignore +0 -1
- package/LICENSE +0 -674
- package/README.md +0 -147
- package/src/builders/aggregators/abstractAggregator.ts +0 -37
- package/src/builders/aggregators/deleteAggregator.ts +0 -34
- package/src/builders/aggregators/insertAggregator.ts +0 -116
- package/src/builders/aggregators/selectAggregator.ts +0 -102
- package/src/builders/aggregators/updateAggregator.ts +0 -45
- package/src/builders/highLvlBuilders/abstractRequestBuilder.ts +0 -37
- package/src/builders/highLvlBuilders/deleteRequestBuilder.ts +0 -59
- package/src/builders/highLvlBuilders/insertRequestBuilder.ts +0 -87
- package/src/builders/highLvlBuilders/order.ts +0 -4
- package/src/builders/highLvlBuilders/selectRequestBuilder.ts +0 -102
- package/src/builders/highLvlBuilders/updateRequestBuilder.ts +0 -63
- package/src/builders/joinBuilders/builders/abstractJoinBuilder.ts +0 -22
- package/src/builders/joinBuilders/builders/selectWithFourJoins.ts +0 -71
- package/src/builders/joinBuilders/builders/selectWithJoin.ts +0 -67
- package/src/builders/joinBuilders/builders/selectWithThreeJoins.ts +0 -78
- package/src/builders/joinBuilders/builders/selectWithTwoJoins.ts +0 -72
- package/src/builders/joinBuilders/join.ts +0 -37
- package/src/builders/joinBuilders/joinWith.ts +0 -19
- package/src/builders/joinBuilders/responses/selectResponseFourJoins.ts +0 -33
- package/src/builders/joinBuilders/responses/selectResponseThreeJoins.ts +0 -29
- package/src/builders/joinBuilders/responses/selectResponseTwoJoins.ts +0 -22
- package/src/builders/joinBuilders/responses/selectResponseWithJoin.ts +0 -28
- package/src/builders/joinBuilders/static.ts +0 -9
- package/src/builders/lowLvlBuilders/create.ts +0 -114
- package/src/builders/lowLvlBuilders/delets/delete.ts +0 -10
- package/src/builders/lowLvlBuilders/delets/deleteFilter.ts +0 -17
- package/src/builders/lowLvlBuilders/delets/deleteFrom.ts +0 -15
- package/src/builders/lowLvlBuilders/inserts/insert.ts +0 -12
- package/src/builders/lowLvlBuilders/inserts/insertInto.ts +0 -18
- package/src/builders/lowLvlBuilders/inserts/onConflictInsert.ts +0 -19
- package/src/builders/lowLvlBuilders/inserts/valuesInsert.ts +0 -30
- package/src/builders/lowLvlBuilders/selects/select.ts +0 -12
- package/src/builders/lowLvlBuilders/selects/selectFrom.ts +0 -38
- package/src/builders/lowLvlBuilders/selects/selectJoined.ts +0 -40
- package/src/builders/lowLvlBuilders/selects/whereSelect.ts +0 -35
- package/src/builders/lowLvlBuilders/updates/update.ts +0 -10
- package/src/builders/lowLvlBuilders/updates/updateIn.ts +0 -22
- package/src/builders/lowLvlBuilders/updates/whereSelect.ts +0 -17
- package/src/builders/lowLvlBuilders/updates/whereSet.ts +0 -21
- package/src/builders/requestBuilders/updates/combine.ts +0 -25
- package/src/builders/requestBuilders/updates/setObjects.ts +0 -18
- package/src/builders/requestBuilders/updates/static.ts +0 -11
- package/src/builders/requestBuilders/where/and.ts +0 -26
- package/src/builders/requestBuilders/where/const.ts +0 -18
- package/src/builders/requestBuilders/where/constArray.ts +0 -27
- package/src/builders/requestBuilders/where/eqWhere.ts +0 -14
- package/src/builders/requestBuilders/where/greater.ts +0 -14
- package/src/builders/requestBuilders/where/greaterEq.ts +0 -14
- package/src/builders/requestBuilders/where/in.ts +0 -14
- package/src/builders/requestBuilders/where/less.ts +0 -14
- package/src/builders/requestBuilders/where/lessEq.ts +0 -14
- package/src/builders/requestBuilders/where/like.ts +0 -14
- package/src/builders/requestBuilders/where/or.ts +0 -26
- package/src/builders/requestBuilders/where/static.ts +0 -42
- package/src/builders/requestBuilders/where/var.ts +0 -15
- package/src/builders/transaction/transaction.ts +0 -21
- package/src/columns/column.ts +0 -86
- package/src/columns/types/columnType.ts +0 -7
- package/src/columns/types/pgBigDecimal.ts +0 -29
- package/src/columns/types/pgBigInt.ts +0 -20
- package/src/columns/types/pgBoolean.ts +0 -18
- package/src/columns/types/pgEnum.ts +0 -22
- package/src/columns/types/pgInteger.ts +0 -18
- package/src/columns/types/pgJsonb.ts +0 -19
- package/src/columns/types/pgText.ts +0 -18
- package/src/columns/types/pgTime.ts +0 -18
- package/src/columns/types/pgTimestamp.ts +0 -18
- package/src/columns/types/pgVarChar.ts +0 -24
- package/src/db/db.ts +0 -29
- package/src/db/dbConnector.ts +0 -30
- package/src/db/dbStringConnector.ts +0 -28
- package/src/db/session.ts +0 -21
- package/src/errors/baseError.ts +0 -47
- package/src/errors/builderError.ts +0 -30
- package/src/errors/dbErrors.ts +0 -24
- package/src/examples/tables/authOtpTable.ts +0 -17
- package/src/examples/tables/cityTable.ts +0 -15
- package/src/examples/tables/usersTable.ts +0 -18
- package/src/examples/testEnum.ts +0 -6
- package/src/index.ts +0 -40
- package/src/indexes/tableIndex.ts +0 -19
- package/src/logger/abstractLogger.ts +0 -4
- package/src/logger/consoleLogger.ts +0 -11
- package/src/mappers/responseMapper.ts +0 -24
- package/src/migrator/migrator.ts +0 -110
- package/src/serializer/Untitled.js +0 -72
- package/src/serializer/out.json +0 -140
- package/src/tables/abstractTable.ts +0 -183
- package/src/tables/inferTypes.ts +0 -34
- package/src/tables/migrationsTable.ts +0 -12
- package/src/utils/ecranate.ts +0 -4
- package/tsconfig.json +0 -29
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable import/no-cycle */
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const builderError_1 = require("../../errors/builderError");
|
|
6
|
+
const dbErrors_1 = require("../../errors/dbErrors");
|
|
7
|
+
const responseMapper_1 = require("../../mappers/responseMapper");
|
|
8
|
+
const selectWithJoin_1 = require("../joinBuilders/builders/selectWithJoin");
|
|
9
|
+
const join_1 = require("../joinBuilders/join");
|
|
10
|
+
const abstractRequestBuilder_1 = require("./abstractRequestBuilder");
|
|
11
|
+
class SelectTRB extends abstractRequestBuilder_1.default {
|
|
12
|
+
constructor(session, mappedServiceToDb, props, table, logger) {
|
|
13
|
+
super(table, session, mappedServiceToDb, logger);
|
|
14
|
+
this.where = (expr) => {
|
|
15
|
+
this._filter = expr;
|
|
16
|
+
return this;
|
|
17
|
+
};
|
|
18
|
+
this.distinct = (column) => {
|
|
19
|
+
this.__distinct = column;
|
|
20
|
+
return this;
|
|
21
|
+
};
|
|
22
|
+
this.execute = async () => {
|
|
23
|
+
const res = await this._execute();
|
|
24
|
+
return res;
|
|
25
|
+
};
|
|
26
|
+
this._execute = async () => {
|
|
27
|
+
// Select.from().filteredBy().limit().offset().orderBy().groupBy().build()
|
|
28
|
+
const queryBuilder = __1.Select
|
|
29
|
+
.from(this._table)
|
|
30
|
+
.distinct(this.__distinct)
|
|
31
|
+
.filteredBy(this._filter)
|
|
32
|
+
.limit(this.props.limit)
|
|
33
|
+
.offset(this.props.offset)
|
|
34
|
+
.orderBy(this.__orderBy, this.__order);
|
|
35
|
+
let query = '';
|
|
36
|
+
try {
|
|
37
|
+
query = queryBuilder.build();
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
throw new builderError_1.default(builderError_1.BuilderType.SELECT, this._table.tableName(), this._columns, e, this._filter);
|
|
41
|
+
}
|
|
42
|
+
if (this._logger) {
|
|
43
|
+
this._logger.info(`Selecting from ${this._table.tableName()} using query:\n ${query}`);
|
|
44
|
+
}
|
|
45
|
+
const result = await this._session.execute(query);
|
|
46
|
+
if (result.isLeft()) {
|
|
47
|
+
const { reason } = result.value;
|
|
48
|
+
throw new dbErrors_1.DatabaseSelectError(this._table.tableName(), reason, query);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
return responseMapper_1.default.map(this._mappedServiceToDb, result.value);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
this.props = props;
|
|
55
|
+
}
|
|
56
|
+
orderBy(callback, order) {
|
|
57
|
+
this.__orderBy = callback(this._table);
|
|
58
|
+
this.__order = order;
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
// public groupBy(callback: (table: TTable) => Column<ColumnType, boolean, boolean>)
|
|
62
|
+
// : SelectTRB<TTable> {
|
|
63
|
+
// this.__groupBy = callback(this.__table);
|
|
64
|
+
// return this;
|
|
65
|
+
// }
|
|
66
|
+
innerJoin(table, from, to) {
|
|
67
|
+
const toTable = this._table.db.create(table);
|
|
68
|
+
const fromColumn = from(this._table);
|
|
69
|
+
const toColumn = to(toTable);
|
|
70
|
+
const join = new __1.JoinWith(toTable.tableName(), toTable.mapServiceToDb())
|
|
71
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.INNER_JOIN);
|
|
72
|
+
return new selectWithJoin_1.default(this._table, this._session, this._filter, join, this.props, this.__orderBy, this.__order, this.__distinct);
|
|
73
|
+
}
|
|
74
|
+
leftJoin(table, from, to) {
|
|
75
|
+
const toTable = this._table.db.create(table);
|
|
76
|
+
const fromColumn = from(this._table);
|
|
77
|
+
const toColumn = to(toTable);
|
|
78
|
+
const join = new __1.JoinWith(toTable.tableName(), toTable.mapServiceToDb())
|
|
79
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.LEFT_JOIN);
|
|
80
|
+
return new selectWithJoin_1.default(this._table, this._session, this._filter, join, this.props, this.__orderBy, this.__order, this.__distinct);
|
|
81
|
+
}
|
|
82
|
+
rightJoin(table, from, to) {
|
|
83
|
+
const toTable = this._table.db.create(table);
|
|
84
|
+
const fromColumn = from(this._table);
|
|
85
|
+
const toColumn = to(toTable);
|
|
86
|
+
const join = new __1.JoinWith(toTable.tableName(), toTable.mapServiceToDb())
|
|
87
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.RIGHT_JOIN);
|
|
88
|
+
return new selectWithJoin_1.default(this._table, this._session, this._filter, join, this.props, this.__orderBy, this.__order, this.__distinct);
|
|
89
|
+
}
|
|
90
|
+
fullJoin(table, from, to) {
|
|
91
|
+
const toTable = this._table.db.create(table);
|
|
92
|
+
const fromColumn = from(this._table);
|
|
93
|
+
const toColumn = to(toTable);
|
|
94
|
+
const join = new __1.JoinWith(toTable.tableName(), toTable.mapServiceToDb())
|
|
95
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.FULL_JOIN);
|
|
96
|
+
return new selectWithJoin_1.default(this._table, this._session, this._filter, join, this.props, this.__orderBy, this.__order, this.__distinct);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.default = SelectTRB;
|
|
@@ -0,0 +1,20 @@
|
|
|
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 UpdateTRB<TTable extends AbstractTable<TTable>> extends TableRequestBuilder<TTable> {
|
|
10
|
+
private _filter;
|
|
11
|
+
private _update;
|
|
12
|
+
private _objToUpdate;
|
|
13
|
+
constructor(table: AbstractTable<TTable>, session: Session, mappedServiceToDb: {
|
|
14
|
+
[name in keyof ExtractModel<TTable>]: AbstractColumn<ColumnType>;
|
|
15
|
+
}, logger?: BaseLogger);
|
|
16
|
+
where: (expr: Expr) => UpdateTRB<TTable>;
|
|
17
|
+
set: (expr: Partial<ExtractModel<TTable>>) => UpdateTRB<TTable>;
|
|
18
|
+
execute: () => Promise<void>;
|
|
19
|
+
protected _execute: () => Promise<Array<ExtractModel<TTable> | undefined>>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
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 update_1 = require("../lowLvlBuilders/updates/update");
|
|
7
|
+
const static_1 = require("../requestBuilders/updates/static");
|
|
8
|
+
const abstractRequestBuilder_1 = require("./abstractRequestBuilder");
|
|
9
|
+
class UpdateTRB extends abstractRequestBuilder_1.default {
|
|
10
|
+
constructor(table, session, mappedServiceToDb, logger) {
|
|
11
|
+
super(table, session, mappedServiceToDb, logger);
|
|
12
|
+
this.where = (expr) => {
|
|
13
|
+
this._filter = expr;
|
|
14
|
+
return this;
|
|
15
|
+
};
|
|
16
|
+
this.set = (expr) => {
|
|
17
|
+
const updates = [];
|
|
18
|
+
Object.entries(expr).forEach(([key, value]) => {
|
|
19
|
+
const column = this._mappedServiceToDb[key];
|
|
20
|
+
updates.push(static_1.set(column, value));
|
|
21
|
+
});
|
|
22
|
+
this._update = static_1.combine(updates);
|
|
23
|
+
return this;
|
|
24
|
+
};
|
|
25
|
+
this.execute = async () => {
|
|
26
|
+
await this._execute();
|
|
27
|
+
};
|
|
28
|
+
this._execute = async () => {
|
|
29
|
+
let query = '';
|
|
30
|
+
try {
|
|
31
|
+
query = update_1.default.in(this._table)
|
|
32
|
+
.columns()
|
|
33
|
+
.set(this._update)
|
|
34
|
+
.filteredBy(this._filter)
|
|
35
|
+
.build();
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
throw new builderError_1.default(builderError_1.BuilderType.UPDATE, this._table.tableName(), this._columns, e, this._filter);
|
|
39
|
+
}
|
|
40
|
+
if (this._logger) {
|
|
41
|
+
this._logger.info(`Updating ${this._table.tableName()} using query:\n ${query}`);
|
|
42
|
+
}
|
|
43
|
+
const result = await this._session.execute(query);
|
|
44
|
+
if (result.isLeft()) {
|
|
45
|
+
const { reason } = result.value;
|
|
46
|
+
throw new dbErrors_1.DatabaseUpdateError(this._table.tableName(), reason, query);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
return responseMapper_1.default.map(this._mappedServiceToDb, result.value);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.default = UpdateTRB;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { default as DeleteTRB } from './highLvlBuilders/deleteRequestBuilder';
|
|
2
2
|
export { default as InsertTRB } from './highLvlBuilders/insertRequestBuilder';
|
|
3
|
-
export { default as
|
|
3
|
+
export { default as SelectTRB } from './highLvlBuilders/selectRequestBuilder';
|
|
4
4
|
export { default as UpdateTRB } from './highLvlBuilders/updateRequestBuilder';
|
|
5
5
|
export { default as to } from './joinBuilders/static';
|
|
6
6
|
export { default as JoinWith } from './joinBuilders/joinWith';
|
|
@@ -15,6 +15,4 @@ export { default as Insert } from './lowLvlBuilders/inserts/insert';
|
|
|
15
15
|
export { default as Select } from './lowLvlBuilders/selects/select';
|
|
16
16
|
export { default as Update } from './lowLvlBuilders/updates/update';
|
|
17
17
|
export { set, combine } from './requestBuilders/updates/static';
|
|
18
|
-
export {
|
|
19
|
-
eq, inArray as in, and, or, like, greater, greaterEq, less, lessEq,
|
|
20
|
-
} from './requestBuilders/where/static';
|
|
18
|
+
export { eq, inArray as in, and, or, like, greater, greaterEq, less, lessEq, raw, } from './requestBuilders/where/static';
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.raw = exports.lessEq = exports.less = exports.greaterEq = exports.greater = exports.like = exports.or = exports.and = exports.in = exports.eq = exports.combine = exports.set = exports.Update = exports.Select = exports.Insert = exports.Delete = exports.Create = exports.SelectResponseJoin = exports.SelectResponseTwoJoins = exports.SelectTRBWithTwoJoins = exports.SelectTRBWithJoin = exports.Join = exports.JoinWith = exports.to = exports.UpdateTRB = exports.SelectTRB = exports.InsertTRB = exports.DeleteTRB = void 0;
|
|
4
|
+
/* eslint-disable import/no-cycle */
|
|
5
|
+
var deleteRequestBuilder_1 = require("./highLvlBuilders/deleteRequestBuilder");
|
|
6
|
+
Object.defineProperty(exports, "DeleteTRB", { enumerable: true, get: function () { return deleteRequestBuilder_1.default; } });
|
|
7
|
+
var insertRequestBuilder_1 = require("./highLvlBuilders/insertRequestBuilder");
|
|
8
|
+
Object.defineProperty(exports, "InsertTRB", { enumerable: true, get: function () { return insertRequestBuilder_1.default; } });
|
|
9
|
+
var selectRequestBuilder_1 = require("./highLvlBuilders/selectRequestBuilder");
|
|
10
|
+
Object.defineProperty(exports, "SelectTRB", { enumerable: true, get: function () { return selectRequestBuilder_1.default; } });
|
|
11
|
+
var updateRequestBuilder_1 = require("./highLvlBuilders/updateRequestBuilder");
|
|
12
|
+
Object.defineProperty(exports, "UpdateTRB", { enumerable: true, get: function () { return updateRequestBuilder_1.default; } });
|
|
13
|
+
var static_1 = require("./joinBuilders/static");
|
|
14
|
+
Object.defineProperty(exports, "to", { enumerable: true, get: function () { return static_1.default; } });
|
|
15
|
+
var joinWith_1 = require("./joinBuilders/joinWith");
|
|
16
|
+
Object.defineProperty(exports, "JoinWith", { enumerable: true, get: function () { return joinWith_1.default; } });
|
|
17
|
+
var join_1 = require("./joinBuilders/join");
|
|
18
|
+
Object.defineProperty(exports, "Join", { enumerable: true, get: function () { return join_1.default; } });
|
|
19
|
+
var selectWithJoin_1 = require("./joinBuilders/builders/selectWithJoin");
|
|
20
|
+
Object.defineProperty(exports, "SelectTRBWithJoin", { enumerable: true, get: function () { return selectWithJoin_1.default; } });
|
|
21
|
+
var selectWithTwoJoins_1 = require("./joinBuilders/builders/selectWithTwoJoins");
|
|
22
|
+
Object.defineProperty(exports, "SelectTRBWithTwoJoins", { enumerable: true, get: function () { return selectWithTwoJoins_1.default; } });
|
|
23
|
+
var selectResponseTwoJoins_1 = require("./joinBuilders/responses/selectResponseTwoJoins");
|
|
24
|
+
Object.defineProperty(exports, "SelectResponseTwoJoins", { enumerable: true, get: function () { return selectResponseTwoJoins_1.default; } });
|
|
25
|
+
var selectResponseWithJoin_1 = require("./joinBuilders/responses/selectResponseWithJoin");
|
|
26
|
+
Object.defineProperty(exports, "SelectResponseJoin", { enumerable: true, get: function () { return selectResponseWithJoin_1.default; } });
|
|
27
|
+
var create_1 = require("./lowLvlBuilders/create");
|
|
28
|
+
Object.defineProperty(exports, "Create", { enumerable: true, get: function () { return create_1.default; } });
|
|
29
|
+
var delete_1 = require("./lowLvlBuilders/delets/delete");
|
|
30
|
+
Object.defineProperty(exports, "Delete", { enumerable: true, get: function () { return delete_1.default; } });
|
|
31
|
+
var insert_1 = require("./lowLvlBuilders/inserts/insert");
|
|
32
|
+
Object.defineProperty(exports, "Insert", { enumerable: true, get: function () { return insert_1.default; } });
|
|
33
|
+
var select_1 = require("./lowLvlBuilders/selects/select");
|
|
34
|
+
Object.defineProperty(exports, "Select", { enumerable: true, get: function () { return select_1.default; } });
|
|
35
|
+
var update_1 = require("./lowLvlBuilders/updates/update");
|
|
36
|
+
Object.defineProperty(exports, "Update", { enumerable: true, get: function () { return update_1.default; } });
|
|
37
|
+
var static_2 = require("./requestBuilders/updates/static");
|
|
38
|
+
Object.defineProperty(exports, "set", { enumerable: true, get: function () { return static_2.set; } });
|
|
39
|
+
Object.defineProperty(exports, "combine", { enumerable: true, get: function () { return static_2.combine; } });
|
|
40
|
+
var static_3 = require("./requestBuilders/where/static");
|
|
41
|
+
Object.defineProperty(exports, "eq", { enumerable: true, get: function () { return static_3.eq; } });
|
|
42
|
+
Object.defineProperty(exports, "in", { enumerable: true, get: function () { return static_3.inArray; } });
|
|
43
|
+
Object.defineProperty(exports, "and", { enumerable: true, get: function () { return static_3.and; } });
|
|
44
|
+
Object.defineProperty(exports, "or", { enumerable: true, get: function () { return static_3.or; } });
|
|
45
|
+
Object.defineProperty(exports, "like", { enumerable: true, get: function () { return static_3.like; } });
|
|
46
|
+
Object.defineProperty(exports, "greater", { enumerable: true, get: function () { return static_3.greater; } });
|
|
47
|
+
Object.defineProperty(exports, "greaterEq", { enumerable: true, get: function () { return static_3.greaterEq; } });
|
|
48
|
+
Object.defineProperty(exports, "less", { enumerable: true, get: function () { return static_3.less; } });
|
|
49
|
+
Object.defineProperty(exports, "lessEq", { enumerable: true, get: function () { return static_3.lessEq; } });
|
|
50
|
+
Object.defineProperty(exports, "raw", { enumerable: true, get: function () { return static_3.raw; } });
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { QueryResult } from 'pg';
|
|
2
|
+
import { AbstractColumn } from '../../../columns/column';
|
|
3
|
+
import ColumnType from '../../../columns/types/columnType';
|
|
4
|
+
import Session from '../../../db/session';
|
|
5
|
+
import { AbstractTable } from '../../../tables';
|
|
6
|
+
import Order from '../../highLvlBuilders/order';
|
|
7
|
+
import Expr from '../../requestBuilders/where/where';
|
|
8
|
+
import Join from '../join';
|
|
9
|
+
export default abstract class AbstractJoined<TTable extends AbstractTable<TTable>, TRes> {
|
|
10
|
+
protected _table: TTable;
|
|
11
|
+
protected _session: Session;
|
|
12
|
+
protected _filter: Expr;
|
|
13
|
+
protected _distinct?: AbstractColumn<ColumnType, boolean, boolean>;
|
|
14
|
+
protected _props: {
|
|
15
|
+
limit?: number;
|
|
16
|
+
offset?: number;
|
|
17
|
+
};
|
|
18
|
+
protected _orderBy?: AbstractColumn<ColumnType, boolean, boolean>;
|
|
19
|
+
protected _order?: Order;
|
|
20
|
+
constructor(table: TTable, filter: Expr, session: Session, props: {
|
|
21
|
+
limit?: number;
|
|
22
|
+
offset?: number;
|
|
23
|
+
}, orderBy?: AbstractColumn<ColumnType, boolean, boolean>, order?: Order, distinct?: AbstractColumn<ColumnType, boolean, boolean>);
|
|
24
|
+
execute: () => Promise<TRes>;
|
|
25
|
+
protected abstract mapResponse(result: QueryResult<any>): TRes;
|
|
26
|
+
protected abstract joins(): Array<Join<any>>;
|
|
27
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
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 select_1 = require("../../lowLvlBuilders/selects/select");
|
|
6
|
+
class AbstractJoined {
|
|
7
|
+
constructor(table, filter, session, props, orderBy, order, distinct) {
|
|
8
|
+
this.execute = async () => {
|
|
9
|
+
const queryBuilder = select_1.default
|
|
10
|
+
.from(this._table)
|
|
11
|
+
.distinct(this._distinct)
|
|
12
|
+
.joined(this.joins())
|
|
13
|
+
.limit(this._props.limit)
|
|
14
|
+
.offset(this._props.offset)
|
|
15
|
+
.filteredBy(this._filter)
|
|
16
|
+
.orderBy(this._orderBy, this._order);
|
|
17
|
+
let query = '';
|
|
18
|
+
try {
|
|
19
|
+
query = queryBuilder.build();
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
throw new builderError_1.default(builderError_1.BuilderType.JOINED_SELECT, this._table.tableName(), Object.values(this._table.mapServiceToDb()), e, this._filter);
|
|
23
|
+
}
|
|
24
|
+
const result = await this._session.execute(query);
|
|
25
|
+
if (result.isLeft()) {
|
|
26
|
+
const { reason } = result.value;
|
|
27
|
+
throw new dbErrors_1.DatabaseSelectError(this._table.tableName(), reason, query);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return this.mapResponse(result.value);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
this._table = table;
|
|
34
|
+
this._session = session;
|
|
35
|
+
this._filter = filter;
|
|
36
|
+
this._props = props;
|
|
37
|
+
this._order = order;
|
|
38
|
+
this._orderBy = orderBy;
|
|
39
|
+
this._distinct = distinct;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.default = AbstractJoined;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { QueryResult } from 'pg';
|
|
2
|
+
import { AbstractColumn } from '../../../columns/column';
|
|
3
|
+
import ColumnType from '../../../columns/types/columnType';
|
|
4
|
+
import Session from '../../../db/session';
|
|
5
|
+
import { AbstractTable } from '../../../tables';
|
|
6
|
+
import Order from '../../highLvlBuilders/order';
|
|
7
|
+
import Expr from '../../requestBuilders/where/where';
|
|
8
|
+
import Join from '../join';
|
|
9
|
+
import SelectResponseFiveJoins from '../responses/selectResponseFiveJoins';
|
|
10
|
+
import AbstractJoined from './abstractJoinBuilder';
|
|
11
|
+
export default class SelectTRBWithFiveJoins<TTable extends AbstractTable<TTable>, TTable1, TTable2, TTable3, TTable4, TTable5> extends AbstractJoined<TTable, SelectResponseFiveJoins<TTable, TTable1, TTable2, TTable3, TTable4, TTable5>> {
|
|
12
|
+
private _join1;
|
|
13
|
+
private _join2;
|
|
14
|
+
private _join3;
|
|
15
|
+
private _join4;
|
|
16
|
+
private _join5;
|
|
17
|
+
constructor(table: TTable, session: Session, filter: Expr, join1: Join<TTable1>, join2: Join<TTable2>, join3: Join<TTable3>, join4: Join<TTable4>, join5: Join<TTable5>, props: {
|
|
18
|
+
limit?: number;
|
|
19
|
+
offset?: number;
|
|
20
|
+
}, orderBy?: AbstractColumn<ColumnType, boolean, boolean>, order?: Order, distinct?: AbstractColumn<ColumnType, boolean, boolean>);
|
|
21
|
+
protected joins(): Join<any>[];
|
|
22
|
+
protected mapResponse(result: QueryResult<any>): SelectResponseFiveJoins<TTable, TTable1, TTable2, TTable3, TTable4, TTable5>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const responseMapper_1 = require("../../../mappers/responseMapper");
|
|
4
|
+
const selectResponseFiveJoins_1 = require("../responses/selectResponseFiveJoins");
|
|
5
|
+
const abstractJoinBuilder_1 = require("./abstractJoinBuilder");
|
|
6
|
+
class SelectTRBWithFiveJoins extends abstractJoinBuilder_1.default {
|
|
7
|
+
constructor(table, session, filter, join1, join2, join3, join4, join5, props, orderBy, order, distinct) {
|
|
8
|
+
super(table, filter, session, props, orderBy, order, distinct);
|
|
9
|
+
this._join1 = join1;
|
|
10
|
+
this._join2 = join2;
|
|
11
|
+
this._join3 = join3;
|
|
12
|
+
this._join4 = join4;
|
|
13
|
+
this._join5 = join5;
|
|
14
|
+
}
|
|
15
|
+
joins() {
|
|
16
|
+
return [this._join1, this._join2, this._join3, this._join4, this._join5];
|
|
17
|
+
}
|
|
18
|
+
mapResponse(result) {
|
|
19
|
+
const parent = this._join1.mappedServiceToDb;
|
|
20
|
+
const parentTwo = this._join2.mappedServiceToDb;
|
|
21
|
+
const parentThree = this._join3.mappedServiceToDb;
|
|
22
|
+
const parentFour = this._join4.mappedServiceToDb;
|
|
23
|
+
const parentFive = this._join5.mappedServiceToDb;
|
|
24
|
+
const response = responseMapper_1.default.map(this._table.mapServiceToDb(), result);
|
|
25
|
+
const objects = responseMapper_1.default.map(parent, result);
|
|
26
|
+
const objectsTwo = responseMapper_1.default.map(parentTwo, result);
|
|
27
|
+
const objectsThree = responseMapper_1.default.map(parentThree, result);
|
|
28
|
+
const objectsFour = responseMapper_1.default.map(parentFour, result);
|
|
29
|
+
const objectsFive = responseMapper_1.default.map(parentFive, result);
|
|
30
|
+
return new selectResponseFiveJoins_1.default(response, objects, objectsTwo, objectsThree, objectsFour, objectsFive);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.default = SelectTRBWithFiveJoins;
|
|
@@ -0,0 +1,36 @@
|
|
|
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';
|
|
7
|
+
import Order from '../../highLvlBuilders/order';
|
|
8
|
+
import Expr from '../../requestBuilders/where/where';
|
|
9
|
+
import Join from '../join';
|
|
10
|
+
import SelectResponseFourJoins from '../responses/selectResponseFourJoins';
|
|
11
|
+
import AbstractJoined from './abstractJoinBuilder';
|
|
12
|
+
import SelectTRBWithFiveJoins from './selectWithFiveJoins';
|
|
13
|
+
export default class SelectTRBWithFourJoins<TTable extends AbstractTable<TTable>, TTable1, TTable2, TTable3, TTable4> extends AbstractJoined<TTable, SelectResponseFourJoins<TTable, TTable1, TTable2, TTable3, TTable4>> {
|
|
14
|
+
private _join1;
|
|
15
|
+
private _join2;
|
|
16
|
+
private _join3;
|
|
17
|
+
private _join4;
|
|
18
|
+
constructor(table: TTable, session: Session, filter: Expr, join1: Join<TTable1>, join2: Join<TTable2>, join3: Join<TTable3>, join4: Join<TTable4>, props: {
|
|
19
|
+
limit?: number;
|
|
20
|
+
offset?: number;
|
|
21
|
+
}, orderBy?: AbstractColumn<ColumnType, boolean, boolean>, order?: Order, distinct?: AbstractColumn<ColumnType, boolean, boolean>);
|
|
22
|
+
innerJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
|
|
23
|
+
new (db: DB): IToTable;
|
|
24
|
+
}, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithFiveJoins<TTable, TTable1, TTable2, TTable3, TTable4, IToTable>;
|
|
25
|
+
leftJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
|
|
26
|
+
new (db: DB): IToTable;
|
|
27
|
+
}, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithFiveJoins<TTable, TTable1, TTable2, TTable3, TTable4, IToTable>;
|
|
28
|
+
rightJoin<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>): SelectTRBWithFiveJoins<TTable, TTable1, TTable2, TTable3, TTable4, IToTable>;
|
|
31
|
+
fullJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
|
|
32
|
+
new (db: DB): IToTable;
|
|
33
|
+
}, from: (table: TTable) => AbstractColumn<TColumn>, to: (table: IToTable) => AbstractColumn<TColumn>): SelectTRBWithFiveJoins<TTable, TTable1, TTable2, TTable3, TTable4, IToTable>;
|
|
34
|
+
protected joins(): Join<any>[];
|
|
35
|
+
protected mapResponse(result: QueryResult<any>): SelectResponseFourJoins<TTable, TTable1, TTable2, TTable3, TTable4>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
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 selectResponseFourJoins_1 = require("../responses/selectResponseFourJoins");
|
|
7
|
+
const abstractJoinBuilder_1 = require("./abstractJoinBuilder");
|
|
8
|
+
const selectWithFiveJoins_1 = require("./selectWithFiveJoins");
|
|
9
|
+
class SelectTRBWithFourJoins extends abstractJoinBuilder_1.default {
|
|
10
|
+
constructor(table, session, filter, join1, join2, join3, join4, 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
|
+
this._join4 = join4;
|
|
16
|
+
}
|
|
17
|
+
innerJoin(table, from, to) {
|
|
18
|
+
const toTable = this._table.db.create(table);
|
|
19
|
+
const fromColumn = from(this._table);
|
|
20
|
+
const toColumn = to(toTable);
|
|
21
|
+
const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
|
|
22
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.INNER_JOIN);
|
|
23
|
+
return new selectWithFiveJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, this._join3, this._join4, join, this._props, this._orderBy, this._order, this._distinct);
|
|
24
|
+
}
|
|
25
|
+
leftJoin(table, from, to) {
|
|
26
|
+
const toTable = this._table.db.create(table);
|
|
27
|
+
const fromColumn = from(this._table);
|
|
28
|
+
const toColumn = to(toTable);
|
|
29
|
+
const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
|
|
30
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.LEFT_JOIN);
|
|
31
|
+
return new selectWithFiveJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, this._join3, this._join4, join, this._props, this._orderBy, this._order, this._distinct);
|
|
32
|
+
}
|
|
33
|
+
rightJoin(table, from, to) {
|
|
34
|
+
const toTable = this._table.db.create(table);
|
|
35
|
+
const fromColumn = from(this._table);
|
|
36
|
+
const toColumn = to(toTable);
|
|
37
|
+
const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
|
|
38
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.RIGHT_JOIN);
|
|
39
|
+
return new selectWithFiveJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, this._join3, this._join4, join, this._props, this._orderBy, this._order, this._distinct);
|
|
40
|
+
}
|
|
41
|
+
fullJoin(table, from, to) {
|
|
42
|
+
const toTable = this._table.db.create(table);
|
|
43
|
+
const fromColumn = from(this._table);
|
|
44
|
+
const toColumn = to(toTable);
|
|
45
|
+
const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
|
|
46
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.FULL_JOIN);
|
|
47
|
+
return new selectWithFiveJoins_1.default(this._table, this._session, this._filter, this._join1, this._join2, this._join3, this._join4, join, this._props, this._orderBy, this._order, this._distinct);
|
|
48
|
+
}
|
|
49
|
+
joins() {
|
|
50
|
+
return [this._join1, this._join2, this._join3, this._join4];
|
|
51
|
+
}
|
|
52
|
+
mapResponse(result) {
|
|
53
|
+
const parent = this._join1.mappedServiceToDb;
|
|
54
|
+
const parentTwo = this._join2.mappedServiceToDb;
|
|
55
|
+
const parentThree = this._join3.mappedServiceToDb;
|
|
56
|
+
const parentFour = this._join4.mappedServiceToDb;
|
|
57
|
+
const response = responseMapper_1.default.map(this._table.mapServiceToDb(), result);
|
|
58
|
+
const objects = responseMapper_1.default.map(parent, result);
|
|
59
|
+
const objectsTwo = responseMapper_1.default.map(parentTwo, result);
|
|
60
|
+
const objectsThree = responseMapper_1.default.map(parentThree, result);
|
|
61
|
+
const objectsFour = responseMapper_1.default.map(parentFour, result);
|
|
62
|
+
return new selectResponseFourJoins_1.default(response, objects, objectsTwo, objectsThree, objectsFour);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.default = SelectTRBWithFourJoins;
|
|
@@ -0,0 +1,33 @@
|
|
|
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 SelectResponseJoin from '../responses/selectResponseWithJoin';
|
|
11
|
+
import AbstractJoined from './abstractJoinBuilder';
|
|
12
|
+
import SelectTRBWithTwoJoins from './selectWithTwoJoins';
|
|
13
|
+
export default class SelectTRBWithJoin<TTable extends AbstractTable<TTable>, TTable1> extends AbstractJoined<TTable, SelectResponseJoin<TTable, TTable1>> {
|
|
14
|
+
private _join;
|
|
15
|
+
constructor(table: TTable, session: Session, filter: Expr, join: Join<TTable1>, props: {
|
|
16
|
+
limit?: number;
|
|
17
|
+
offset?: number;
|
|
18
|
+
}, orderBy?: AbstractColumn<ColumnType, boolean, boolean>, order?: Order, distinct?: AbstractColumn<ColumnType, boolean, boolean>);
|
|
19
|
+
innerJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
|
|
20
|
+
new (db: DB): IToTable;
|
|
21
|
+
}, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithTwoJoins<TTable, TTable1, IToTable>;
|
|
22
|
+
leftJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
|
|
23
|
+
new (db: DB): IToTable;
|
|
24
|
+
}, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithTwoJoins<TTable, TTable1, IToTable>;
|
|
25
|
+
rightJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
|
|
26
|
+
new (db: DB): IToTable;
|
|
27
|
+
}, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithTwoJoins<TTable, TTable1, IToTable>;
|
|
28
|
+
fullJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
|
|
29
|
+
new (db: DB): IToTable;
|
|
30
|
+
}, from: (table: TTable) => AbstractColumn<TColumn>, to: (table: IToTable) => AbstractColumn<TColumn>): SelectTRBWithTwoJoins<TTable, TTable1, IToTable>;
|
|
31
|
+
protected joins(): Join<any>[];
|
|
32
|
+
protected mapResponse(result: QueryResult<any>): SelectResponseJoin<TTable, TTable1>;
|
|
33
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
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 selectResponseWithJoin_1 = require("../responses/selectResponseWithJoin");
|
|
7
|
+
const abstractJoinBuilder_1 = require("./abstractJoinBuilder");
|
|
8
|
+
const selectWithTwoJoins_1 = require("./selectWithTwoJoins");
|
|
9
|
+
class SelectTRBWithJoin extends abstractJoinBuilder_1.default {
|
|
10
|
+
constructor(table, session, filter, join, props, orderBy, order, distinct) {
|
|
11
|
+
super(table, filter, session, props, orderBy, order, distinct);
|
|
12
|
+
this._join = join;
|
|
13
|
+
}
|
|
14
|
+
innerJoin(table, from, to) {
|
|
15
|
+
const toTable = this._table.db.create(table);
|
|
16
|
+
const fromColumn = from(this._table);
|
|
17
|
+
const toColumn = to(toTable);
|
|
18
|
+
const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
|
|
19
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.INNER_JOIN);
|
|
20
|
+
return new selectWithTwoJoins_1.default(this._table, this._session, this._filter, this._join, join, this._props, this._orderBy, this._order, this._distinct);
|
|
21
|
+
}
|
|
22
|
+
leftJoin(table, from, to) {
|
|
23
|
+
const toTable = this._table.db.create(table);
|
|
24
|
+
const fromColumn = from(this._table);
|
|
25
|
+
const toColumn = to(toTable);
|
|
26
|
+
const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
|
|
27
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.LEFT_JOIN);
|
|
28
|
+
return new selectWithTwoJoins_1.default(this._table, this._session, this._filter, this._join, join, this._props, this._orderBy, this._order, this._distinct);
|
|
29
|
+
}
|
|
30
|
+
rightJoin(table, from, to) {
|
|
31
|
+
const toTable = this._table.db.create(table);
|
|
32
|
+
const fromColumn = from(this._table);
|
|
33
|
+
const toColumn = to(toTable);
|
|
34
|
+
const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
|
|
35
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.RIGHT_JOIN);
|
|
36
|
+
return new selectWithTwoJoins_1.default(this._table, this._session, this._filter, this._join, join, this._props, this._orderBy, this._order, this._distinct);
|
|
37
|
+
}
|
|
38
|
+
fullJoin(table, from, to) {
|
|
39
|
+
const toTable = this._table.db.create(table);
|
|
40
|
+
const fromColumn = from(this._table);
|
|
41
|
+
const toColumn = to(toTable);
|
|
42
|
+
const join = new joinWith_1.default(toTable.tableName(), toTable.mapServiceToDb())
|
|
43
|
+
.columns(fromColumn, toColumn).joinStrategy(join_1.JoinStrategy.FULL_JOIN);
|
|
44
|
+
return new selectWithTwoJoins_1.default(this._table, this._session, this._filter, this._join, join, this._props, this._orderBy, this._order, this._distinct);
|
|
45
|
+
}
|
|
46
|
+
joins() {
|
|
47
|
+
return [this._join];
|
|
48
|
+
}
|
|
49
|
+
mapResponse(result) {
|
|
50
|
+
const parent = this._join.mappedServiceToDb;
|
|
51
|
+
const response = responseMapper_1.default.map(this._table.mapServiceToDb(), result);
|
|
52
|
+
const objects = responseMapper_1.default.map(parent, result);
|
|
53
|
+
return new selectResponseWithJoin_1.default(response, objects);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.default = SelectTRBWithJoin;
|
|
@@ -0,0 +1,35 @@
|
|
|
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 SelectResponseThreeJoins from '../responses/selectResponseThreeJoins';
|
|
11
|
+
import AbstractJoined from './abstractJoinBuilder';
|
|
12
|
+
import SelectTRBWithFourJoins from './selectWithFourJoins';
|
|
13
|
+
export default class SelectTRBWithThreeJoins<TTable extends AbstractTable<TTable>, TTable1, TTable2, TTable3> extends AbstractJoined<TTable, SelectResponseThreeJoins<TTable, TTable1, TTable2, TTable3>> {
|
|
14
|
+
private _join1;
|
|
15
|
+
private _join2;
|
|
16
|
+
private _join3;
|
|
17
|
+
constructor(table: TTable, session: Session, filter: Expr, join1: Join<TTable1>, join2: Join<TTable2>, join3: Join<TTable3>, props: {
|
|
18
|
+
limit?: number;
|
|
19
|
+
offset?: number;
|
|
20
|
+
}, orderBy?: AbstractColumn<ColumnType, boolean, boolean>, order?: Order, distinct?: AbstractColumn<ColumnType, boolean, boolean>);
|
|
21
|
+
innerJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
|
|
22
|
+
new (db: DB): IToTable;
|
|
23
|
+
}, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithFourJoins<TTable, TTable1, TTable2, TTable3, IToTable>;
|
|
24
|
+
leftJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
|
|
25
|
+
new (db: DB): IToTable;
|
|
26
|
+
}, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithFourJoins<TTable, TTable1, TTable2, TTable3, IToTable>;
|
|
27
|
+
rightJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
|
|
28
|
+
new (db: DB): IToTable;
|
|
29
|
+
}, from: (table: TTable) => AbstractColumn<TColumn, boolean, boolean>, to: (table: IToTable) => AbstractColumn<TColumn, boolean, boolean>): SelectTRBWithFourJoins<TTable, TTable1, TTable2, TTable3, IToTable>;
|
|
30
|
+
fullJoin<TColumn extends ColumnType, IToTable extends AbstractTable<IToTable>>(table: {
|
|
31
|
+
new (db: DB): IToTable;
|
|
32
|
+
}, from: (table: TTable) => AbstractColumn<TColumn>, to: (table: IToTable) => AbstractColumn<TColumn>): SelectTRBWithFourJoins<TTable, TTable1, TTable2, TTable3, IToTable>;
|
|
33
|
+
protected mapResponse(result: QueryResult<any>): SelectResponseThreeJoins<TTable, TTable1, TTable2, TTable3>;
|
|
34
|
+
protected joins(): Join<any>[];
|
|
35
|
+
}
|