@sqb/builder 4.0.9 → 4.0.10
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/dist/Serializable.d.ts +9 -0
- package/dist/Serializable.js +6 -0
- package/dist/SerializeContext.d.ts +47 -0
- package/dist/SerializeContext.js +138 -0
- package/dist/classes.d.ts +38 -0
- package/dist/classes.js +41 -0
- package/dist/enums.d.ts +84 -0
- package/dist/enums.js +91 -0
- package/dist/extensions.d.ts +4 -0
- package/dist/extensions.js +16 -0
- package/dist/helpers.d.ts +4 -0
- package/dist/helpers.js +31 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +27 -0
- package/dist/op.initializers.d.ts +86 -0
- package/dist/op.initializers.js +158 -0
- package/dist/query/DeleteQuery.d.ts +24 -0
- package/dist/query/DeleteQuery.js +53 -0
- package/dist/query/InsertQuery.d.ts +23 -0
- package/dist/query/InsertQuery.js +76 -0
- package/dist/query/Query.d.ts +15 -0
- package/dist/query/Query.js +40 -0
- package/dist/query/ReturningQuery.d.ts +14 -0
- package/dist/query/ReturningQuery.js +44 -0
- package/dist/query/SelectQuery.d.ts +90 -0
- package/dist/query/SelectQuery.js +283 -0
- package/dist/query/UpdateQuery.d.ts +29 -0
- package/dist/query/UpdateQuery.js +80 -0
- package/dist/sql-objects/BaseField.d.ts +7 -0
- package/dist/sql-objects/BaseField.js +11 -0
- package/dist/sql-objects/CaseStatement.d.ts +42 -0
- package/dist/sql-objects/CaseStatement.js +85 -0
- package/dist/sql-objects/CountStatement.d.ts +20 -0
- package/dist/sql-objects/CountStatement.js +34 -0
- package/dist/sql-objects/Expression.d.ts +7 -0
- package/dist/sql-objects/Expression.js +7 -0
- package/dist/sql-objects/FieldExpression.d.ts +14 -0
- package/dist/sql-objects/FieldExpression.js +53 -0
- package/dist/sql-objects/GroupColumn.d.ts +8 -0
- package/dist/sql-objects/GroupColumn.js +38 -0
- package/dist/sql-objects/JoinStatement.d.ts +17 -0
- package/dist/sql-objects/JoinStatement.js +81 -0
- package/dist/sql-objects/Operator.d.ts +5 -0
- package/dist/sql-objects/Operator.js +7 -0
- package/dist/sql-objects/OrderColumn.d.ts +9 -0
- package/dist/sql-objects/OrderColumn.js +42 -0
- package/dist/sql-objects/ParamExpression.d.ts +23 -0
- package/dist/sql-objects/ParamExpression.js +53 -0
- package/dist/sql-objects/RawStatement.d.ts +9 -0
- package/dist/sql-objects/RawStatement.js +18 -0
- package/dist/sql-objects/ReturningColumn.d.ts +9 -0
- package/dist/sql-objects/ReturningColumn.js +32 -0
- package/dist/sql-objects/TableName.d.ts +11 -0
- package/dist/sql-objects/TableName.js +31 -0
- package/dist/sql-objects/operators/CompOperator.d.ts +16 -0
- package/dist/sql-objects/operators/CompOperator.js +87 -0
- package/dist/sql-objects/operators/LogicalOperator.d.ts +16 -0
- package/dist/sql-objects/operators/LogicalOperator.js +83 -0
- package/dist/sql-objects/operators/OpAnd.d.ts +5 -0
- package/dist/sql-objects/operators/OpAnd.js +12 -0
- package/dist/sql-objects/operators/OpBetween.d.ts +11 -0
- package/dist/sql-objects/operators/OpBetween.js +35 -0
- package/dist/sql-objects/operators/OpEq.d.ts +8 -0
- package/dist/sql-objects/operators/OpEq.js +13 -0
- package/dist/sql-objects/operators/OpExists.d.ts +11 -0
- package/dist/sql-objects/operators/OpExists.js +30 -0
- package/dist/sql-objects/operators/OpGt.d.ts +8 -0
- package/dist/sql-objects/operators/OpGt.js +13 -0
- package/dist/sql-objects/operators/OpGte.d.ts +8 -0
- package/dist/sql-objects/operators/OpGte.js +13 -0
- package/dist/sql-objects/operators/OpILike.d.ts +6 -0
- package/dist/sql-objects/operators/OpILike.js +13 -0
- package/dist/sql-objects/operators/OpIn.d.ts +9 -0
- package/dist/sql-objects/operators/OpIn.js +19 -0
- package/dist/sql-objects/operators/OpIs.d.ts +8 -0
- package/dist/sql-objects/operators/OpIs.js +13 -0
- package/dist/sql-objects/operators/OpIsNot.d.ts +8 -0
- package/dist/sql-objects/operators/OpIsNot.js +13 -0
- package/dist/sql-objects/operators/OpLike.d.ts +10 -0
- package/dist/sql-objects/operators/OpLike.js +22 -0
- package/dist/sql-objects/operators/OpLt.d.ts +8 -0
- package/dist/sql-objects/operators/OpLt.js +13 -0
- package/dist/sql-objects/operators/OpLte.d.ts +8 -0
- package/dist/sql-objects/operators/OpLte.js +13 -0
- package/dist/sql-objects/operators/OpNe.d.ts +8 -0
- package/dist/sql-objects/operators/OpNe.js +13 -0
- package/dist/sql-objects/operators/OpNotBetween.d.ts +6 -0
- package/dist/sql-objects/operators/OpNotBetween.js +13 -0
- package/dist/sql-objects/operators/OpNotExists.d.ts +6 -0
- package/dist/sql-objects/operators/OpNotExists.js +13 -0
- package/dist/sql-objects/operators/OpNotILike.d.ts +6 -0
- package/dist/sql-objects/operators/OpNotILike.js +13 -0
- package/dist/sql-objects/operators/OpNotIn.d.ts +6 -0
- package/dist/sql-objects/operators/OpNotIn.js +13 -0
- package/dist/sql-objects/operators/OpNotLike.d.ts +6 -0
- package/dist/sql-objects/operators/OpNotLike.js +13 -0
- package/dist/sql-objects/operators/OpOr.d.ts +5 -0
- package/dist/sql-objects/operators/OpOr.js +12 -0
- package/dist/sqlobject.initializers.d.ts +39 -0
- package/dist/sqlobject.initializers.js +90 -0
- package/dist/typeguards.d.ts +34 -0
- package/dist/typeguards.js +73 -0
- package/dist/types.d.ts +33 -0
- package/dist/types.js +2 -0
- package/package.json +2 -2
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NotExists = exports.Exists = exports.IsNot = exports.Is = exports.Nilike = exports.NotILike = exports.Ilike = exports.NLike = exports.NotLike = exports.Like = exports.Nin = exports.NotIn = exports.In = exports.NotBetween = exports.Between = exports.LowerAndEqualTo = exports.Lte = exports.LowerThan = exports.Lt = exports.GreaterAnEqualTo = exports.Gte = exports.GreaterThan = exports.Gt = exports.NotEqual = exports.Ne = exports.Equal = exports.Eq = exports.Or = exports.And = exports.op = void 0;
|
|
4
|
+
const OpAnd_1 = require("./sql-objects/operators/OpAnd");
|
|
5
|
+
const OpOr_1 = require("./sql-objects/operators/OpOr");
|
|
6
|
+
const OpEq_1 = require("./sql-objects/operators/OpEq");
|
|
7
|
+
const OpGt_1 = require("./sql-objects/operators/OpGt");
|
|
8
|
+
const OpGte_1 = require("./sql-objects/operators/OpGte");
|
|
9
|
+
const OpLt_1 = require("./sql-objects/operators/OpLt");
|
|
10
|
+
const OpLte_1 = require("./sql-objects/operators/OpLte");
|
|
11
|
+
const OpBetween_1 = require("./sql-objects/operators/OpBetween");
|
|
12
|
+
const OpIn_1 = require("./sql-objects/operators/OpIn");
|
|
13
|
+
const OpIs_1 = require("./sql-objects/operators/OpIs");
|
|
14
|
+
const OpIsNot_1 = require("./sql-objects/operators/OpIsNot");
|
|
15
|
+
const OpLike_1 = require("./sql-objects/operators/OpLike");
|
|
16
|
+
const OpILike_1 = require("./sql-objects/operators/OpILike");
|
|
17
|
+
const OpNe_1 = require("./sql-objects/operators/OpNe");
|
|
18
|
+
const OpNotBetween_1 = require("./sql-objects/operators/OpNotBetween");
|
|
19
|
+
const OpNotIn_1 = require("./sql-objects/operators/OpNotIn");
|
|
20
|
+
const OpNotLike_1 = require("./sql-objects/operators/OpNotLike");
|
|
21
|
+
const OpNotILike_1 = require("./sql-objects/operators/OpNotILike");
|
|
22
|
+
const OpExists_1 = require("./sql-objects/operators/OpExists");
|
|
23
|
+
const OpNotExists_1 = require("./sql-objects/operators/OpNotExists");
|
|
24
|
+
// Avoids circular reference
|
|
25
|
+
const LogicalOperator_1 = require("./sql-objects/operators/LogicalOperator");
|
|
26
|
+
function And(...args) {
|
|
27
|
+
return new OpAnd_1.OpAnd(...args);
|
|
28
|
+
}
|
|
29
|
+
exports.And = And;
|
|
30
|
+
function Or(...args) {
|
|
31
|
+
return new OpOr_1.OpOr(...args);
|
|
32
|
+
}
|
|
33
|
+
exports.Or = Or;
|
|
34
|
+
function Eq(expression, value) {
|
|
35
|
+
return new OpEq_1.OpEq(expression, value);
|
|
36
|
+
}
|
|
37
|
+
exports.Eq = Eq;
|
|
38
|
+
exports.Equal = Eq;
|
|
39
|
+
function Ne(expression, value) {
|
|
40
|
+
return new OpNe_1.OpNe(expression, value);
|
|
41
|
+
}
|
|
42
|
+
exports.Ne = Ne;
|
|
43
|
+
exports.NotEqual = Ne;
|
|
44
|
+
function Gt(expression, value) {
|
|
45
|
+
return new OpGt_1.OpGt(expression, value);
|
|
46
|
+
}
|
|
47
|
+
exports.Gt = Gt;
|
|
48
|
+
exports.GreaterThan = Gt;
|
|
49
|
+
function Gte(expression, value) {
|
|
50
|
+
return new OpGte_1.OpGte(expression, value);
|
|
51
|
+
}
|
|
52
|
+
exports.Gte = Gte;
|
|
53
|
+
exports.GreaterAnEqualTo = Gte;
|
|
54
|
+
function Lt(expression, value) {
|
|
55
|
+
return new OpLt_1.OpLt(expression, value);
|
|
56
|
+
}
|
|
57
|
+
exports.Lt = Lt;
|
|
58
|
+
exports.LowerThan = Lt;
|
|
59
|
+
function Lte(expression, value) {
|
|
60
|
+
return new OpLte_1.OpLte(expression, value);
|
|
61
|
+
}
|
|
62
|
+
exports.Lte = Lte;
|
|
63
|
+
exports.LowerAndEqualTo = Lte;
|
|
64
|
+
function Between(expression, value1, value2) {
|
|
65
|
+
const values = Array.isArray(value1) ? value1 : [value1, value2];
|
|
66
|
+
return new OpBetween_1.OpBetween(expression, values);
|
|
67
|
+
}
|
|
68
|
+
exports.Between = Between;
|
|
69
|
+
function NotBetween(expression, value1, value2) {
|
|
70
|
+
const values = Array.isArray(value1) ? value1 : [value1, value2];
|
|
71
|
+
return new OpNotBetween_1.OpNotBetween(expression, values);
|
|
72
|
+
}
|
|
73
|
+
exports.NotBetween = NotBetween;
|
|
74
|
+
function In(expression, value) {
|
|
75
|
+
return new OpIn_1.OpIn(expression, value);
|
|
76
|
+
}
|
|
77
|
+
exports.In = In;
|
|
78
|
+
function NotIn(expression, value) {
|
|
79
|
+
return new OpNotIn_1.OpNotIn(expression, value);
|
|
80
|
+
}
|
|
81
|
+
exports.NotIn = NotIn;
|
|
82
|
+
exports.Nin = NotIn;
|
|
83
|
+
function Like(expression, value) {
|
|
84
|
+
return new OpLike_1.OpLike(expression, value);
|
|
85
|
+
}
|
|
86
|
+
exports.Like = Like;
|
|
87
|
+
function NotLike(expression, value) {
|
|
88
|
+
return new OpNotLike_1.OpNotLike(expression, value);
|
|
89
|
+
}
|
|
90
|
+
exports.NotLike = NotLike;
|
|
91
|
+
exports.NLike = NotLike;
|
|
92
|
+
function Ilike(expression, value) {
|
|
93
|
+
return new OpILike_1.OpILike(expression, value);
|
|
94
|
+
}
|
|
95
|
+
exports.Ilike = Ilike;
|
|
96
|
+
function NotILike(expression, value) {
|
|
97
|
+
return new OpNotILike_1.OpNotILike(expression, value);
|
|
98
|
+
}
|
|
99
|
+
exports.NotILike = NotILike;
|
|
100
|
+
exports.Nilike = NotILike;
|
|
101
|
+
function Is(expression, value) {
|
|
102
|
+
return new OpIs_1.OpIs(expression, value);
|
|
103
|
+
}
|
|
104
|
+
exports.Is = Is;
|
|
105
|
+
function IsNot(expression, value) {
|
|
106
|
+
return new OpIsNot_1.OpIsNot(expression, value);
|
|
107
|
+
}
|
|
108
|
+
exports.IsNot = IsNot;
|
|
109
|
+
function Exists(expression) {
|
|
110
|
+
return new OpExists_1.OpExists(expression);
|
|
111
|
+
}
|
|
112
|
+
exports.Exists = Exists;
|
|
113
|
+
function NotExists(expression) {
|
|
114
|
+
return new OpNotExists_1.OpNotExists(expression);
|
|
115
|
+
}
|
|
116
|
+
exports.NotExists = NotExists;
|
|
117
|
+
const op = {
|
|
118
|
+
and: And,
|
|
119
|
+
or: Or,
|
|
120
|
+
eq: Eq,
|
|
121
|
+
'=': Eq,
|
|
122
|
+
ne: Ne,
|
|
123
|
+
'!=': Ne,
|
|
124
|
+
gt: Gt,
|
|
125
|
+
'>': Gt,
|
|
126
|
+
gte: Gte,
|
|
127
|
+
'>=': Gte,
|
|
128
|
+
lt: Lt,
|
|
129
|
+
'<': Lt,
|
|
130
|
+
lte: Lte,
|
|
131
|
+
'<=': Lte,
|
|
132
|
+
between: Between,
|
|
133
|
+
btw: Between,
|
|
134
|
+
notBetween: NotBetween,
|
|
135
|
+
nbtw: NotBetween,
|
|
136
|
+
'!between': NotBetween,
|
|
137
|
+
'!btw': NotBetween,
|
|
138
|
+
in: In,
|
|
139
|
+
notIn: NotIn,
|
|
140
|
+
nin: NotIn,
|
|
141
|
+
'!in': NotIn,
|
|
142
|
+
like: Like,
|
|
143
|
+
notLike: NotLike,
|
|
144
|
+
nlike: NotLike,
|
|
145
|
+
'!like': NotLike,
|
|
146
|
+
ilike: Ilike,
|
|
147
|
+
notILike: NotILike,
|
|
148
|
+
nilike: NotILike,
|
|
149
|
+
'!ilike': NotILike,
|
|
150
|
+
is: Is,
|
|
151
|
+
isNot: IsNot,
|
|
152
|
+
'!is': IsNot,
|
|
153
|
+
exists: Exists,
|
|
154
|
+
notExists: NotExists,
|
|
155
|
+
'!exists': NotExists
|
|
156
|
+
};
|
|
157
|
+
exports.op = op;
|
|
158
|
+
Object.assign(LogicalOperator_1.WrapOps, op);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Query } from './Query';
|
|
2
|
+
import { RawStatement } from '../sql-objects/RawStatement';
|
|
3
|
+
import { SerializationType } from '../enums';
|
|
4
|
+
import { TableName } from '../sql-objects/TableName';
|
|
5
|
+
import { LogicalOperator } from '../sql-objects/operators/LogicalOperator';
|
|
6
|
+
import { SerializeContext } from '../SerializeContext';
|
|
7
|
+
export declare class DeleteQuery extends Query {
|
|
8
|
+
_table: TableName | RawStatement;
|
|
9
|
+
_where?: LogicalOperator;
|
|
10
|
+
constructor(tableName: string | RawStatement);
|
|
11
|
+
get _type(): SerializationType;
|
|
12
|
+
/**
|
|
13
|
+
* Defines "where" part of query
|
|
14
|
+
*/
|
|
15
|
+
where(...operator: any[]): this;
|
|
16
|
+
/**
|
|
17
|
+
* Performs serialization
|
|
18
|
+
*/
|
|
19
|
+
_serialize(ctx: SerializeContext): string;
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
_serializeWhere(ctx: SerializeContext): string;
|
|
24
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeleteQuery = void 0;
|
|
4
|
+
const Query_1 = require("./Query");
|
|
5
|
+
const enums_1 = require("../enums");
|
|
6
|
+
const TableName_1 = require("../sql-objects/TableName");
|
|
7
|
+
const OpAnd_1 = require("../sql-objects/operators/OpAnd");
|
|
8
|
+
const typeguards_1 = require("../typeguards");
|
|
9
|
+
class DeleteQuery extends Query_1.Query {
|
|
10
|
+
constructor(tableName) {
|
|
11
|
+
super();
|
|
12
|
+
if (!tableName || !(typeof tableName === 'string' || (0, typeguards_1.isRawStatement)(tableName)))
|
|
13
|
+
throw new TypeError('String or Raw instance required as first argument (tableName) for UpdateQuery');
|
|
14
|
+
this._table = typeof tableName === 'string' ? new TableName_1.TableName(tableName) : tableName;
|
|
15
|
+
}
|
|
16
|
+
get _type() {
|
|
17
|
+
return enums_1.SerializationType.DELETE_QUERY;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Defines "where" part of query
|
|
21
|
+
*/
|
|
22
|
+
where(...operator) {
|
|
23
|
+
this._where = this._where || new OpAnd_1.OpAnd();
|
|
24
|
+
this._where.add(...operator);
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Performs serialization
|
|
29
|
+
*/
|
|
30
|
+
_serialize(ctx) {
|
|
31
|
+
const o = {
|
|
32
|
+
table: this._table._serialize(ctx),
|
|
33
|
+
where: this._serializeWhere(ctx)
|
|
34
|
+
};
|
|
35
|
+
let out = 'delete from ' + o.table;
|
|
36
|
+
if (o.where)
|
|
37
|
+
out += '\n' + o.where;
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
_serializeWhere(ctx) {
|
|
44
|
+
if (!this._where)
|
|
45
|
+
return '';
|
|
46
|
+
const s = this._where._serialize(ctx);
|
|
47
|
+
return ctx.serialize(enums_1.SerializationType.CONDITIONS_BLOCK, s, () => {
|
|
48
|
+
/* istanbul ignore next */
|
|
49
|
+
return s ? 'where ' + s : '';
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.DeleteQuery = DeleteQuery;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ReturningQuery } from './ReturningQuery';
|
|
2
|
+
import { SerializationType } from '../enums';
|
|
3
|
+
import { TableName } from '../sql-objects/TableName';
|
|
4
|
+
import type { RawStatement } from '../sql-objects/RawStatement';
|
|
5
|
+
import { SerializeContext } from '../SerializeContext';
|
|
6
|
+
export declare class InsertQuery extends ReturningQuery {
|
|
7
|
+
_table: TableName | RawStatement;
|
|
8
|
+
_input: any;
|
|
9
|
+
constructor(tableName: string | RawStatement, input: any);
|
|
10
|
+
get _type(): SerializationType;
|
|
11
|
+
/**
|
|
12
|
+
* Performs serialization
|
|
13
|
+
*/
|
|
14
|
+
_serialize(ctx: SerializeContext): string;
|
|
15
|
+
/**
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
protected __serializeColumns(ctx: SerializeContext): string;
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
protected __serializeValues(ctx: SerializeContext): string;
|
|
23
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InsertQuery = void 0;
|
|
4
|
+
const ReturningQuery_1 = require("./ReturningQuery");
|
|
5
|
+
const enums_1 = require("../enums");
|
|
6
|
+
const TableName_1 = require("../sql-objects/TableName");
|
|
7
|
+
const typeguards_1 = require("../typeguards");
|
|
8
|
+
const helpers_1 = require("../helpers");
|
|
9
|
+
class InsertQuery extends ReturningQuery_1.ReturningQuery {
|
|
10
|
+
constructor(tableName, input) {
|
|
11
|
+
super();
|
|
12
|
+
if (!tableName || !(typeof tableName === 'string' || (0, typeguards_1.isRawStatement)(tableName)))
|
|
13
|
+
throw new TypeError('String or Raw instance required as first argument (tableName) for InsertQuery');
|
|
14
|
+
if (!input || !((typeof input === 'object' && !Array.isArray(input)) ||
|
|
15
|
+
input.isSelect))
|
|
16
|
+
throw new TypeError('Object or SelectQuery instance required as second argument (input) for InsertQuery');
|
|
17
|
+
this._table = typeof tableName === 'string' ? new TableName_1.TableName(tableName) : tableName;
|
|
18
|
+
this._input = input;
|
|
19
|
+
}
|
|
20
|
+
get _type() {
|
|
21
|
+
return enums_1.SerializationType.INSERT_QUERY;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Performs serialization
|
|
25
|
+
*/
|
|
26
|
+
_serialize(ctx) {
|
|
27
|
+
const o = {
|
|
28
|
+
table: this._table._serialize(ctx),
|
|
29
|
+
columns: this.__serializeColumns(ctx),
|
|
30
|
+
values: this.__serializeValues(ctx),
|
|
31
|
+
returning: this.__serializeReturning(ctx)
|
|
32
|
+
};
|
|
33
|
+
let out = 'insert into ' + o.table + '\n\t(' +
|
|
34
|
+
o.columns + ')\n\bvalues\n\t(' + o.values + ')\b';
|
|
35
|
+
if (o.returning)
|
|
36
|
+
out += '\n' + o.returning;
|
|
37
|
+
return out;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
*
|
|
41
|
+
*/
|
|
42
|
+
__serializeColumns(ctx) {
|
|
43
|
+
let arr;
|
|
44
|
+
if ((0, typeguards_1.isSelectQuery)(this._input)) {
|
|
45
|
+
arr = [];
|
|
46
|
+
const cols = this._input._columns;
|
|
47
|
+
if (cols) {
|
|
48
|
+
for (const col of cols) {
|
|
49
|
+
if (col._alias)
|
|
50
|
+
arr.push(col._alias);
|
|
51
|
+
else if (col._field)
|
|
52
|
+
arr.push(col._field);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else
|
|
57
|
+
arr = Object.keys(this._input);
|
|
58
|
+
return ctx.serialize(enums_1.SerializationType.INSERT_QUERY_COLUMNS, arr, () => (0, helpers_1.printArray)(arr));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
*
|
|
62
|
+
*/
|
|
63
|
+
__serializeValues(ctx) {
|
|
64
|
+
if ((0, typeguards_1.isSerializable)(this._input))
|
|
65
|
+
return this._input._serialize(ctx);
|
|
66
|
+
const arr = [];
|
|
67
|
+
const allValues = this._input;
|
|
68
|
+
for (const n of Object.keys(allValues)) {
|
|
69
|
+
const s = ctx.anyToSQL(allValues[n]);
|
|
70
|
+
if (s)
|
|
71
|
+
arr.push((0, typeguards_1.isSelectQuery)(allValues[n]) ? '(' + s + ')' : s);
|
|
72
|
+
}
|
|
73
|
+
return ctx.serialize(enums_1.SerializationType.INSERT_QUERY_VALUES, arr, () => (0, helpers_1.printArray)(arr));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.InsertQuery = InsertQuery;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { EventEmitter } from 'events';
|
|
3
|
+
import { Serializable } from '../Serializable';
|
|
4
|
+
import { GenerateOptions, GenerateResult } from '../types';
|
|
5
|
+
export declare interface Query extends EventEmitter {
|
|
6
|
+
}
|
|
7
|
+
export declare abstract class Query extends Serializable {
|
|
8
|
+
protected _params?: Record<string, any>;
|
|
9
|
+
constructor();
|
|
10
|
+
/**
|
|
11
|
+
* Generates Sql script
|
|
12
|
+
*/
|
|
13
|
+
generate(options?: GenerateOptions): GenerateResult;
|
|
14
|
+
values(obj: any): this;
|
|
15
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Query = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const events_1 = require("events");
|
|
6
|
+
const putil_merge_1 = tslib_1.__importDefault(require("putil-merge"));
|
|
7
|
+
const putil_flattentext_1 = tslib_1.__importDefault(require("putil-flattentext"));
|
|
8
|
+
const Serializable_1 = require("../Serializable");
|
|
9
|
+
const SerializeContext_1 = require("../SerializeContext");
|
|
10
|
+
class Query extends Serializable_1.Serializable {
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
events_1.EventEmitter.call(this);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Generates Sql script
|
|
17
|
+
*/
|
|
18
|
+
generate(options) {
|
|
19
|
+
const ctx = new SerializeContext_1.SerializeContext(options);
|
|
20
|
+
if (this._params)
|
|
21
|
+
ctx.params = { ...ctx.params, ...this._params };
|
|
22
|
+
ctx.serializeHooks = this.listeners('serialize');
|
|
23
|
+
/* generate output */
|
|
24
|
+
const sql = this._serialize(ctx);
|
|
25
|
+
return {
|
|
26
|
+
sql: (0, putil_flattentext_1.default)(sql, { noWrap: !ctx.prettyPrint }),
|
|
27
|
+
params: ctx.preparedParams,
|
|
28
|
+
paramOptions: ctx.paramOptions,
|
|
29
|
+
returningFields: ctx.returningFields
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
values(obj) {
|
|
33
|
+
if (typeof obj !== 'object' || Array.isArray(obj))
|
|
34
|
+
throw new TypeError('Invalid argument');
|
|
35
|
+
this._params = obj;
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.Query = Query;
|
|
40
|
+
(0, putil_merge_1.default)(Query.prototype, events_1.EventEmitter.prototype, { descriptor: true });
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Query } from './Query';
|
|
2
|
+
import { ReturningColumn } from '../sql-objects/ReturningColumn';
|
|
3
|
+
import { SerializeContext } from '../SerializeContext';
|
|
4
|
+
export declare abstract class ReturningQuery extends Query {
|
|
5
|
+
_returningColumns?: ReturningColumn[];
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
returning(...columns: string[]): this;
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
protected __serializeReturning(ctx: SerializeContext): string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReturningQuery = void 0;
|
|
4
|
+
const Query_1 = require("./Query");
|
|
5
|
+
const enums_1 = require("../enums");
|
|
6
|
+
const ReturningColumn_1 = require("../sql-objects/ReturningColumn");
|
|
7
|
+
const helpers_1 = require("../helpers");
|
|
8
|
+
class ReturningQuery extends Query_1.Query {
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
returning(...columns) {
|
|
13
|
+
if (!columns)
|
|
14
|
+
return this;
|
|
15
|
+
// noinspection JSMismatchedCollectionQueryUpdate
|
|
16
|
+
this._returningColumns = columns.length ?
|
|
17
|
+
columns.reduce((a, v) => {
|
|
18
|
+
if (v)
|
|
19
|
+
a.push(new ReturningColumn_1.ReturningColumn(v));
|
|
20
|
+
return a;
|
|
21
|
+
}, []) : undefined;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
*/
|
|
27
|
+
__serializeReturning(ctx) {
|
|
28
|
+
if (!(this._returningColumns && this._returningColumns.length))
|
|
29
|
+
return '';
|
|
30
|
+
const arr = [];
|
|
31
|
+
ctx.returningFields = [];
|
|
32
|
+
for (const t of this._returningColumns) {
|
|
33
|
+
const s = t._serialize(ctx);
|
|
34
|
+
/* istanbul ignore else */
|
|
35
|
+
if (s)
|
|
36
|
+
arr.push(s);
|
|
37
|
+
}
|
|
38
|
+
return ctx.serialize(enums_1.SerializationType.RETURNING_BLOCK, arr, () => {
|
|
39
|
+
const s = (0, helpers_1.printArray)(arr);
|
|
40
|
+
return s ? 'returning ' + s : '';
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.ReturningQuery = ReturningQuery;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Query } from './Query';
|
|
2
|
+
import { RawStatement } from '../sql-objects/RawStatement';
|
|
3
|
+
import { SerializationType } from '../enums';
|
|
4
|
+
import { JoinStatement } from '../sql-objects/JoinStatement';
|
|
5
|
+
import { LogicalOperator } from '../sql-objects/operators/LogicalOperator';
|
|
6
|
+
import { GroupColumn } from '../sql-objects/GroupColumn';
|
|
7
|
+
import { OrderColumn } from '../sql-objects/OrderColumn';
|
|
8
|
+
import { Serializable } from '../Serializable';
|
|
9
|
+
import { SerializeContext } from '../SerializeContext';
|
|
10
|
+
export declare class SelectQuery extends Query {
|
|
11
|
+
_tables?: Serializable[];
|
|
12
|
+
_columns?: Serializable[];
|
|
13
|
+
_joins?: JoinStatement[];
|
|
14
|
+
_where?: LogicalOperator;
|
|
15
|
+
_groupBy?: (GroupColumn | RawStatement)[];
|
|
16
|
+
_orderBy?: (OrderColumn | RawStatement)[];
|
|
17
|
+
_limit?: number;
|
|
18
|
+
_offset?: number;
|
|
19
|
+
_alias?: string;
|
|
20
|
+
_distinct?: boolean;
|
|
21
|
+
constructor(...column: (string | string[] | Serializable)[]);
|
|
22
|
+
get _type(): SerializationType;
|
|
23
|
+
/**
|
|
24
|
+
* Adds columns to query.
|
|
25
|
+
*/
|
|
26
|
+
addColumn(...column: (string | string[] | Serializable)[]): this;
|
|
27
|
+
/**
|
|
28
|
+
* Defines "from" part of query.
|
|
29
|
+
*/
|
|
30
|
+
from(...table: (string | RawStatement | SelectQuery)[]): this;
|
|
31
|
+
/**
|
|
32
|
+
* Adds "join" statements to query
|
|
33
|
+
*/
|
|
34
|
+
join(...join: JoinStatement[]): this;
|
|
35
|
+
/**
|
|
36
|
+
* Defines "where" part of query
|
|
37
|
+
*/
|
|
38
|
+
where(...condition: (Serializable | Object)[]): this;
|
|
39
|
+
/**
|
|
40
|
+
* Defines "where" part of query
|
|
41
|
+
*/
|
|
42
|
+
groupBy(...field: (string | RawStatement)[]): this;
|
|
43
|
+
/**
|
|
44
|
+
* Defines "order by" part of query.
|
|
45
|
+
*/
|
|
46
|
+
orderBy(...field: (string | RawStatement)[]): this;
|
|
47
|
+
/**
|
|
48
|
+
* Sets alias for sub-select queries
|
|
49
|
+
*/
|
|
50
|
+
as(alias: any): this;
|
|
51
|
+
/**
|
|
52
|
+
* Sets limit for query
|
|
53
|
+
*/
|
|
54
|
+
limit(limit: number): this;
|
|
55
|
+
/**
|
|
56
|
+
* Sets offset for query
|
|
57
|
+
*/
|
|
58
|
+
offset(offset: number): this;
|
|
59
|
+
/**
|
|
60
|
+
* Enables distinct mode
|
|
61
|
+
*/
|
|
62
|
+
distinct(): this;
|
|
63
|
+
onFetch(listener: (...args: any[]) => void): this;
|
|
64
|
+
onceFetch(listener: (...args: any[]) => void): this;
|
|
65
|
+
/**
|
|
66
|
+
* Performs serialization
|
|
67
|
+
*/
|
|
68
|
+
_serialize(ctx: SerializeContext): string;
|
|
69
|
+
/**
|
|
70
|
+
*
|
|
71
|
+
*/
|
|
72
|
+
protected __serializeSelectColumns(ctx: SerializeContext): string;
|
|
73
|
+
/**
|
|
74
|
+
*
|
|
75
|
+
*/
|
|
76
|
+
protected __serializeFrom(ctx: SerializeContext): string;
|
|
77
|
+
/**
|
|
78
|
+
*
|
|
79
|
+
*/
|
|
80
|
+
protected __serializeJoins(ctx: SerializeContext): string;
|
|
81
|
+
/**
|
|
82
|
+
*
|
|
83
|
+
*/
|
|
84
|
+
protected __serializeWhere(ctx: SerializeContext): string;
|
|
85
|
+
/**
|
|
86
|
+
*
|
|
87
|
+
*/
|
|
88
|
+
protected __serializeGroupColumns(ctx: SerializeContext): string;
|
|
89
|
+
protected __serializeOrderColumns(ctx: SerializeContext): string;
|
|
90
|
+
}
|