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,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const columnType_1 = require("./columnType");
|
|
4
|
+
class PgBoolean extends columnType_1.default {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
this.getDbName = () => this.dbName;
|
|
8
|
+
this.insertStrategy = (value) => `${value}`;
|
|
9
|
+
this.dbName = 'boolean';
|
|
10
|
+
}
|
|
11
|
+
selectStrategy(value) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.default = PgBoolean;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import ColumnType from './columnType';
|
|
2
|
+
export default class PgEnum<TCodeType> extends ColumnType {
|
|
3
|
+
codeType: TCodeType;
|
|
4
|
+
dbName: string;
|
|
5
|
+
constructor(dbName: string);
|
|
6
|
+
getDbName: () => string;
|
|
7
|
+
insertStrategy: (value: TCodeType) => string;
|
|
8
|
+
selectStrategy(value: any): TCodeType;
|
|
9
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const columnType_1 = require("./columnType");
|
|
4
|
+
class PgEnum extends columnType_1.default {
|
|
5
|
+
constructor(dbName) {
|
|
6
|
+
super();
|
|
7
|
+
this.getDbName = () => this.dbName;
|
|
8
|
+
this.insertStrategy = (value) => `'${value}'`;
|
|
9
|
+
this.dbName = dbName;
|
|
10
|
+
}
|
|
11
|
+
selectStrategy(value) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.default = PgEnum;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const columnType_1 = require("./columnType");
|
|
4
|
+
class PgInteger extends columnType_1.default {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
this.getDbName = () => this.dbName;
|
|
8
|
+
this.insertStrategy = (value) => `${value}`;
|
|
9
|
+
this.dbName = 'INT';
|
|
10
|
+
}
|
|
11
|
+
selectStrategy(value) {
|
|
12
|
+
return parseInt(value, 10);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.default = PgInteger;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import ColumnType from './columnType';
|
|
2
|
+
export default class PgJsonb<TCodeType> extends ColumnType<TCodeType> {
|
|
3
|
+
codeType: TCodeType;
|
|
4
|
+
dbName: string;
|
|
5
|
+
constructor();
|
|
6
|
+
getDbName: () => string;
|
|
7
|
+
insertStrategy: (value: TCodeType) => string;
|
|
8
|
+
selectStrategy(value: any): TCodeType;
|
|
9
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const columnType_1 = require("./columnType");
|
|
4
|
+
class PgJsonb extends columnType_1.default {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
this.getDbName = () => this.dbName;
|
|
8
|
+
this.insertStrategy = (value) => `'${JSON.stringify(value).replace(/'/g, "''")}'::jsonb`;
|
|
9
|
+
this.dbName = 'JSONB';
|
|
10
|
+
}
|
|
11
|
+
selectStrategy(value) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.default = PgJsonb;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const columnType_1 = require("./columnType");
|
|
4
|
+
class PgText extends columnType_1.default {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
this.getDbName = () => this.dbName;
|
|
8
|
+
this.insertStrategy = (value) => `'${value.replace(/'/g, "''")}'`;
|
|
9
|
+
this.dbName = 'TEXT';
|
|
10
|
+
}
|
|
11
|
+
selectStrategy(value) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.default = PgText;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const columnType_1 = require("./columnType");
|
|
4
|
+
class PgTime extends columnType_1.default {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
this.getDbName = () => this.dbName;
|
|
8
|
+
this.insertStrategy = (value) => value.toISOString();
|
|
9
|
+
this.dbName = 'time without time zone';
|
|
10
|
+
}
|
|
11
|
+
selectStrategy(value) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.default = PgTime;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const columnType_1 = require("./columnType");
|
|
4
|
+
class PgTimestamp extends columnType_1.default {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
7
|
+
this.getDbName = () => this.dbName;
|
|
8
|
+
this.insertStrategy = (value) => `'${value.toISOString()}'`;
|
|
9
|
+
this.dbName = 'timestamp without time zone';
|
|
10
|
+
}
|
|
11
|
+
selectStrategy(value) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.default = PgTimestamp;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import ColumnType from './columnType';
|
|
2
|
+
export default class PgVarChar extends ColumnType<string> {
|
|
3
|
+
size?: number;
|
|
4
|
+
protected dbName: string;
|
|
5
|
+
constructor(size?: number);
|
|
6
|
+
getDbName: () => string;
|
|
7
|
+
insertStrategy: (value: string) => string;
|
|
8
|
+
selectStrategy(value: string): string;
|
|
9
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const columnType_1 = require("./columnType");
|
|
4
|
+
class PgVarChar extends columnType_1.default {
|
|
5
|
+
constructor(size) {
|
|
6
|
+
super();
|
|
7
|
+
this.getDbName = () => this.dbName;
|
|
8
|
+
this.insertStrategy = (value) => `'${value.replace(/'/g, "''")}'`;
|
|
9
|
+
this.size = size;
|
|
10
|
+
if (size) {
|
|
11
|
+
this.dbName = `character varying(${size})`;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
this.dbName = 'character varying';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
selectStrategy(value) {
|
|
18
|
+
return value;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.default = PgVarChar;
|
package/db/db.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Pool } from 'pg';
|
|
2
|
+
import BaseLogger from '../logger/abstractLogger';
|
|
3
|
+
import { AbstractTable } from '../tables';
|
|
4
|
+
import Session from './session';
|
|
5
|
+
export declare type TableConstructor = {
|
|
6
|
+
new (db: DB): AbstractTable<any>;
|
|
7
|
+
};
|
|
8
|
+
export default class DB {
|
|
9
|
+
private _session;
|
|
10
|
+
private _logger?;
|
|
11
|
+
private _cache;
|
|
12
|
+
constructor(pool: Pool);
|
|
13
|
+
create<TTable extends AbstractTable<TTable>>(t: new (db: DB) => TTable): TTable;
|
|
14
|
+
useLogger: (logger: BaseLogger) => void;
|
|
15
|
+
cache: () => Map<TableConstructor, AbstractTable<any>>;
|
|
16
|
+
logger: () => BaseLogger | undefined;
|
|
17
|
+
session: () => Session;
|
|
18
|
+
protected instanceFor<TTable extends AbstractTable<TTable>>(t: new (db: DB) => TTable): AbstractTable<any> | undefined;
|
|
19
|
+
}
|
package/db/db.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const session_1 = require("./session");
|
|
4
|
+
class DB {
|
|
5
|
+
constructor(pool) {
|
|
6
|
+
this._cache = new Map();
|
|
7
|
+
this.useLogger = (logger) => {
|
|
8
|
+
this._logger = logger;
|
|
9
|
+
};
|
|
10
|
+
this.cache = () => this._cache;
|
|
11
|
+
this.logger = () => this._logger;
|
|
12
|
+
this.session = () => this._session;
|
|
13
|
+
this._session = new session_1.default(pool);
|
|
14
|
+
}
|
|
15
|
+
create(t) {
|
|
16
|
+
if (!this._cache.has(t)) {
|
|
17
|
+
// eslint-disable-next-line new-cap
|
|
18
|
+
this._cache.set(t, new t(this));
|
|
19
|
+
}
|
|
20
|
+
return this._cache.get(t);
|
|
21
|
+
}
|
|
22
|
+
instanceFor(t) {
|
|
23
|
+
return this._cache.get(t);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.default = DB;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ClientConfig } from 'pg';
|
|
2
|
+
import DB from './db';
|
|
3
|
+
import DBStringConnector from './dbStringConnector';
|
|
4
|
+
export default class DbConnector {
|
|
5
|
+
private __config;
|
|
6
|
+
connectionString: (url: string) => DBStringConnector;
|
|
7
|
+
params: (config: ClientConfig) => DbConnector;
|
|
8
|
+
connect: () => Promise<DB>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const pg_1 = require("pg");
|
|
4
|
+
const db_1 = require("./db");
|
|
5
|
+
const dbStringConnector_1 = require("./dbStringConnector");
|
|
6
|
+
class DbConnector {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.connectionString = (url) => new dbStringConnector_1.default(url);
|
|
9
|
+
this.params = (config) => {
|
|
10
|
+
this.__config = config;
|
|
11
|
+
return this;
|
|
12
|
+
};
|
|
13
|
+
this.connect = async () => {
|
|
14
|
+
try {
|
|
15
|
+
const pool = new pg_1.Pool(this.__config);
|
|
16
|
+
await pool.connect();
|
|
17
|
+
// console.log('Db connected!');
|
|
18
|
+
// check if table structure is the same as in code
|
|
19
|
+
return new db_1.default(pool);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
// console.log(`Connection error: ${e.message}`);
|
|
23
|
+
throw new Error(`Connection error: ${e.message}`);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = DbConnector;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const pg_1 = require("pg");
|
|
4
|
+
const db_1 = require("./db");
|
|
5
|
+
class DBStringConnector {
|
|
6
|
+
constructor(url) {
|
|
7
|
+
this.connect = async () => {
|
|
8
|
+
const config = {
|
|
9
|
+
connectionString: this._url,
|
|
10
|
+
};
|
|
11
|
+
try {
|
|
12
|
+
const pool = new pg_1.Pool(config);
|
|
13
|
+
await pool.connect();
|
|
14
|
+
// console.log('Db connected!');
|
|
15
|
+
return new db_1.default(pool);
|
|
16
|
+
}
|
|
17
|
+
catch (e) {
|
|
18
|
+
// console.log(`Connection error: ${e.message}`);
|
|
19
|
+
throw new Error(`Connection error: ${e.message}`);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
this._url = url;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.default = DBStringConnector;
|
|
File without changes
|
package/db/group_by.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// const _groupBy = <T, K extends keyof any>(list: T[], getKey: (item: T) => K) => {
|
|
3
|
+
// list.reduce((previous, currentItem) => {
|
|
4
|
+
// const group = getKey(currentItem);
|
|
5
|
+
// // eslint-disable-next-line no-param-reassign
|
|
6
|
+
// if (!previous[group]) previous[group] = [];
|
|
7
|
+
// previous[group].push(currentItem);
|
|
8
|
+
// return previous;
|
|
9
|
+
// }, {} as Record<K, T[]>);
|
|
10
|
+
// };
|
|
11
|
+
// const groupBy = (xs, key) => xs.reduce((rv, x) => {
|
|
12
|
+
// (rv[x[key]] = rv[x[key]] || []).push(x);
|
|
13
|
+
// return rv;
|
|
14
|
+
// }, {});
|
|
15
|
+
// interface Mapp {
|
|
16
|
+
// [key: string]: any;
|
|
17
|
+
// }
|
|
18
|
+
// const groupBy1 = <K, V>(list: Array<K>, keyGetter: (input: V) => K): Map<K, Array<V>> => {
|
|
19
|
+
// const map = new Map<K, Array<V>>();
|
|
20
|
+
// list.forEach((item) => {
|
|
21
|
+
// const key = keyGetter(item as unknown as V);
|
|
22
|
+
// const collection = map.get(key);
|
|
23
|
+
// console.log(collection);
|
|
24
|
+
// console.log(map.has(key));
|
|
25
|
+
// if (!collection) {
|
|
26
|
+
// map.set(key, [item as unknown as V]);
|
|
27
|
+
// } else {
|
|
28
|
+
// collection.push(item as unknown as V);
|
|
29
|
+
// }
|
|
30
|
+
// });
|
|
31
|
+
// return map;
|
|
32
|
+
// };
|
|
33
|
+
// interface T1 {
|
|
34
|
+
// name: string,
|
|
35
|
+
// key: number
|
|
36
|
+
// }
|
|
37
|
+
// interface T2 {
|
|
38
|
+
// name: string,
|
|
39
|
+
// hello: number
|
|
40
|
+
// }
|
|
41
|
+
// interface Person {
|
|
42
|
+
// t1: T1,
|
|
43
|
+
// t2: T2
|
|
44
|
+
// }
|
|
45
|
+
// const person: Person[] = [
|
|
46
|
+
// {
|
|
47
|
+
// t1: {
|
|
48
|
+
// name: 'name',
|
|
49
|
+
// key: 2,
|
|
50
|
+
// },
|
|
51
|
+
// t2: {
|
|
52
|
+
// name: 'name',
|
|
53
|
+
// hello: 2,
|
|
54
|
+
// },
|
|
55
|
+
// },
|
|
56
|
+
// {
|
|
57
|
+
// t1: {
|
|
58
|
+
// name: 'name',
|
|
59
|
+
// key: 2,
|
|
60
|
+
// },
|
|
61
|
+
// t2: {
|
|
62
|
+
// name: 'name3',
|
|
63
|
+
// hello: 3,
|
|
64
|
+
// },
|
|
65
|
+
// },
|
|
66
|
+
// ];
|
|
67
|
+
// const d = groupBy1(person, (i: Person) => i.t1);
|
|
68
|
+
// console.log(d);
|
|
File without changes
|
package/db/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DBStringConnector = exports.DbConnector = exports.DB = void 0;
|
|
4
|
+
var db_1 = require("./db");
|
|
5
|
+
Object.defineProperty(exports, "DB", { enumerable: true, get: function () { return db_1.default; } });
|
|
6
|
+
var dbConnector_1 = require("./dbConnector");
|
|
7
|
+
Object.defineProperty(exports, "DbConnector", { enumerable: true, get: function () { return dbConnector_1.default; } });
|
|
8
|
+
var dbStringConnector_1 = require("./dbStringConnector");
|
|
9
|
+
Object.defineProperty(exports, "DBStringConnector", { enumerable: true, get: function () { return dbStringConnector_1.default; } });
|
package/db/session.d.ts
ADDED
package/db/session.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const baseError_1 = require("../errors/baseError");
|
|
4
|
+
class Session {
|
|
5
|
+
constructor(pool) {
|
|
6
|
+
this.pool = pool;
|
|
7
|
+
this.execute = async (query) => {
|
|
8
|
+
try {
|
|
9
|
+
return baseError_1.right(await this.pool.query(query));
|
|
10
|
+
}
|
|
11
|
+
catch (e) {
|
|
12
|
+
return baseError_1.left({
|
|
13
|
+
type: baseError_1.PgSessionError.PgQueryExecutionError,
|
|
14
|
+
reason: e,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.default = Session;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
4
|
+
const __1 = require("../..");
|
|
5
|
+
const builders_1 = require("../../builders");
|
|
6
|
+
const citiesTable_1 = require("../tables/citiesTable");
|
|
7
|
+
const userGroupsTable_1 = require("../tables/userGroupsTable");
|
|
8
|
+
const usersTable_1 = require("../tables/usersTable");
|
|
9
|
+
(async () => {
|
|
10
|
+
try {
|
|
11
|
+
const db = await new __1.DbConnector()
|
|
12
|
+
.connectionString('postgresql://postgres@127.0.0.1/drizzle')
|
|
13
|
+
.connect();
|
|
14
|
+
const usersTable = new usersTable_1.default(db);
|
|
15
|
+
const citiesTable = new citiesTable_1.default(db);
|
|
16
|
+
const userGroupsTable = new userGroupsTable_1.default(db);
|
|
17
|
+
await usersTable.delete()
|
|
18
|
+
.where(builders_1.eq(usersTable.id, 1))
|
|
19
|
+
.execute();
|
|
20
|
+
const deletedCities = await citiesTable.delete()
|
|
21
|
+
.where(builders_1.eq(citiesTable.id, 2))
|
|
22
|
+
.all();
|
|
23
|
+
const deletedUserGroup = await userGroupsTable.delete()
|
|
24
|
+
.where(builders_1.eq(userGroupsTable.id, 3))
|
|
25
|
+
.first();
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
console.log(e);
|
|
29
|
+
}
|
|
30
|
+
})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
4
|
+
const __1 = require("../..");
|
|
5
|
+
const citiesTable_1 = require("../tables/citiesTable");
|
|
6
|
+
const userGroupsTable_1 = require("../tables/userGroupsTable");
|
|
7
|
+
const usersTable_1 = require("../tables/usersTable");
|
|
8
|
+
(async () => {
|
|
9
|
+
try {
|
|
10
|
+
const db = await new __1.DbConnector()
|
|
11
|
+
.connectionString('postgresql://postgres@127.0.0.1/drizzle-docs')
|
|
12
|
+
.connect();
|
|
13
|
+
const usersTable = new usersTable_1.default(db);
|
|
14
|
+
const citiesTable = new citiesTable_1.default(db);
|
|
15
|
+
const userGroupsTable = new userGroupsTable_1.default(db);
|
|
16
|
+
await db.session().execute(__1.Create.table(usersTable).build());
|
|
17
|
+
await usersTable.insert({
|
|
18
|
+
decimalField: 12.4,
|
|
19
|
+
createdAt: new Date(),
|
|
20
|
+
role: 'guest',
|
|
21
|
+
}).execute();
|
|
22
|
+
const insertedCities = await citiesTable.insert({
|
|
23
|
+
foundationDate: new Date(),
|
|
24
|
+
}).all();
|
|
25
|
+
const insertedUserGroup = await userGroupsTable.insert({
|
|
26
|
+
name: 'firstGroup',
|
|
27
|
+
}).first();
|
|
28
|
+
const manyInsertedCities = await citiesTable.insertMany([{
|
|
29
|
+
foundationDate: new Date(),
|
|
30
|
+
location: 'USA',
|
|
31
|
+
}, {
|
|
32
|
+
foundationDate: new Date(),
|
|
33
|
+
location: 'USA',
|
|
34
|
+
userId: 2,
|
|
35
|
+
}]).all();
|
|
36
|
+
const conflictInsertedUsers = await usersTable.insertMany([{
|
|
37
|
+
decimalField: 12.4,
|
|
38
|
+
createdAt: new Date(),
|
|
39
|
+
role: 'guest',
|
|
40
|
+
}, {
|
|
41
|
+
decimalField: 32.4,
|
|
42
|
+
createdAt: new Date(),
|
|
43
|
+
role: 'admin',
|
|
44
|
+
phone: '+1808',
|
|
45
|
+
}])
|
|
46
|
+
.onConflict((table) => table.phoneIndex, { isArchived: true }).all();
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
console.log(e);
|
|
50
|
+
}
|
|
51
|
+
})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
4
|
+
const __1 = require("../..");
|
|
5
|
+
const builders_1 = require("../../builders");
|
|
6
|
+
const citiesTable_1 = require("../tables/citiesTable");
|
|
7
|
+
const userGroupsTable_1 = require("../tables/userGroupsTable");
|
|
8
|
+
const usersTable_1 = require("../tables/usersTable");
|
|
9
|
+
const usersToUserGroups_1 = require("../tables/usersToUserGroups");
|
|
10
|
+
(async () => {
|
|
11
|
+
var _a, _b, _c, _d, _e, _f;
|
|
12
|
+
try {
|
|
13
|
+
const db = await new __1.DbConnector()
|
|
14
|
+
.connectionString('postgresql://postgres@127.0.0.1/drizzle-docs')
|
|
15
|
+
.connect();
|
|
16
|
+
const usersTable = new usersTable_1.default(db);
|
|
17
|
+
const citiesTable = new citiesTable_1.default(db);
|
|
18
|
+
const usersToUserGroupsTable = new usersToUserGroups_1.default(db);
|
|
19
|
+
const userGroupsTable = new userGroupsTable_1.default(db);
|
|
20
|
+
await db.session().execute(__1.Create.table(usersTable).build());
|
|
21
|
+
await db.session().execute(__1.Create.table(citiesTable).build());
|
|
22
|
+
await db.session().execute(__1.Create.table(userGroupsTable).build());
|
|
23
|
+
await db.session().execute(__1.Create.table(usersToUserGroupsTable).build());
|
|
24
|
+
const userRes = await usersTable.insertMany([{
|
|
25
|
+
decimalField: 4.2,
|
|
26
|
+
createdAt: new Date(),
|
|
27
|
+
role: 'guest',
|
|
28
|
+
}, {
|
|
29
|
+
decimalField: 5.8,
|
|
30
|
+
createdAt: new Date(),
|
|
31
|
+
role: 'user',
|
|
32
|
+
}]).all();
|
|
33
|
+
const citiesRes = await citiesTable.insertMany([{
|
|
34
|
+
foundationDate: new Date(),
|
|
35
|
+
userId: (_a = userRes[0]) === null || _a === void 0 ? void 0 : _a.id,
|
|
36
|
+
}, {
|
|
37
|
+
foundationDate: new Date(),
|
|
38
|
+
userId: (_b = userRes[1]) === null || _b === void 0 ? void 0 : _b.id,
|
|
39
|
+
}]).all();
|
|
40
|
+
const userGroups = await userGroupsTable.insertMany([{
|
|
41
|
+
name: 'firstGroup',
|
|
42
|
+
}, {
|
|
43
|
+
name: 'secondGroup',
|
|
44
|
+
}]).all();
|
|
45
|
+
await usersToUserGroupsTable.insertMany([{
|
|
46
|
+
userId: (_c = userRes[0]) === null || _c === void 0 ? void 0 : _c.id,
|
|
47
|
+
groupId: (_d = userGroups[0]) === null || _d === void 0 ? void 0 : _d.id,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
userId: (_e = userRes[1]) === null || _e === void 0 ? void 0 : _e.id,
|
|
51
|
+
groupId: (_f = userGroups[1]) === null || _f === void 0 ? void 0 : _f.id,
|
|
52
|
+
}]).execute();
|
|
53
|
+
// map case
|
|
54
|
+
const userWithCities = await citiesTable.select()
|
|
55
|
+
.where(builders_1.eq(citiesTable.id, 1))
|
|
56
|
+
.leftJoin(usersTable_1.default, (city) => city.userId, (users) => users.id)
|
|
57
|
+
.execute();
|
|
58
|
+
const citiesWithUserObject = userWithCities.map((city, user) => ({ ...city, user }));
|
|
59
|
+
// foreach case
|
|
60
|
+
// const userWithCities1 = await citiesTable.select()
|
|
61
|
+
// .where(eq(citiesTable.id, 1))
|
|
62
|
+
// .leftJoin(UsersTable,
|
|
63
|
+
// (city) => city.userId,
|
|
64
|
+
// (users) => users.id)
|
|
65
|
+
// .execute();
|
|
66
|
+
// let user;
|
|
67
|
+
// const cities = [];
|
|
68
|
+
// userWithCities.foreach((dbCity, dbUser) => {
|
|
69
|
+
// cities.push(dbCity);
|
|
70
|
+
// user = dbUser;
|
|
71
|
+
// });
|
|
72
|
+
// group case
|
|
73
|
+
const usersWithUserGroups = await usersToUserGroupsTable.select()
|
|
74
|
+
.where(builders_1.eq(userGroupsTable.id, 1))
|
|
75
|
+
.leftJoin(usersTable_1.default, (userToGroup) => userToGroup.userId, (users) => users.id)
|
|
76
|
+
.leftJoin(userGroupsTable_1.default, (userToGroup) => userToGroup.groupId, (users) => users.id)
|
|
77
|
+
.execute();
|
|
78
|
+
const userGroupWithUsers = usersWithUserGroups.group({
|
|
79
|
+
one: (_, dbUser, dbUserGroup) => dbUser,
|
|
80
|
+
many: (_, dbUser, dbUserGroup) => dbUserGroup,
|
|
81
|
+
});
|
|
82
|
+
const userWithGroups = {
|
|
83
|
+
...userGroupWithUsers.one,
|
|
84
|
+
groups: userGroupWithUsers.many,
|
|
85
|
+
};
|
|
86
|
+
// console.log('city', city!);
|
|
87
|
+
// console.log('cityUsers', cityUsers);
|
|
88
|
+
// console.log('cityWithUsers', forEachCities);
|
|
89
|
+
// console.log('cityWithUsers1', forEachUsers);
|
|
90
|
+
// how to handle many-to-many relations
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
console.log(e);
|
|
94
|
+
}
|
|
95
|
+
})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|