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
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import Expr from './where';
|
|
2
|
-
|
|
3
|
-
export default class LessEq extends Expr {
|
|
4
|
-
private left: Expr;
|
|
5
|
-
private right: Expr;
|
|
6
|
-
|
|
7
|
-
public constructor({ left, right }: { left: Expr; right: Expr; }) {
|
|
8
|
-
super();
|
|
9
|
-
this.left = left;
|
|
10
|
-
this.right = right;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public toQuery = (): string => `${this.left.toQuery()} <= ${this.right.toQuery()}`;
|
|
14
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import Expr from './where';
|
|
2
|
-
|
|
3
|
-
export default class Like extends Expr {
|
|
4
|
-
private left: Expr;
|
|
5
|
-
private right: Expr;
|
|
6
|
-
|
|
7
|
-
public constructor(left: Expr, right: Expr) {
|
|
8
|
-
super();
|
|
9
|
-
this.left = left;
|
|
10
|
-
this.right = right;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public toQuery = (): string => `${this.left.toQuery()} like ${this.right.toQuery()}`;
|
|
14
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import Expr from './where';
|
|
2
|
-
|
|
3
|
-
export default class Or extends Expr {
|
|
4
|
-
private expressions: Expr[];
|
|
5
|
-
|
|
6
|
-
public constructor(expressions: Expr[]) {
|
|
7
|
-
super();
|
|
8
|
-
this.expressions = expressions;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
public toQuery = (): string => {
|
|
12
|
-
const result: string[] = ['('];
|
|
13
|
-
for (let i = 0; i < this.expressions.length; i += 1) {
|
|
14
|
-
const expression = this.expressions[i];
|
|
15
|
-
|
|
16
|
-
result.push(expression.toQuery());
|
|
17
|
-
|
|
18
|
-
if (i < this.expressions.length - 1) {
|
|
19
|
-
result.push(' or ');
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
result.push(')');
|
|
23
|
-
|
|
24
|
-
return result.join('');
|
|
25
|
-
};
|
|
26
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Column } from '../../../columns/column';
|
|
2
|
-
import ColumnType from '../../../columns/types/columnType';
|
|
3
|
-
import { ExtractCodeType } from '../../../tables/inferTypes';
|
|
4
|
-
import And from './and';
|
|
5
|
-
import Const from './const';
|
|
6
|
-
import ConstArray from './constArray';
|
|
7
|
-
import EqWhere from './eqWhere';
|
|
8
|
-
import Greater from './greater';
|
|
9
|
-
import GreaterEq from './greaterEq';
|
|
10
|
-
import Less from './less';
|
|
11
|
-
import LessEq from './lessEq';
|
|
12
|
-
import Or from './or';
|
|
13
|
-
import Var from './var';
|
|
14
|
-
import Expr from './where';
|
|
15
|
-
|
|
16
|
-
export const eq = <T extends Column<ColumnType<any>, boolean, boolean>>(left: T,
|
|
17
|
-
value: ExtractCodeType<T>): Expr => new EqWhere(new Var<T>(left), new Const(value));
|
|
18
|
-
|
|
19
|
-
export const and = (expressions: Expr[]): Expr => new And(expressions);
|
|
20
|
-
|
|
21
|
-
export const or = (expressions: Expr[]): Expr => new Or(expressions);
|
|
22
|
-
|
|
23
|
-
export const like = <T extends Column<ColumnType<any>, boolean, boolean>>(left: T,
|
|
24
|
-
value: ExtractCodeType<T>): Expr => new EqWhere(new Var<T>(left), new Const(value));
|
|
25
|
-
|
|
26
|
-
export const inArray = <T extends Column<ColumnType<any>, boolean, boolean>>(left: T,
|
|
27
|
-
value: ExtractCodeType<T>[]): Expr => new EqWhere(new Var<T>(left), new ConstArray(value));
|
|
28
|
-
|
|
29
|
-
export const greater = <T extends Column<ColumnType<any>, boolean, boolean>>(left: T,
|
|
30
|
-
value: ExtractCodeType<T>)
|
|
31
|
-
: Expr => new Greater({ left: new Var<T>(left), right: new Const(value) });
|
|
32
|
-
|
|
33
|
-
export const less = <T extends Column<ColumnType<any>, boolean, boolean>>(left: T,
|
|
34
|
-
value: ExtractCodeType<T>): Expr => new Less({ left: new Var<T>(left), right: new Const(value) });
|
|
35
|
-
|
|
36
|
-
export const greaterEq = <T extends Column<ColumnType<any>, boolean, boolean>>(left: T,
|
|
37
|
-
value: ExtractCodeType<T>)
|
|
38
|
-
: Expr => new GreaterEq({ left: new Var<T>(left), right: new Const(value) });
|
|
39
|
-
|
|
40
|
-
export const lessEq = <T extends Column<ColumnType<any>, boolean, boolean>>(left: T,
|
|
41
|
-
value: ExtractCodeType<T>)
|
|
42
|
-
: Expr => new LessEq({ left: new Var<T>(left), right: new Const(value) });
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Column } from '../../../columns/column';
|
|
2
|
-
import ColumnType from '../../../columns/types/columnType';
|
|
3
|
-
import { ecranate } from '../../../utils/ecranate';
|
|
4
|
-
import Expr from './where';
|
|
5
|
-
|
|
6
|
-
export default class Var<T extends Column<ColumnType<any>, boolean, boolean>> extends Expr {
|
|
7
|
-
private column: T;
|
|
8
|
-
|
|
9
|
-
public constructor(column: T) {
|
|
10
|
-
super();
|
|
11
|
-
this.column = column;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
public toQuery = (): string => `${this.column.getParent()}.${ecranate(this.column.columnName)}`;
|
|
15
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import Session from '../../db/session';
|
|
2
|
-
|
|
3
|
-
export default class Transaction {
|
|
4
|
-
public constructor(private session: Session) {
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
public begin = async (): Promise<Transaction> => {
|
|
8
|
-
await this.session.execute('BEGIN;');
|
|
9
|
-
return this;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
public commit = async (): Promise<Transaction> => {
|
|
13
|
-
await this.session.execute('COMMIT;');
|
|
14
|
-
return this;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
public rollback = async (): Promise<Transaction> => {
|
|
18
|
-
await this.session.execute('ROLLBACK;');
|
|
19
|
-
return this;
|
|
20
|
-
};
|
|
21
|
-
}
|
package/src/columns/column.ts
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-classes-per-file */
|
|
2
|
-
import { IDB, StubDB } from '../db/db';
|
|
3
|
-
import { AbstractTable } from '../tables';
|
|
4
|
-
import ColumnType from './types/columnType';
|
|
5
|
-
|
|
6
|
-
type ExtractColumnType<T extends ColumnType> =
|
|
7
|
-
T extends ColumnType<infer TCodeType> ?
|
|
8
|
-
TCodeType
|
|
9
|
-
: never;
|
|
10
|
-
|
|
11
|
-
export class Column<T extends ColumnType, TNullable extends boolean = true,
|
|
12
|
-
TAutoIncrement extends boolean = false> {
|
|
13
|
-
public columnType: T;
|
|
14
|
-
public columnName: string;
|
|
15
|
-
public isNullableFlag: TNullable;
|
|
16
|
-
public autoIncrementType: TAutoIncrement;
|
|
17
|
-
public autoIncrementFlag: boolean = false;
|
|
18
|
-
public primaryKeyName: string | undefined = undefined;
|
|
19
|
-
public uniqueKeyName: string | undefined = undefined;
|
|
20
|
-
public defaultParam: any = null;
|
|
21
|
-
public referenced: Column<T, boolean, boolean>;
|
|
22
|
-
|
|
23
|
-
private parentTableName: string;
|
|
24
|
-
|
|
25
|
-
public constructor(parentTableName: string, columnName: string,
|
|
26
|
-
columnType: T, nullable: TNullable) {
|
|
27
|
-
this.columnType = columnType;
|
|
28
|
-
this.columnName = columnName;
|
|
29
|
-
this.parentTableName = parentTableName;
|
|
30
|
-
this.isNullableFlag = nullable;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
public getAlias = (): string => `${this.parentTableName.replace('.', '_')}_${this.columnName}`;
|
|
34
|
-
|
|
35
|
-
public getParent = (): string => this.parentTableName;
|
|
36
|
-
|
|
37
|
-
public foreignKey = <ITable extends AbstractTable<ITable>>(table: { new(db: IDB): ITable ;},
|
|
38
|
-
callback: (table: ITable) => Column<T, boolean, boolean>)
|
|
39
|
-
: Column<T, TNullable, TAutoIncrement> => {
|
|
40
|
-
// eslint-disable-next-line new-cap
|
|
41
|
-
this.referenced = callback(new table(new StubDB()));
|
|
42
|
-
return this;
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
public defaultValue = (value: ExtractColumnType<T>) => {
|
|
46
|
-
this.defaultParam = value;
|
|
47
|
-
return this;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
public autoIncrement() {
|
|
51
|
-
this.autoIncrementFlag = true;
|
|
52
|
-
return this as unknown as Column<T, true, true>;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
public primaryKey() {
|
|
56
|
-
this.primaryKeyName = `${this.parentTableName}_${this.columnName}`;
|
|
57
|
-
return this as unknown as
|
|
58
|
-
IndexedColumn<T, TAutoIncrement extends true ? true : false, TAutoIncrement>;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
public serial() {
|
|
62
|
-
this.autoIncrementFlag = true;
|
|
63
|
-
return this as unknown as Column<T, false, true>;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
public unique = () => {
|
|
67
|
-
this.uniqueKeyName = this.columnName;
|
|
68
|
-
return this;
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
public isAutoIncrement = (): boolean => this.autoIncrementFlag;
|
|
72
|
-
|
|
73
|
-
public getColumnName = (): string => this.columnName;
|
|
74
|
-
|
|
75
|
-
public getReferenced = (): Column<T, boolean, boolean> => this.referenced;
|
|
76
|
-
|
|
77
|
-
public getColumnType = (): T => this.columnType;
|
|
78
|
-
|
|
79
|
-
public getDefaultValue = (): any => this.defaultParam;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export class IndexedColumn<T extends ColumnType, TNullable extends boolean = true,
|
|
83
|
-
TAutoIncrement extends boolean = false>
|
|
84
|
-
extends Column<T, TNullable, TAutoIncrement> {
|
|
85
|
-
|
|
86
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import ColumnType from './columnType';
|
|
2
|
-
|
|
3
|
-
export default class PgBigDecimal extends ColumnType<number> {
|
|
4
|
-
public precision?: number;
|
|
5
|
-
public scale?: number;
|
|
6
|
-
public dbName: string;
|
|
7
|
-
|
|
8
|
-
public constructor(precision?: number, scale?: number) {
|
|
9
|
-
super();
|
|
10
|
-
this.precision = precision;
|
|
11
|
-
this.scale = scale;
|
|
12
|
-
if (this.scale && !this.precision) {
|
|
13
|
-
throw new Error('In numeric scale should be set up together with precision');
|
|
14
|
-
}
|
|
15
|
-
if (this.precision && !this.scale) {
|
|
16
|
-
this.dbName = `numeric(${this.precision})`;
|
|
17
|
-
} else if (this.precision && this.scale) {
|
|
18
|
-
this.dbName = `numeric(${this.precision},${this.scale})`;
|
|
19
|
-
} else { this.dbName = 'numeric'; }
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public getDbName = (): string => this.dbName;
|
|
23
|
-
|
|
24
|
-
public insertStrategy = (value: number): string => `${value}`;
|
|
25
|
-
|
|
26
|
-
public selectStrategy(value: string): number {
|
|
27
|
-
return parseFloat(value);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import ColumnType from './columnType';
|
|
2
|
-
|
|
3
|
-
export default class PgBigInt extends ColumnType<number> {
|
|
4
|
-
public dbName: string;
|
|
5
|
-
|
|
6
|
-
public constructor() {
|
|
7
|
-
super();
|
|
8
|
-
this.dbName = 'BIGINT';
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
public getDbName(): string {
|
|
12
|
-
return this.dbName;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
public insertStrategy = (value: number): string => `${value}`;
|
|
16
|
-
|
|
17
|
-
public selectStrategy(value: string): number {
|
|
18
|
-
return parseInt(value, 10);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import ColumnType from './columnType';
|
|
2
|
-
|
|
3
|
-
export default class PgBoolean extends ColumnType<boolean> {
|
|
4
|
-
public dbName: string;
|
|
5
|
-
|
|
6
|
-
public constructor() {
|
|
7
|
-
super();
|
|
8
|
-
this.dbName = 'boolean';
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
public getDbName = (): string => this.dbName;
|
|
12
|
-
|
|
13
|
-
public insertStrategy = (value: boolean): string => `${value}`;
|
|
14
|
-
|
|
15
|
-
public selectStrategy(value: boolean): boolean {
|
|
16
|
-
return value;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import ColumnType from './columnType';
|
|
2
|
-
|
|
3
|
-
export default class PgEnum<TCodeType extends { [s: number]: string }>
|
|
4
|
-
extends ColumnType<TCodeType> {
|
|
5
|
-
public codeType: TCodeType;
|
|
6
|
-
public dbName: string;
|
|
7
|
-
public name: string;
|
|
8
|
-
|
|
9
|
-
public constructor(name: string, dbName:string, codeType: TCodeType) {
|
|
10
|
-
super();
|
|
11
|
-
this.dbName = dbName;
|
|
12
|
-
this.name = name;
|
|
13
|
-
this.codeType = codeType;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
public getDbName = (): string => this.dbName;
|
|
17
|
-
|
|
18
|
-
public insertStrategy = (value: TCodeType): string => `'${value}'`;
|
|
19
|
-
public selectStrategy(value: any): TCodeType {
|
|
20
|
-
return value;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import ColumnType from './columnType';
|
|
2
|
-
|
|
3
|
-
export default class PgInteger extends ColumnType<number> {
|
|
4
|
-
public dbName: string;
|
|
5
|
-
|
|
6
|
-
public constructor() {
|
|
7
|
-
super();
|
|
8
|
-
this.dbName = 'INT';
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
public getDbName = (): string => this.dbName;
|
|
12
|
-
|
|
13
|
-
public insertStrategy = (value: number): string => `${value}`;
|
|
14
|
-
|
|
15
|
-
public selectStrategy(value: string): number {
|
|
16
|
-
return parseInt(value, 10);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import ColumnType from './columnType';
|
|
2
|
-
|
|
3
|
-
export default class PgJsonb<TCodeType> extends ColumnType<TCodeType> {
|
|
4
|
-
public codeType: TCodeType;
|
|
5
|
-
public dbName: string;
|
|
6
|
-
|
|
7
|
-
public constructor() {
|
|
8
|
-
super();
|
|
9
|
-
this.dbName = 'JSONB';
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
public getDbName = (): string => this.dbName;
|
|
13
|
-
|
|
14
|
-
public insertStrategy = (value: TCodeType): string => `'${JSON.stringify(value)}'::jsonb`;
|
|
15
|
-
|
|
16
|
-
public selectStrategy(value: any): TCodeType {
|
|
17
|
-
return value;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import ColumnType from './columnType';
|
|
2
|
-
|
|
3
|
-
export default class PgText extends ColumnType<string> {
|
|
4
|
-
protected dbName: string;
|
|
5
|
-
|
|
6
|
-
public constructor() {
|
|
7
|
-
super();
|
|
8
|
-
this.dbName = 'TEXT';
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
public getDbName = (): string => this.dbName;
|
|
12
|
-
|
|
13
|
-
public insertStrategy = (value: string): string => `'${value.replace("'", "''")}'`;
|
|
14
|
-
|
|
15
|
-
public selectStrategy(value: string): string {
|
|
16
|
-
return value;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import ColumnType from './columnType';
|
|
2
|
-
|
|
3
|
-
export default class PgTime extends ColumnType<Date> {
|
|
4
|
-
public dbName: string;
|
|
5
|
-
|
|
6
|
-
public constructor() {
|
|
7
|
-
super();
|
|
8
|
-
this.dbName = 'time without time zone';
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
public getDbName = (): string => this.dbName;
|
|
12
|
-
|
|
13
|
-
public insertStrategy = (value: Date): string => value.toISOString();
|
|
14
|
-
|
|
15
|
-
public selectStrategy(value: any): Date {
|
|
16
|
-
return value;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import ColumnType from './columnType';
|
|
2
|
-
|
|
3
|
-
export default class PgTimestamp extends ColumnType<Date> {
|
|
4
|
-
public dbName: string;
|
|
5
|
-
|
|
6
|
-
public constructor() {
|
|
7
|
-
super();
|
|
8
|
-
this.dbName = 'timestamp without time zone';
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
public getDbName = (): string => this.dbName;
|
|
12
|
-
|
|
13
|
-
public insertStrategy = (value: Date): string => `'${value.toISOString()}'`;
|
|
14
|
-
|
|
15
|
-
public selectStrategy(value: any): Date {
|
|
16
|
-
return value;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import ColumnType from './columnType';
|
|
2
|
-
|
|
3
|
-
export default class PgVarChar extends ColumnType<string> {
|
|
4
|
-
public size?: number;
|
|
5
|
-
protected dbName: string;
|
|
6
|
-
|
|
7
|
-
public constructor(size?: number) {
|
|
8
|
-
super();
|
|
9
|
-
this.size = size;
|
|
10
|
-
if (size) {
|
|
11
|
-
this.dbName = `character varying(${size})`;
|
|
12
|
-
} else {
|
|
13
|
-
this.dbName = 'character varying';
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
public getDbName = (): string => this.dbName;
|
|
18
|
-
|
|
19
|
-
public insertStrategy = (value: string): string => `'${value.replace("'", "''")}'`;
|
|
20
|
-
|
|
21
|
-
public selectStrategy(value: string): string {
|
|
22
|
-
return value;
|
|
23
|
-
}
|
|
24
|
-
}
|
package/src/db/db.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-classes-per-file */
|
|
2
|
-
import { Pool } from 'pg';
|
|
3
|
-
import BaseLogger from '../logger/abstractLogger';
|
|
4
|
-
import Session from './session';
|
|
5
|
-
|
|
6
|
-
export interface IDB {
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export class StubDB implements IDB {
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export default class DB implements IDB {
|
|
15
|
-
private _session: Session;
|
|
16
|
-
private _logger: BaseLogger;
|
|
17
|
-
|
|
18
|
-
public constructor(pool: Pool) {
|
|
19
|
-
this._session = new Session(pool);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public useLogger = (logger: BaseLogger): void => {
|
|
23
|
-
this._logger = logger;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
public logger = (): BaseLogger => this._logger;
|
|
27
|
-
|
|
28
|
-
public session = (): Session => this._session;
|
|
29
|
-
}
|
package/src/db/dbConnector.ts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ClientConfig, Pool } from 'pg';
|
|
2
|
-
import DB from './db';
|
|
3
|
-
import DBStringConnector from './dbStringConnector';
|
|
4
|
-
|
|
5
|
-
export default class DbConnector {
|
|
6
|
-
private __config: ClientConfig;
|
|
7
|
-
|
|
8
|
-
public connectionString = (url: string): DBStringConnector => new DBStringConnector(url);
|
|
9
|
-
|
|
10
|
-
public params = (config: ClientConfig): DbConnector => {
|
|
11
|
-
this.__config = config;
|
|
12
|
-
return this;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
public connect = async (): Promise<DB> => {
|
|
16
|
-
try {
|
|
17
|
-
const pool = new Pool(this.__config);
|
|
18
|
-
|
|
19
|
-
await pool.connect();
|
|
20
|
-
console.log('Db connected!');
|
|
21
|
-
|
|
22
|
-
// check if table structure is the same as in code
|
|
23
|
-
|
|
24
|
-
return new DB(pool);
|
|
25
|
-
} catch (e) {
|
|
26
|
-
console.log(`Connection error: ${e.message}`);
|
|
27
|
-
throw new Error(`Connection error: ${e.message}`);
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { ClientConfig, Pool } from 'pg';
|
|
2
|
-
import Db from './db';
|
|
3
|
-
|
|
4
|
-
export default class DBStringConnector {
|
|
5
|
-
private _url: string;
|
|
6
|
-
|
|
7
|
-
public constructor(url: string) {
|
|
8
|
-
this._url = url;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
public connect = async (): Promise<Db> => {
|
|
12
|
-
const config = {
|
|
13
|
-
connectionString: this._url,
|
|
14
|
-
} as ClientConfig;
|
|
15
|
-
|
|
16
|
-
try {
|
|
17
|
-
const pool = new Pool(config);
|
|
18
|
-
|
|
19
|
-
await pool.connect();
|
|
20
|
-
console.log('Db connected!');
|
|
21
|
-
|
|
22
|
-
return new Db(pool);
|
|
23
|
-
} catch (e) {
|
|
24
|
-
console.log(`Connection error: ${e.message}`);
|
|
25
|
-
throw new Error(`Connection error: ${e.message}`);
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
}
|
package/src/db/session.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Pool, QueryResult } from 'pg';
|
|
2
|
-
import {
|
|
3
|
-
Either, Failure, left, PgSessionError, right,
|
|
4
|
-
} from '../errors/baseError';
|
|
5
|
-
|
|
6
|
-
export default class Session {
|
|
7
|
-
public constructor(private pool: Pool) {
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
public execute = async (query: string)
|
|
11
|
-
: Promise<Either<Failure, QueryResult<any>>> => {
|
|
12
|
-
try {
|
|
13
|
-
return right(await this.pool.query(query));
|
|
14
|
-
} catch (e) {
|
|
15
|
-
return left({
|
|
16
|
-
type: PgSessionError.PgQueryExecutionError,
|
|
17
|
-
reason: e,
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
}
|
package/src/errors/baseError.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-classes-per-file */
|
|
2
|
-
export interface Failure {
|
|
3
|
-
type: PgSessionError;
|
|
4
|
-
reason: Error;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export enum PgSessionError {
|
|
8
|
-
PgQueryExecutionError,
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export type Either<L, A> = Left<L, A> | Right<L, A>;
|
|
12
|
-
|
|
13
|
-
export class Left<L, A> {
|
|
14
|
-
public readonly value: L;
|
|
15
|
-
|
|
16
|
-
public constructor(value: L) {
|
|
17
|
-
this.value = value;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
public isLeft(): this is Left<L, A> {
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
public isRight(): this is Right<L, A> {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export class Right<L, A> {
|
|
30
|
-
public readonly value: A;
|
|
31
|
-
|
|
32
|
-
public constructor(value: A) {
|
|
33
|
-
this.value = value;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public isLeft(): this is Left<L, A> {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
public isRight(): this is Right<L, A> {
|
|
41
|
-
return true;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export const left = <L, A>(l: L): Either<L, A> => new Left(l);
|
|
46
|
-
|
|
47
|
-
export const right = <L, A>(a: A): Either<L, A> => new Right<L, A>(a);
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import Expr from '../builders/requestBuilders/where/where';
|
|
2
|
-
import { Column } from '../columns/column';
|
|
3
|
-
import ColumnType from '../columns/types/columnType';
|
|
4
|
-
|
|
5
|
-
export enum BuilderType{
|
|
6
|
-
SELECT,
|
|
7
|
-
JOINED_SELECT,
|
|
8
|
-
TWO_JOINED_SELECT,
|
|
9
|
-
DELETE,
|
|
10
|
-
INSERT,
|
|
11
|
-
UPDATE,
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export default class BuilderError extends Error {
|
|
15
|
-
public constructor(
|
|
16
|
-
builderType: BuilderType,
|
|
17
|
-
tableName: string,
|
|
18
|
-
columns: Column<ColumnType>[],
|
|
19
|
-
reason: Error,
|
|
20
|
-
filter?: Expr,
|
|
21
|
-
) {
|
|
22
|
-
super('');
|
|
23
|
-
this.message = ` Error while building select query from ${tableName}\n-----\nIf you see current error, please create [github issue](https://github.com/lambda-direct/drizzle-orm/issues) and provide following information\n
|
|
24
|
-
Reason: ${reason.message}
|
|
25
|
-
Query builder: ${BuilderType[builderType]}
|
|
26
|
-
Table name: ${tableName}
|
|
27
|
-
Filter query: ${filter ? filter.toQuery() : 'undefined'}
|
|
28
|
-
Column names: ${columns.map((column) => column.getColumnName()).join(', ')}\n-----\n`;
|
|
29
|
-
}
|
|
30
|
-
}
|
package/src/errors/dbErrors.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-classes-per-file */
|
|
2
|
-
export class DatabaseSelectError extends Error {
|
|
3
|
-
public constructor(tableName: string, reason: Error, query: string) {
|
|
4
|
-
super(` Got an error, while selecting from ${tableName}. Reason: ${reason.message}. Query to database looks like:\n${query}\n`);
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export class DatabaseDeleteError extends Error {
|
|
9
|
-
public constructor(tableName: string, reason: Error, query: string) {
|
|
10
|
-
super(` Got an error, while deleting from ${tableName}. Reason: ${reason.message}. Query to database looks like:\n${query}\n`);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export class DatabaseInsertError extends Error {
|
|
15
|
-
public constructor(tableName: string, reason: Error, query: string) {
|
|
16
|
-
super(` Got an error, while inserting to ${tableName}. Reason: ${reason.message}. Query to database looks like:\n${query}\n`);
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export class DatabaseUpdateError extends Error {
|
|
21
|
-
public constructor(tableName: string, reason: Error, query: string) {
|
|
22
|
-
super(` Got an error, while updating ${tableName}. Reason: ${reason.message}. Query to database looks like:\n${query}\n`);
|
|
23
|
-
}
|
|
24
|
-
}
|