drizzle-orm 0.9.1 → 0.9.2
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 +3 -4
- package/builders/aggregators/abstractAggregator.js +5 -8
- package/builders/aggregators/deleteAggregator.d.ts +2 -1
- package/builders/aggregators/deleteAggregator.js +10 -4
- package/builders/aggregators/insertAggregator.d.ts +4 -6
- package/builders/aggregators/insertAggregator.js +37 -44
- package/builders/aggregators/selectAggregator.d.ts +8 -5
- package/builders/aggregators/selectAggregator.js +50 -31
- package/builders/aggregators/updateAggregator.d.ts +2 -1
- package/builders/aggregators/updateAggregator.js +6 -4
- package/builders/highLvlBuilders/abstractRequestBuilder.d.ts +4 -3
- package/builders/highLvlBuilders/abstractRequestBuilder.js +2 -2
- package/builders/highLvlBuilders/deleteRequestBuilder.d.ts +5 -4
- package/builders/highLvlBuilders/deleteRequestBuilder.js +8 -9
- package/builders/highLvlBuilders/insertRequestBuilder.d.ts +2 -4
- package/builders/highLvlBuilders/insertRequestBuilder.js +17 -24
- package/builders/highLvlBuilders/selectRequestBuilder.d.ts +5 -4
- package/builders/highLvlBuilders/selectRequestBuilder.js +29 -32
- package/builders/highLvlBuilders/updateRequestBuilder.d.ts +5 -4
- package/builders/highLvlBuilders/updateRequestBuilder.js +9 -9
- package/builders/index.d.ts +1 -1
- package/builders/index.js +2 -1
- package/builders/joinBuilders/builders/abstractJoinBuilder.d.ts +18 -9
- package/builders/joinBuilders/builders/abstractJoinBuilder.js +34 -4
- package/builders/joinBuilders/builders/selectWithFiveJoins.d.ts +23 -0
- package/builders/joinBuilders/builders/selectWithFiveJoins.js +33 -0
- package/builders/joinBuilders/builders/selectWithFourJoins.d.ts +23 -6
- package/builders/joinBuilders/builders/selectWithFourJoins.js +52 -36
- package/builders/joinBuilders/builders/selectWithJoin.d.ts +9 -6
- package/builders/joinBuilders/builders/selectWithJoin.js +15 -35
- package/builders/joinBuilders/builders/selectWithThreeJoins.d.ts +9 -6
- package/builders/joinBuilders/builders/selectWithThreeJoins.js +19 -39
- package/builders/joinBuilders/builders/selectWithTwoJoins.d.ts +9 -6
- package/builders/joinBuilders/builders/selectWithTwoJoins.js +17 -38
- package/builders/joinBuilders/responses/selectResponseFiveJoins.d.ts +19 -0
- package/builders/joinBuilders/responses/selectResponseFiveJoins.js +35 -0
- package/builders/joinBuilders/responses/selectResponseFourJoins.d.ts +8 -0
- package/builders/joinBuilders/responses/selectResponseFourJoins.js +15 -4
- package/builders/joinBuilders/responses/selectResponseThreeJoins.d.ts +8 -0
- package/builders/joinBuilders/responses/selectResponseThreeJoins.js +15 -0
- package/builders/joinBuilders/responses/selectResponseTwoJoins.d.ts +8 -0
- package/builders/joinBuilders/responses/selectResponseTwoJoins.js +15 -0
- package/builders/joinBuilders/responses/selectResponseWithJoin.d.ts +8 -0
- package/builders/joinBuilders/responses/selectResponseWithJoin.js +15 -0
- package/builders/lowLvlBuilders/create.js +1 -1
- package/builders/lowLvlBuilders/delets/delete.d.ts +2 -1
- package/builders/lowLvlBuilders/delets/delete.js +3 -3
- package/builders/lowLvlBuilders/inserts/insert.d.ts +2 -3
- package/builders/lowLvlBuilders/inserts/insert.js +3 -3
- package/builders/lowLvlBuilders/inserts/insertInto.d.ts +2 -4
- package/builders/lowLvlBuilders/inserts/insertInto.js +2 -1
- package/builders/lowLvlBuilders/inserts/valuesInsert.d.ts +3 -5
- package/builders/lowLvlBuilders/inserts/valuesInsert.js +3 -3
- package/builders/lowLvlBuilders/selects/select.d.ts +2 -3
- package/builders/lowLvlBuilders/selects/select.js +3 -3
- package/builders/lowLvlBuilders/selects/selectFrom.d.ts +5 -4
- package/builders/lowLvlBuilders/selects/selectFrom.js +6 -0
- package/builders/lowLvlBuilders/selects/selectJoined.d.ts +5 -5
- package/builders/lowLvlBuilders/selects/whereSelect.d.ts +4 -4
- package/builders/lowLvlBuilders/updates/update.d.ts +2 -1
- package/builders/lowLvlBuilders/updates/update.js +3 -3
- package/builders/lowLvlBuilders/updates/updateIn.d.ts +1 -3
- package/builders/lowLvlBuilders/updates/updateIn.js +1 -4
- package/builders/requestBuilders/where/const.js +1 -1
- package/builders/requestBuilders/where/constArray.js +1 -1
- package/builders/requestBuilders/where/isNull.d.ts +6 -0
- package/builders/requestBuilders/where/isNull.js +11 -0
- package/builders/requestBuilders/where/notEqWhere.d.ts +7 -0
- package/builders/requestBuilders/where/notEqWhere.js +12 -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 +3 -0
- package/builders/requestBuilders/where/static.js +10 -1
- package/builders/requestBuilders/where/var.js +1 -1
- package/db/session.js +2 -2
- package/{manual.d.ts → docs/cases/simple_delete.d.ts} +0 -0
- package/docs/cases/simple_delete.js +30 -0
- package/{tests/cases/commentsTable.test.d.ts → docs/cases/simple_insert.d.ts} +0 -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/{examples/tables/authOtpTable.js → docs/tables/citiesTable.js} +6 -9
- 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/{examples → docs}/tables/usersTable.d.ts +7 -4
- package/{examples → docs}/tables/usersTable.js +11 -6
- package/docs/tables/usersToUserGroups.d.ts +7 -0
- package/docs/tables/usersToUserGroups.js +18 -0
- package/{examples → docs}/types/rolesType.d.ts +0 -0
- package/{examples → docs}/types/rolesType.js +1 -1
- package/indexes/tableIndex.d.ts +3 -1
- package/indexes/tableIndex.js +3 -1
- package/package.json +1 -1
- package/serializer/serializer.d.ts +39 -0
- package/serializer/serializer.js +73 -0
- package/tables/abstractTable.d.ts +4 -2
- package/tables/abstractTable.js +10 -10
- package/test.d.ts +1 -0
- package/test.js +38 -25
- package/examples/tables/authOtpTable.d.ts +0 -12
- package/examples/tables/cityTable.d.ts +0 -8
- package/examples/tables/cityTable.js +0 -17
- package/examples/testEnum.d.ts +0 -6
- package/examples/testEnum.js +0 -10
- package/manual.js +0 -27
- package/tests/cases/commentsTable.test.js +0 -66
- package/tests/cases/messagesTable.test1.d.ts +0 -0
- package/tests/cases/messagesTable.test1.js +0 -1
- package/tests/cases/postsTable.test1.d.ts +0 -0
- package/tests/cases/postsTable.test1.js +0 -1
- package/tests/cases/usersTable.test1.d.ts +0 -0
- package/tests/cases/usersTable.test1.js +0 -1
- package/tests/tables/citiesTable.d.ts +0 -6
- package/tests/tables/citiesTable.js +0 -14
- package/tests/tables/commentsTable.d.ts +0 -0
- package/tests/tables/commentsTable.js +0 -1
- package/tests/tables/likesTable.d.ts +0 -0
- package/tests/tables/likesTable.js +0 -1
- package/tests/tables/messagesTable.d.ts +0 -0
- package/tests/tables/messagesTable.js +0 -1
- package/tests/tables/postsTable.d.ts +0 -0
- package/tests/tables/postsTable.js +0 -1
- package/tests/tables/userFollowers.d.ts +0 -0
- package/tests/tables/userFollowers.js +0 -1
- package/tests/tables/usersTable.d.ts +0 -8
- package/tests/tables/usersTable.js +0 -20
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { Column } from '../../../columns/column';
|
|
2
|
-
import ColumnType from '../../../columns/types/columnType';
|
|
3
1
|
import InsertAggregator from '../../aggregators/insertAggregator';
|
|
4
2
|
import ValuesInsert from './valuesInsert';
|
|
5
3
|
export default class InsertInto {
|
|
6
4
|
private _aggregator;
|
|
7
5
|
constructor(aggregator: InsertAggregator);
|
|
8
|
-
values:
|
|
6
|
+
values: (values: {
|
|
9
7
|
[name: string]: any;
|
|
10
|
-
}[]
|
|
8
|
+
}[]) => ValuesInsert;
|
|
11
9
|
build: () => string;
|
|
12
10
|
}
|
|
@@ -4,7 +4,8 @@ const valuesInsert_1 = require("./valuesInsert");
|
|
|
4
4
|
class InsertInto {
|
|
5
5
|
constructor(aggregator) {
|
|
6
6
|
// @TODO refactor!!
|
|
7
|
-
this.values = (values
|
|
7
|
+
this.values = (values) => new valuesInsert_1.default(this._aggregator)
|
|
8
|
+
.apply(values);
|
|
8
9
|
this.build = () => this._aggregator.buildQuery();
|
|
9
10
|
this._aggregator = aggregator;
|
|
10
11
|
}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import ColumnType from '../../../columns/types/columnType';
|
|
3
|
-
import { ExtractModel, Indexing } from '../../../tables/inferTypes';
|
|
1
|
+
import { Indexing } from '../../../tables/inferTypes';
|
|
4
2
|
import InsertAggregator from '../../aggregators/insertAggregator';
|
|
5
3
|
import UpdateExpr from '../../requestBuilders/updates/updates';
|
|
6
4
|
import OnConflictInsert from './onConflictInsert';
|
|
7
5
|
export default class ValuesInsert {
|
|
8
6
|
private _aggregator;
|
|
9
7
|
constructor(aggregator: InsertAggregator);
|
|
10
|
-
apply:
|
|
8
|
+
apply: (values: {
|
|
11
9
|
[name: string]: any;
|
|
12
|
-
}[]
|
|
10
|
+
}[]) => ValuesInsert;
|
|
13
11
|
onConflict: (updates: UpdateExpr, column: Indexing) => OnConflictInsert;
|
|
14
12
|
build: () => string;
|
|
15
13
|
}
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const onConflictInsert_1 = require("./onConflictInsert");
|
|
4
4
|
class ValuesInsert {
|
|
5
5
|
constructor(aggregator) {
|
|
6
|
-
this.apply = (values
|
|
7
|
-
this._aggregator.appendColumns(
|
|
8
|
-
this._aggregator.appendValues(
|
|
6
|
+
this.apply = (values) => {
|
|
7
|
+
this._aggregator.appendColumns();
|
|
8
|
+
this._aggregator.appendValues(values);
|
|
9
9
|
return this;
|
|
10
10
|
};
|
|
11
11
|
this.onConflict = (updates, column) => new onConflictInsert_1.default(this._aggregator).apply(updates, column);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import ColumnType from '../../../columns/types/columnType';
|
|
1
|
+
import { AbstractTable } from '../../../tables';
|
|
3
2
|
import SelectFrom from './selectFrom';
|
|
4
3
|
export default class Select {
|
|
5
|
-
static from:
|
|
4
|
+
static from: <TTable extends AbstractTable<TTable>>(table: AbstractTable<TTable>) => SelectFrom;
|
|
6
5
|
}
|
|
@@ -5,8 +5,8 @@ const selectFrom_1 = require("./selectFrom");
|
|
|
5
5
|
class Select {
|
|
6
6
|
}
|
|
7
7
|
exports.default = Select;
|
|
8
|
-
Select.from = (
|
|
9
|
-
const aggregator = new selectAggregator_1.default(
|
|
10
|
-
aggregator.appendFrom(tableName
|
|
8
|
+
Select.from = (table) => {
|
|
9
|
+
const aggregator = new selectAggregator_1.default(table);
|
|
10
|
+
aggregator.appendFrom(table.tableName());
|
|
11
11
|
return new selectFrom_1.default(aggregator);
|
|
12
12
|
};
|
|
@@ -9,10 +9,11 @@ import WhereSelect from './whereSelect';
|
|
|
9
9
|
export default class SelectFrom {
|
|
10
10
|
private _aggregator;
|
|
11
11
|
constructor(aggregator: SelectAggregator);
|
|
12
|
-
joined: (joins: Array<Join<any
|
|
13
|
-
limit: (limit
|
|
14
|
-
offset: (offset
|
|
15
|
-
orderBy: (orderBy
|
|
12
|
+
joined: (joins: Array<Join<any> | undefined>) => SelectJoined;
|
|
13
|
+
limit: (limit?: number | undefined) => SelectFrom;
|
|
14
|
+
offset: (offset?: number | undefined) => SelectFrom;
|
|
15
|
+
orderBy: (orderBy?: AbstractColumn<ColumnType<{}>, boolean, boolean> | undefined, order?: Order | undefined) => SelectFrom;
|
|
16
|
+
distinct: (column?: AbstractColumn<ColumnType<{}>, boolean, boolean> | undefined) => SelectFrom;
|
|
16
17
|
filteredBy: (filters: Expr) => WhereSelect;
|
|
17
18
|
build: () => string;
|
|
18
19
|
}
|
|
@@ -17,6 +17,12 @@ class SelectFrom {
|
|
|
17
17
|
this._aggregator.orderBy(orderBy, order);
|
|
18
18
|
return this;
|
|
19
19
|
};
|
|
20
|
+
this.distinct = (column) => {
|
|
21
|
+
if (column) {
|
|
22
|
+
this._aggregator.distinct(column);
|
|
23
|
+
}
|
|
24
|
+
return this;
|
|
25
|
+
};
|
|
20
26
|
this.filteredBy = (filters) => new whereSelect_1.default(this._aggregator).apply(filters);
|
|
21
27
|
this.build = () => this._aggregator.buildQuery();
|
|
22
28
|
this._aggregator = aggregator;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractColumn } from '../../../columns/column';
|
|
2
2
|
import ColumnType from '../../../columns/types/columnType';
|
|
3
3
|
import SelectAggregator from '../../aggregators/selectAggregator';
|
|
4
4
|
import Order from '../../highLvlBuilders/order';
|
|
@@ -8,10 +8,10 @@ import WhereSelect from './whereSelect';
|
|
|
8
8
|
export default class SelectJoined {
|
|
9
9
|
private _aggregator;
|
|
10
10
|
constructor(aggregator: SelectAggregator);
|
|
11
|
-
apply: (joins: Array<Join<
|
|
12
|
-
limit: (limit
|
|
13
|
-
offset: (offset
|
|
14
|
-
orderBy: (orderBy
|
|
11
|
+
apply: (joins: Array<Join<any> | undefined>) => SelectJoined;
|
|
12
|
+
limit: (limit?: number | undefined) => SelectJoined;
|
|
13
|
+
offset: (offset?: number | undefined) => SelectJoined;
|
|
14
|
+
orderBy: (orderBy?: AbstractColumn<ColumnType<{}>, boolean, boolean> | undefined, order?: Order | undefined) => SelectJoined;
|
|
15
15
|
filteredBy: (filters: Expr) => WhereSelect;
|
|
16
16
|
build: () => string;
|
|
17
17
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AbstractColumn } from '../../../columns/column';
|
|
2
2
|
import ColumnType from '../../../columns/types/columnType';
|
|
3
3
|
import SelectAggregator from '../../aggregators/selectAggregator';
|
|
4
4
|
import Order from '../../highLvlBuilders/order';
|
|
@@ -6,9 +6,9 @@ import Expr from '../../requestBuilders/where/where';
|
|
|
6
6
|
export default class WhereSelect {
|
|
7
7
|
private _aggregator;
|
|
8
8
|
constructor(aggregator: SelectAggregator);
|
|
9
|
-
limit: (limit
|
|
10
|
-
offset: (offset
|
|
11
|
-
orderBy: (orderBy
|
|
9
|
+
limit: (limit?: number | undefined) => WhereSelect;
|
|
10
|
+
offset: (offset?: number | undefined) => WhereSelect;
|
|
11
|
+
orderBy: (orderBy?: AbstractColumn<ColumnType<{}>, boolean, boolean> | undefined, order?: Order | undefined) => WhereSelect;
|
|
12
12
|
apply: (filters: Expr) => WhereSelect;
|
|
13
13
|
build: () => string;
|
|
14
14
|
}
|
|
@@ -5,8 +5,8 @@ const updateIn_1 = require("./updateIn");
|
|
|
5
5
|
class Update {
|
|
6
6
|
}
|
|
7
7
|
exports.default = Update;
|
|
8
|
-
Update.in = (
|
|
9
|
-
const aggregator = new updateAggregator_1.default(
|
|
10
|
-
aggregator.appendFrom(tableName);
|
|
8
|
+
Update.in = (table) => {
|
|
9
|
+
const aggregator = new updateAggregator_1.default(table);
|
|
10
|
+
aggregator.appendFrom(table.tableName());
|
|
11
11
|
return new updateIn_1.default(aggregator);
|
|
12
12
|
};
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { AbstractColumn } from '../../../columns/column';
|
|
2
|
-
import ColumnType from '../../../columns/types/columnType';
|
|
3
1
|
import UpdateAggregator from '../../aggregators/updateAggregator';
|
|
4
2
|
import UpdateExpr from '../../requestBuilders/updates/updates';
|
|
5
3
|
import WhereSet from './whereSet';
|
|
6
4
|
export default class UpdateIn {
|
|
7
5
|
private _aggregator;
|
|
8
6
|
constructor(aggregator: UpdateAggregator);
|
|
9
|
-
columns: (
|
|
7
|
+
columns: () => UpdateIn;
|
|
10
8
|
set: (updates: UpdateExpr) => WhereSet<unknown, unknown>;
|
|
11
9
|
build: () => string;
|
|
12
10
|
}
|
|
@@ -3,10 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const whereSet_1 = require("./whereSet");
|
|
4
4
|
class UpdateIn {
|
|
5
5
|
constructor(aggregator) {
|
|
6
|
-
this.columns = (
|
|
7
|
-
this._aggregator.appendFields(columns);
|
|
8
|
-
return new UpdateIn(this._aggregator);
|
|
9
|
-
};
|
|
6
|
+
this.columns = () => new UpdateIn(this._aggregator);
|
|
10
7
|
this.set = (updates) => new whereSet_1.default(this._aggregator).apply(updates);
|
|
11
8
|
this.build = () => this._aggregator.buildQuery();
|
|
12
9
|
this._aggregator = aggregator;
|
|
@@ -6,7 +6,7 @@ class Const extends where_1.default {
|
|
|
6
6
|
constructor(value) {
|
|
7
7
|
super();
|
|
8
8
|
this.toQuery = () => {
|
|
9
|
-
if (
|
|
9
|
+
if (ecranate_1.shouldEcranate(this.value)) {
|
|
10
10
|
return `'${this.value.toString()}'`;
|
|
11
11
|
}
|
|
12
12
|
return this.value.toString();
|
|
@@ -9,7 +9,7 @@ class ConstArray extends where_1.default {
|
|
|
9
9
|
const finalArray = [];
|
|
10
10
|
for (let i = 0; i < this.values.length; i += 1) {
|
|
11
11
|
const value = this.values[i];
|
|
12
|
-
if (
|
|
12
|
+
if (ecranate_1.shouldEcranate(value)) {
|
|
13
13
|
finalArray.push(`'${value.toString()}'`);
|
|
14
14
|
}
|
|
15
15
|
else {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const where_1 = require("./where");
|
|
4
|
+
class IsNull extends where_1.default {
|
|
5
|
+
constructor(left) {
|
|
6
|
+
super();
|
|
7
|
+
this.toQuery = () => `${this.left.toQuery()} is null`;
|
|
8
|
+
this.left = left;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.default = IsNull;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const where_1 = require("./where");
|
|
4
|
+
class NotEqWhere extends where_1.default {
|
|
5
|
+
constructor(left, right) {
|
|
6
|
+
super();
|
|
7
|
+
this.toQuery = () => `${this.left.toQuery()}!=${this.right.toQuery()}`;
|
|
8
|
+
this.left = left;
|
|
9
|
+
this.right = right;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.default = NotEqWhere;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const where_1 = require("./where");
|
|
4
|
+
class RawWhere extends where_1.default {
|
|
5
|
+
constructor(custom) {
|
|
6
|
+
super();
|
|
7
|
+
this.custom = custom;
|
|
8
|
+
this.toQuery = () => this.custom;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.default = RawWhere;
|
|
@@ -3,6 +3,7 @@ import ColumnType from '../../../columns/types/columnType';
|
|
|
3
3
|
import { ExtractCodeType } from '../../../tables/inferTypes';
|
|
4
4
|
import Expr from './where';
|
|
5
5
|
export declare const eq: <T extends AbstractColumn<ColumnType<any>, boolean, boolean>>(left: T, value: ExtractCodeType<T>) => Expr;
|
|
6
|
+
export declare const raw: (customQuery: string) => Expr;
|
|
6
7
|
export declare const and: (expressions: Expr[]) => Expr;
|
|
7
8
|
export declare const or: (expressions: Expr[]) => Expr;
|
|
8
9
|
export declare const like: <T extends AbstractColumn<ColumnType<any>, boolean, boolean>>(left: T, value: ExtractCodeType<T>) => Expr;
|
|
@@ -11,3 +12,5 @@ export declare const greater: <T extends AbstractColumn<ColumnType<any>, boolean
|
|
|
11
12
|
export declare const less: <T extends AbstractColumn<ColumnType<any>, boolean, boolean>>(left: T, value: ExtractCodeType<T>) => Expr;
|
|
12
13
|
export declare const greaterEq: <T extends AbstractColumn<ColumnType<any>, boolean, boolean>>(left: T, value: ExtractCodeType<T>) => Expr;
|
|
13
14
|
export declare const lessEq: <T extends AbstractColumn<ColumnType<any>, boolean, boolean>>(left: T, value: ExtractCodeType<T>) => Expr;
|
|
15
|
+
export declare const isNull: <T extends AbstractColumn<ColumnType<any>, boolean, boolean>>(left: T) => Expr;
|
|
16
|
+
export declare const notEq: <T extends AbstractColumn<ColumnType<any>, boolean, boolean>>(left: T, value: ExtractCodeType<T>) => Expr;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.lessEq = exports.greaterEq = exports.less = exports.greater = exports.inArray = exports.like = exports.or = exports.and = exports.eq = void 0;
|
|
3
|
+
exports.notEq = exports.isNull = exports.lessEq = exports.greaterEq = exports.less = exports.greater = exports.inArray = exports.like = exports.or = exports.and = exports.raw = exports.eq = void 0;
|
|
4
4
|
const and_1 = require("./and");
|
|
5
5
|
const const_1 = require("./const");
|
|
6
6
|
const constArray_1 = require("./constArray");
|
|
@@ -8,14 +8,19 @@ const eqWhere_1 = require("./eqWhere");
|
|
|
8
8
|
const greater_1 = require("./greater");
|
|
9
9
|
const greaterEq_1 = require("./greaterEq");
|
|
10
10
|
const in_1 = require("./in");
|
|
11
|
+
const isNull_1 = require("./isNull");
|
|
11
12
|
const less_1 = require("./less");
|
|
12
13
|
const lessEq_1 = require("./lessEq");
|
|
13
14
|
const like_1 = require("./like");
|
|
15
|
+
const notEqWhere_1 = require("./notEqWhere");
|
|
14
16
|
const or_1 = require("./or");
|
|
17
|
+
const rawWhere_1 = require("./rawWhere");
|
|
15
18
|
const var_1 = require("./var");
|
|
16
19
|
// eslint-disable-next-line max-len
|
|
17
20
|
const eq = (left, value) => new eqWhere_1.default(new var_1.default(left), new const_1.default(value));
|
|
18
21
|
exports.eq = eq;
|
|
22
|
+
const raw = (customQuery) => new rawWhere_1.default(customQuery);
|
|
23
|
+
exports.raw = raw;
|
|
19
24
|
const and = (expressions) => new and_1.default(expressions);
|
|
20
25
|
exports.and = and;
|
|
21
26
|
const or = (expressions) => new or_1.default(expressions);
|
|
@@ -32,3 +37,7 @@ const greaterEq = (left, value) => new greaterEq_1.default({ left: new var_1.def
|
|
|
32
37
|
exports.greaterEq = greaterEq;
|
|
33
38
|
const lessEq = (left, value) => new lessEq_1.default({ left: new var_1.default(left), right: new const_1.default(value) });
|
|
34
39
|
exports.lessEq = lessEq;
|
|
40
|
+
const isNull = (left) => new isNull_1.default(new var_1.default(left));
|
|
41
|
+
exports.isNull = isNull;
|
|
42
|
+
const notEq = (left, value) => new notEqWhere_1.default(new var_1.default(left), new const_1.default(value));
|
|
43
|
+
exports.notEq = notEq;
|
|
@@ -5,7 +5,7 @@ const where_1 = require("./where");
|
|
|
5
5
|
class Var extends where_1.default {
|
|
6
6
|
constructor(column) {
|
|
7
7
|
super();
|
|
8
|
-
this.toQuery = () => `${this.column.getParentName()}.${
|
|
8
|
+
this.toQuery = () => `${this.column.getParentName()}.${ecranate_1.ecranate(this.column.getColumnName())}`;
|
|
9
9
|
this.column = column;
|
|
10
10
|
}
|
|
11
11
|
}
|
package/db/session.js
CHANGED
|
@@ -6,10 +6,10 @@ class Session {
|
|
|
6
6
|
this.pool = pool;
|
|
7
7
|
this.execute = async (query) => {
|
|
8
8
|
try {
|
|
9
|
-
return
|
|
9
|
+
return baseError_1.right(await this.pool.query(query));
|
|
10
10
|
}
|
|
11
11
|
catch (e) {
|
|
12
|
-
return
|
|
12
|
+
return baseError_1.left({
|
|
13
13
|
type: baseError_1.PgSessionError.PgQueryExecutionError,
|
|
14
14
|
reason: e,
|
|
15
15
|
});
|
|
File without changes
|
|
@@ -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
|
+
})();
|
|
File without changes
|
|
@@ -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 {};
|
|
@@ -0,0 +1,39 @@
|
|
|
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 order_1 = require("../../builders/highLvlBuilders/order");
|
|
7
|
+
const static_1 = require("../../builders/requestBuilders/where/static");
|
|
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
|
+
// select all
|
|
16
|
+
const allSelect = await usersTable.select().all();
|
|
17
|
+
// select first
|
|
18
|
+
const firstSelect = await usersTable.select().first();
|
|
19
|
+
// select using filters
|
|
20
|
+
const eqSelect = await usersTable.select().where(builders_1.eq(usersTable.phone, 'hello')).all();
|
|
21
|
+
const andSelect = await usersTable.select().where(builders_1.and([builders_1.eq(usersTable.phone, 'hello')])).all();
|
|
22
|
+
const orSelect = await usersTable.select().where(builders_1.or([builders_1.eq(usersTable.phone, 'hello')])).all();
|
|
23
|
+
// select using limit, offset
|
|
24
|
+
const limitOffsetSelect = await usersTable.select({ limit: 10, offset: 10 }).all();
|
|
25
|
+
const likeSelect = await usersTable.select().where(builders_1.like(usersTable.phone, 'hello')).all();
|
|
26
|
+
const inArraySelect = usersTable.select().where(static_1.inArray(usersTable.phone, ['hello'])).all();
|
|
27
|
+
const greaterSelect = usersTable.select().where(static_1.greater(usersTable.bigIntField, 3)).all();
|
|
28
|
+
const lessSelect = usersTable.select().where(static_1.less(usersTable.bigIntField, 3)).all();
|
|
29
|
+
const greaterEqSelect = usersTable.select().where(static_1.greaterEq(usersTable.bigIntField, 3)).all();
|
|
30
|
+
const lessEqSelect = usersTable.select().where(static_1.lessEq(usersTable.bigIntField, 3)).all();
|
|
31
|
+
const isNullSelect = usersTable.select().where(static_1.isNull(usersTable.phone)).all();
|
|
32
|
+
const notEqSelect = usersTable.select().where(static_1.notEq(usersTable.phone, 'hello')).all();
|
|
33
|
+
// ordered select
|
|
34
|
+
const ordered = await usersTable.select().orderBy((table) => table.phone, order_1.default.ASC).all();
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
console.log(e);
|
|
38
|
+
}
|
|
39
|
+
})();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
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.update()
|
|
18
|
+
.where(builders_1.eq(usersTable.phone, 'hello'))
|
|
19
|
+
.set({ fullName: 'newName' })
|
|
20
|
+
.execute();
|
|
21
|
+
const updatedCities = await citiesTable.update()
|
|
22
|
+
.where(builders_1.eq(citiesTable.location, 'USA'))
|
|
23
|
+
.set({ metadata: { population: 1, connection: 'first' } })
|
|
24
|
+
.all();
|
|
25
|
+
const updatedUserGroup = await userGroupsTable.update()
|
|
26
|
+
.where(builders_1.eq(userGroupsTable.id, 1))
|
|
27
|
+
.set({ description: 'updated description' })
|
|
28
|
+
.first();
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
console.log(e);
|
|
32
|
+
}
|
|
33
|
+
})();
|