@sqb/builder 4.20.6 → 4.21.0
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/package.json +8 -24
- package/{types/sql-objects → sql-objects}/join-statement.d.ts +4 -4
- package/{types/typeguards.d.ts → typeguards.d.ts} +4 -3
- package/{esm/typeguards.js → typeguards.js} +4 -4
- package/cjs/classes.ns.js +0 -41
- package/cjs/enums.js +0 -102
- package/cjs/extensions.js +0 -38
- package/cjs/helpers.js +0 -30
- package/cjs/index.js +0 -25
- package/cjs/op.initializers.js +0 -163
- package/cjs/package.json +0 -3
- package/cjs/query/delete-query.js +0 -57
- package/cjs/query/insert-query.js +0 -86
- package/cjs/query/query.js +0 -41
- package/cjs/query/returning-query.js +0 -46
- package/cjs/query/select-query.js +0 -297
- package/cjs/query/union-query.js +0 -32
- package/cjs/query/update-query.js +0 -86
- package/cjs/serializable.js +0 -6
- package/cjs/serialize-context.js +0 -203
- package/cjs/sql-objects/base-field.js +0 -11
- package/cjs/sql-objects/case-statement.js +0 -91
- package/cjs/sql-objects/coalesce-statement.js +0 -48
- package/cjs/sql-objects/count-statement.js +0 -37
- package/cjs/sql-objects/expression.js +0 -10
- package/cjs/sql-objects/field-expression.js +0 -54
- package/cjs/sql-objects/group-column.js +0 -36
- package/cjs/sql-objects/join-statement.js +0 -94
- package/cjs/sql-objects/lower-statement.js +0 -40
- package/cjs/sql-objects/max-statement.js +0 -40
- package/cjs/sql-objects/min-statement.js +0 -40
- package/cjs/sql-objects/operator.js +0 -7
- package/cjs/sql-objects/operators/comp-operator.js +0 -89
- package/cjs/sql-objects/operators/logical-operator.js +0 -86
- package/cjs/sql-objects/operators/op-and.js +0 -9
- package/cjs/sql-objects/operators/op-between.js +0 -40
- package/cjs/sql-objects/operators/op-eq.js +0 -13
- package/cjs/sql-objects/operators/op-exists.js +0 -31
- package/cjs/sql-objects/operators/op-gt.js +0 -13
- package/cjs/sql-objects/operators/op-gte.js +0 -13
- package/cjs/sql-objects/operators/op-ilike.js +0 -10
- package/cjs/sql-objects/operators/op-in.js +0 -19
- package/cjs/sql-objects/operators/op-is-not.js +0 -13
- package/cjs/sql-objects/operators/op-is.js +0 -13
- package/cjs/sql-objects/operators/op-like.js +0 -20
- package/cjs/sql-objects/operators/op-lt.js +0 -13
- package/cjs/sql-objects/operators/op-lte.js +0 -13
- package/cjs/sql-objects/operators/op-ne.js +0 -13
- package/cjs/sql-objects/operators/op-not-between.js +0 -10
- package/cjs/sql-objects/operators/op-not-exists.js +0 -10
- package/cjs/sql-objects/operators/op-not-ilike.js +0 -10
- package/cjs/sql-objects/operators/op-not-in.js +0 -10
- package/cjs/sql-objects/operators/op-not-like.js +0 -10
- package/cjs/sql-objects/operators/op-not.js +0 -21
- package/cjs/sql-objects/operators/op-or.js +0 -9
- package/cjs/sql-objects/order-column.js +0 -43
- package/cjs/sql-objects/param-expression.js +0 -56
- package/cjs/sql-objects/raw-statement.js +0 -19
- package/cjs/sql-objects/returning-column.js +0 -31
- package/cjs/sql-objects/sequence-getter-statement.js +0 -54
- package/cjs/sql-objects/string-agg-statement.js +0 -88
- package/cjs/sql-objects/table-name.js +0 -35
- package/cjs/sql-objects/upper-statement.js +0 -40
- package/cjs/sqlobject.initializers.js +0 -141
- package/cjs/typeguards.js +0 -85
- package/cjs/types.js +0 -2
- package/esm/package.json +0 -3
- package/types/index.d.cts +0 -20
- /package/{types/classes.ns.d.ts → classes.ns.d.ts} +0 -0
- /package/{esm/classes.ns.js → classes.ns.js} +0 -0
- /package/{types/enums.d.ts → enums.d.ts} +0 -0
- /package/{esm/enums.js → enums.js} +0 -0
- /package/{types/extensions.d.ts → extensions.d.ts} +0 -0
- /package/{esm/extensions.js → extensions.js} +0 -0
- /package/{types/helpers.d.ts → helpers.d.ts} +0 -0
- /package/{esm/helpers.js → helpers.js} +0 -0
- /package/{types/index.d.ts → index.d.ts} +0 -0
- /package/{esm/index.js → index.js} +0 -0
- /package/{types/op.initializers.d.ts → op.initializers.d.ts} +0 -0
- /package/{esm/op.initializers.js → op.initializers.js} +0 -0
- /package/{types/query → query}/delete-query.d.ts +0 -0
- /package/{esm/query → query}/delete-query.js +0 -0
- /package/{types/query → query}/insert-query.d.ts +0 -0
- /package/{esm/query → query}/insert-query.js +0 -0
- /package/{types/query → query}/query.d.ts +0 -0
- /package/{esm/query → query}/query.js +0 -0
- /package/{types/query → query}/returning-query.d.ts +0 -0
- /package/{esm/query → query}/returning-query.js +0 -0
- /package/{types/query → query}/select-query.d.ts +0 -0
- /package/{esm/query → query}/select-query.js +0 -0
- /package/{types/query → query}/union-query.d.ts +0 -0
- /package/{esm/query → query}/union-query.js +0 -0
- /package/{types/query → query}/update-query.d.ts +0 -0
- /package/{esm/query → query}/update-query.js +0 -0
- /package/{types/serializable.d.ts → serializable.d.ts} +0 -0
- /package/{esm/serializable.js → serializable.js} +0 -0
- /package/{types/serialize-context.d.ts → serialize-context.d.ts} +0 -0
- /package/{esm/serialize-context.js → serialize-context.js} +0 -0
- /package/{types/sql-objects → sql-objects}/base-field.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/base-field.js +0 -0
- /package/{types/sql-objects → sql-objects}/case-statement.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/case-statement.js +0 -0
- /package/{types/sql-objects → sql-objects}/coalesce-statement.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/coalesce-statement.js +0 -0
- /package/{types/sql-objects → sql-objects}/count-statement.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/count-statement.js +0 -0
- /package/{types/sql-objects → sql-objects}/expression.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/expression.js +0 -0
- /package/{types/sql-objects → sql-objects}/field-expression.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/field-expression.js +0 -0
- /package/{types/sql-objects → sql-objects}/group-column.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/group-column.js +0 -0
- /package/{esm/sql-objects → sql-objects}/join-statement.js +0 -0
- /package/{types/sql-objects → sql-objects}/lower-statement.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/lower-statement.js +0 -0
- /package/{types/sql-objects → sql-objects}/max-statement.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/max-statement.js +0 -0
- /package/{types/sql-objects → sql-objects}/min-statement.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/min-statement.js +0 -0
- /package/{types/sql-objects → sql-objects}/operator.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operator.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/comp-operator.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/comp-operator.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/logical-operator.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/logical-operator.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-and.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-and.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-between.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-between.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-eq.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-eq.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-exists.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-exists.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-gt.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-gt.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-gte.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-gte.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-ilike.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-ilike.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-in.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-in.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-is-not.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-is-not.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-is.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-is.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-like.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-like.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-lt.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-lt.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-lte.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-lte.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-ne.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-ne.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-not-between.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-not-between.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-not-exists.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-not-exists.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-not-ilike.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-not-ilike.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-not-in.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-not-in.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-not-like.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-not-like.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-not.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-not.js +0 -0
- /package/{types/sql-objects → sql-objects}/operators/op-or.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/operators/op-or.js +0 -0
- /package/{types/sql-objects → sql-objects}/order-column.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/order-column.js +0 -0
- /package/{types/sql-objects → sql-objects}/param-expression.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/param-expression.js +0 -0
- /package/{types/sql-objects → sql-objects}/raw-statement.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/raw-statement.js +0 -0
- /package/{types/sql-objects → sql-objects}/returning-column.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/returning-column.js +0 -0
- /package/{types/sql-objects → sql-objects}/sequence-getter-statement.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/sequence-getter-statement.js +0 -0
- /package/{types/sql-objects → sql-objects}/string-agg-statement.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/string-agg-statement.js +0 -0
- /package/{types/sql-objects → sql-objects}/table-name.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/table-name.js +0 -0
- /package/{types/sql-objects → sql-objects}/upper-statement.d.ts +0 -0
- /package/{esm/sql-objects → sql-objects}/upper-statement.js +0 -0
- /package/{types/sqlobject.initializers.d.ts → sqlobject.initializers.d.ts} +0 -0
- /package/{esm/sqlobject.initializers.js → sqlobject.initializers.js} +0 -0
- /package/{types/types.d.ts → types.d.ts} +0 -0
- /package/{esm/types.js → types.js} +0 -0
package/cjs/serialize-context.js
DELETED
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SerializeContext = void 0;
|
|
4
|
-
const enums_js_1 = require("./enums.js");
|
|
5
|
-
const extensions_js_1 = require("./extensions.js");
|
|
6
|
-
const serializable_js_1 = require("./serializable.js");
|
|
7
|
-
const typeguards_js_1 = require("./typeguards.js");
|
|
8
|
-
class SerializeContext {
|
|
9
|
-
reservedWords = [
|
|
10
|
-
'schema',
|
|
11
|
-
'table',
|
|
12
|
-
'field',
|
|
13
|
-
'index',
|
|
14
|
-
'foreign',
|
|
15
|
-
'key',
|
|
16
|
-
'select',
|
|
17
|
-
'insert',
|
|
18
|
-
'update',
|
|
19
|
-
'delete',
|
|
20
|
-
'with',
|
|
21
|
-
'merge',
|
|
22
|
-
'join',
|
|
23
|
-
'inner',
|
|
24
|
-
'outer',
|
|
25
|
-
'left',
|
|
26
|
-
'right',
|
|
27
|
-
'full',
|
|
28
|
-
'from',
|
|
29
|
-
'where',
|
|
30
|
-
'order',
|
|
31
|
-
'by',
|
|
32
|
-
'group',
|
|
33
|
-
'having',
|
|
34
|
-
'acs',
|
|
35
|
-
'ascending',
|
|
36
|
-
'dsc',
|
|
37
|
-
'descending',
|
|
38
|
-
'distinct',
|
|
39
|
-
'and',
|
|
40
|
-
'or',
|
|
41
|
-
'not',
|
|
42
|
-
'between',
|
|
43
|
-
'null',
|
|
44
|
-
'like',
|
|
45
|
-
'ilike',
|
|
46
|
-
'count',
|
|
47
|
-
'sum',
|
|
48
|
-
'average',
|
|
49
|
-
'avg',
|
|
50
|
-
'cascade',
|
|
51
|
-
'authorization',
|
|
52
|
-
'create',
|
|
53
|
-
'add',
|
|
54
|
-
'drop',
|
|
55
|
-
'alter',
|
|
56
|
-
'index',
|
|
57
|
-
'private',
|
|
58
|
-
'sequence',
|
|
59
|
-
'default',
|
|
60
|
-
'constraint',
|
|
61
|
-
'references',
|
|
62
|
-
'primary',
|
|
63
|
-
'foreign',
|
|
64
|
-
'user',
|
|
65
|
-
'password',
|
|
66
|
-
];
|
|
67
|
-
dialect;
|
|
68
|
-
prettyPrint;
|
|
69
|
-
params;
|
|
70
|
-
dialectVersion;
|
|
71
|
-
strictParams;
|
|
72
|
-
serializeHooks;
|
|
73
|
-
paramOptions;
|
|
74
|
-
preparedParams;
|
|
75
|
-
returningFields;
|
|
76
|
-
strictParamGenId;
|
|
77
|
-
constructor(opts) {
|
|
78
|
-
if (opts)
|
|
79
|
-
Object.assign(this, opts);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Performs a fallback mechanism, tries hook functions, extensions than default function to serialize
|
|
83
|
-
*/
|
|
84
|
-
serialize(type, o, fallback) {
|
|
85
|
-
if (this.serializeHooks) {
|
|
86
|
-
for (const hook of this.serializeHooks) {
|
|
87
|
-
const s = hook(this, type, o, fallback);
|
|
88
|
-
if (s != null)
|
|
89
|
-
return s;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
for (const ext of extensions_js_1.SerializerRegistry.items()) {
|
|
93
|
-
if (ext.dialect === this.dialect && ext.serialize) {
|
|
94
|
-
const s = ext.serialize(this, type, o, fallback);
|
|
95
|
-
if (s != null)
|
|
96
|
-
return s;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return fallback(this, o);
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Serializes object
|
|
103
|
-
*/
|
|
104
|
-
anyToSQL(v) {
|
|
105
|
-
if (v == null)
|
|
106
|
-
return 'null';
|
|
107
|
-
if (Array.isArray(v)) {
|
|
108
|
-
const vv = v.map(x => this.anyToSQL(x));
|
|
109
|
-
return (this.serialize(enums_js_1.SerializationType.ARRAY, vv, () => '(' + vv.join(',')) +
|
|
110
|
-
')');
|
|
111
|
-
}
|
|
112
|
-
if (typeof v === 'object') {
|
|
113
|
-
if ((0, typeguards_js_1.isSerializable)(v)) {
|
|
114
|
-
const s = v._serialize(this);
|
|
115
|
-
return s
|
|
116
|
-
? (0, typeguards_js_1.isQuery)(v) || (0, typeguards_js_1.isLogicalOperator)(v)
|
|
117
|
-
? '(' + s + ')'
|
|
118
|
-
: s
|
|
119
|
-
: /* istanbul ignore next */ '';
|
|
120
|
-
}
|
|
121
|
-
if (v instanceof Date) {
|
|
122
|
-
return this.serialize(enums_js_1.SerializationType.DATE_VALUE, v, () => this.dateToSQL(v));
|
|
123
|
-
}
|
|
124
|
-
return this.stringToSQL(JSON.stringify(v));
|
|
125
|
-
}
|
|
126
|
-
if (typeof v === 'string') {
|
|
127
|
-
return this.serialize(enums_js_1.SerializationType.STRING_VALUE, v, () => this.stringToSQL(v));
|
|
128
|
-
}
|
|
129
|
-
if (typeof v === 'boolean') {
|
|
130
|
-
return this.serialize(enums_js_1.SerializationType.BOOLEAN_VALUE, v, () => this.booleanToSQL(v));
|
|
131
|
-
}
|
|
132
|
-
if (typeof v === 'number') {
|
|
133
|
-
return this.serialize(enums_js_1.SerializationType.NUMBER_VALUE, v, () => this.numberToSQL(v));
|
|
134
|
-
}
|
|
135
|
-
if (v instanceof serializable_js_1.Serializable)
|
|
136
|
-
return v._serialize(this);
|
|
137
|
-
return v;
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
*
|
|
141
|
-
*/
|
|
142
|
-
stringToSQL(val) {
|
|
143
|
-
return "'" + String(val).replace(/'/g, "''") + "'";
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
*
|
|
147
|
-
*/
|
|
148
|
-
booleanToSQL(val) {
|
|
149
|
-
return val ? 'true' : 'false';
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
*
|
|
153
|
-
*/
|
|
154
|
-
numberToSQL(val) {
|
|
155
|
-
return '' + val;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
*
|
|
159
|
-
*/
|
|
160
|
-
dateToSQL(date) {
|
|
161
|
-
const d = date.getUTCDate();
|
|
162
|
-
const m = date.getUTCMonth() + 1;
|
|
163
|
-
const y = date.getUTCFullYear();
|
|
164
|
-
const h = date.getUTCHours();
|
|
165
|
-
const n = date.getUTCMinutes();
|
|
166
|
-
const s = date.getUTCSeconds();
|
|
167
|
-
let str = y + '-' + (m <= 9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
|
|
168
|
-
/* istanbul ignore else */
|
|
169
|
-
if (h + n + s)
|
|
170
|
-
str +=
|
|
171
|
-
' ' +
|
|
172
|
-
(h <= 9 ? '0' + h : h) +
|
|
173
|
-
':' +
|
|
174
|
-
(n <= 9 ? '0' + n : n) +
|
|
175
|
-
':' +
|
|
176
|
-
(s <= 9 ? '0' + s : s);
|
|
177
|
-
return "'" + str + "'";
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Check if a string value is a reserved word
|
|
181
|
-
*/
|
|
182
|
-
isReservedWord(s) {
|
|
183
|
-
if (!s)
|
|
184
|
-
return false;
|
|
185
|
-
if (this.reservedWords.includes(s.toLowerCase()))
|
|
186
|
-
return true;
|
|
187
|
-
for (const ext of extensions_js_1.SerializerRegistry.items()) {
|
|
188
|
-
if (ext.dialect === this.dialect && ext.isReservedWord) {
|
|
189
|
-
if (ext.isReservedWord(this, s))
|
|
190
|
-
return true;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
195
|
-
escapeReserved(s) {
|
|
196
|
-
if (!s)
|
|
197
|
-
return '';
|
|
198
|
-
if (this.isReservedWord(s))
|
|
199
|
-
return '"' + s + '"';
|
|
200
|
-
return s;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
exports.SerializeContext = SerializeContext;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseField = void 0;
|
|
4
|
-
const expression_js_1 = require("./expression.js");
|
|
5
|
-
class BaseField extends expression_js_1.Expression {
|
|
6
|
-
_field = '';
|
|
7
|
-
_schema;
|
|
8
|
-
_table;
|
|
9
|
-
_descending;
|
|
10
|
-
}
|
|
11
|
-
exports.BaseField = BaseField;
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CaseStatement = void 0;
|
|
4
|
-
const enums_js_1 = require("../enums.js");
|
|
5
|
-
const serializable_js_1 = require("../serializable.js");
|
|
6
|
-
const op_and_js_1 = require("./operators/op-and.js");
|
|
7
|
-
class CaseStatement extends serializable_js_1.Serializable {
|
|
8
|
-
_expressions;
|
|
9
|
-
_elseValue;
|
|
10
|
-
_condition;
|
|
11
|
-
_alias;
|
|
12
|
-
constructor() {
|
|
13
|
-
super();
|
|
14
|
-
this._expressions = [];
|
|
15
|
-
}
|
|
16
|
-
get _type() {
|
|
17
|
-
return enums_js_1.SerializationType.CASE_STATEMENT;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Defines "when" part of Case expression.
|
|
21
|
-
*/
|
|
22
|
-
when(...condition) {
|
|
23
|
-
if (condition.length)
|
|
24
|
-
this._condition = new op_and_js_1.OpAnd(...condition);
|
|
25
|
-
else
|
|
26
|
-
this._condition = undefined;
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Defines "then" part of Case expression.
|
|
31
|
-
*/
|
|
32
|
-
then(value) {
|
|
33
|
-
if (this._condition) {
|
|
34
|
-
this._expressions.push({
|
|
35
|
-
condition: this._condition,
|
|
36
|
-
value,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Defines "else" part of Case expression.
|
|
43
|
-
*/
|
|
44
|
-
else(value) {
|
|
45
|
-
this._elseValue = value;
|
|
46
|
-
return this;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Sets alias to case expression.
|
|
50
|
-
*/
|
|
51
|
-
as(alias) {
|
|
52
|
-
this._alias = alias;
|
|
53
|
-
return this;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Performs serialization
|
|
57
|
-
*
|
|
58
|
-
* @param {Object} ctx
|
|
59
|
-
* @return {string}
|
|
60
|
-
* @override
|
|
61
|
-
*/
|
|
62
|
-
_serialize(ctx) {
|
|
63
|
-
if (!this._expressions.length)
|
|
64
|
-
return '';
|
|
65
|
-
const q = {
|
|
66
|
-
expressions: [],
|
|
67
|
-
elseValue: this._elseValue !== undefined
|
|
68
|
-
? ctx.anyToSQL(this._elseValue)
|
|
69
|
-
: undefined,
|
|
70
|
-
};
|
|
71
|
-
for (const x of this._expressions) {
|
|
72
|
-
const o = {
|
|
73
|
-
condition: x.condition._serialize(ctx),
|
|
74
|
-
value: ctx.anyToSQL(x.value),
|
|
75
|
-
};
|
|
76
|
-
q.expressions.push(o);
|
|
77
|
-
}
|
|
78
|
-
return ctx.serialize(this._type, q, () => this.__defaultSerialize(ctx, q));
|
|
79
|
-
}
|
|
80
|
-
__defaultSerialize(ctx, o) {
|
|
81
|
-
let out = 'case\n\t';
|
|
82
|
-
for (const x of o.expressions) {
|
|
83
|
-
out += 'when ' + x.condition + ' then ' + x.value + '\n';
|
|
84
|
-
}
|
|
85
|
-
if (o.elseValue !== undefined)
|
|
86
|
-
out += 'else ' + o.elseValue + '\n';
|
|
87
|
-
out += '\bend' + (this._alias ? ' ' + this._alias : '');
|
|
88
|
-
return out;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
exports.CaseStatement = CaseStatement;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CoalesceStatement = void 0;
|
|
4
|
-
const enums_js_1 = require("../enums.js");
|
|
5
|
-
const serializable_js_1 = require("../serializable.js");
|
|
6
|
-
class CoalesceStatement extends serializable_js_1.Serializable {
|
|
7
|
-
_expressions;
|
|
8
|
-
_alias;
|
|
9
|
-
constructor(...expressions) {
|
|
10
|
-
super();
|
|
11
|
-
this._expressions = expressions;
|
|
12
|
-
}
|
|
13
|
-
get _type() {
|
|
14
|
-
return enums_js_1.SerializationType.COALESCE_STATEMENT;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Sets alias to case expression.
|
|
18
|
-
*/
|
|
19
|
-
as(alias) {
|
|
20
|
-
this._alias = alias;
|
|
21
|
-
return this;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Performs serialization
|
|
25
|
-
*
|
|
26
|
-
* @param {Object} ctx
|
|
27
|
-
* @return {string}
|
|
28
|
-
* @override
|
|
29
|
-
*/
|
|
30
|
-
_serialize(ctx) {
|
|
31
|
-
if (!this._expressions.length)
|
|
32
|
-
return '';
|
|
33
|
-
const q = {
|
|
34
|
-
expressions: [],
|
|
35
|
-
};
|
|
36
|
-
for (const x of this._expressions) {
|
|
37
|
-
q.expressions.push(ctx.anyToSQL(x));
|
|
38
|
-
}
|
|
39
|
-
return ctx.serialize(this._type, q, () => this.__defaultSerialize(ctx, q));
|
|
40
|
-
}
|
|
41
|
-
__defaultSerialize(ctx, o) {
|
|
42
|
-
return ('coalesce(' +
|
|
43
|
-
o.expressions.join(', ') +
|
|
44
|
-
')' +
|
|
45
|
-
(this._alias ? ' ' + this._alias : ''));
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
exports.CoalesceStatement = CoalesceStatement;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CountStatement = void 0;
|
|
4
|
-
const enums_js_1 = require("../enums.js");
|
|
5
|
-
const serializable_js_1 = require("../serializable.js");
|
|
6
|
-
class CountStatement extends serializable_js_1.Serializable {
|
|
7
|
-
_alias;
|
|
8
|
-
get _type() {
|
|
9
|
-
return enums_js_1.SerializationType.COUNT_STATEMENT;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Sets alias to case expression.
|
|
13
|
-
*/
|
|
14
|
-
as(alias) {
|
|
15
|
-
this._alias = alias;
|
|
16
|
-
return this;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Performs serialization
|
|
20
|
-
*
|
|
21
|
-
* @param {Object} ctx
|
|
22
|
-
* @return {string}
|
|
23
|
-
* @override
|
|
24
|
-
*/
|
|
25
|
-
_serialize(ctx) {
|
|
26
|
-
return ctx.serialize(this._type, undefined, () => this.__defaultSerialize(ctx, undefined));
|
|
27
|
-
}
|
|
28
|
-
// noinspection JSUnusedLocalSymbols
|
|
29
|
-
__defaultSerialize(
|
|
30
|
-
/* eslint-disable-next-line */
|
|
31
|
-
ctx,
|
|
32
|
-
/* eslint-disable-next-line */
|
|
33
|
-
o) {
|
|
34
|
-
return 'count(*)';
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
exports.CountStatement = CountStatement;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Expression = void 0;
|
|
4
|
-
const serializable_js_1 = require("../serializable.js");
|
|
5
|
-
class Expression extends serializable_js_1.Serializable {
|
|
6
|
-
_dataType;
|
|
7
|
-
_isArray;
|
|
8
|
-
_isDataSet;
|
|
9
|
-
}
|
|
10
|
-
exports.Expression = Expression;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FieldExpression = void 0;
|
|
4
|
-
const enums_js_1 = require("../enums.js");
|
|
5
|
-
const base_field_js_1 = require("./base-field.js");
|
|
6
|
-
const TABLE_COLUMN_PATTERN = /^((?:[a-zA-Z_][\w$_]*\.){0,2}) *([0-9a-zA-Z_][\w$_]*|\*) *(?:as)? *([a-zA-Z_][\w$_]*)?$/;
|
|
7
|
-
class FieldExpression extends base_field_js_1.BaseField {
|
|
8
|
-
_alias;
|
|
9
|
-
constructor(arg0, arg1, arg2) {
|
|
10
|
-
super();
|
|
11
|
-
let expression;
|
|
12
|
-
if (typeof arg0 === 'object') {
|
|
13
|
-
expression = arg0.expression;
|
|
14
|
-
this._dataType = arg0.dataType;
|
|
15
|
-
this._isArray = arg0.isArray;
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
expression = arg0;
|
|
19
|
-
this._dataType = arg1;
|
|
20
|
-
this._isArray = arg2;
|
|
21
|
-
}
|
|
22
|
-
const m = expression?.match(TABLE_COLUMN_PATTERN);
|
|
23
|
-
if (!m)
|
|
24
|
-
throw new TypeError(`"${expression}" does not match table column format`);
|
|
25
|
-
this._field = m[2];
|
|
26
|
-
if (m[1]) {
|
|
27
|
-
const a = m[1].split(/\./g);
|
|
28
|
-
a.pop();
|
|
29
|
-
this._table = a.pop();
|
|
30
|
-
this._schema = a.pop();
|
|
31
|
-
}
|
|
32
|
-
this._alias = this._field !== '*' ? m[3] : '';
|
|
33
|
-
}
|
|
34
|
-
get _type() {
|
|
35
|
-
return enums_js_1.SerializationType.FIELD_NAME;
|
|
36
|
-
}
|
|
37
|
-
_serialize(ctx) {
|
|
38
|
-
const o = {
|
|
39
|
-
schema: this._schema,
|
|
40
|
-
table: this._table,
|
|
41
|
-
field: this._field,
|
|
42
|
-
alias: this._alias,
|
|
43
|
-
isReservedWord: !!(this._field && ctx.isReservedWord(this._field)),
|
|
44
|
-
};
|
|
45
|
-
return ctx.serialize(this._type, o, () => {
|
|
46
|
-
const prefix = ctx.escapeReserved(this._schema ? this._schema + '.' : '') +
|
|
47
|
-
(this._table ? this._table + '.' : '');
|
|
48
|
-
return (prefix +
|
|
49
|
-
(!prefix && o.isReservedWord ? '"' + this._field + '"' : this._field) +
|
|
50
|
-
(this._alias ? ' as ' + this._alias : ''));
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
exports.FieldExpression = FieldExpression;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GroupColumn = void 0;
|
|
4
|
-
const enums_js_1 = require("../enums.js");
|
|
5
|
-
const base_field_js_1 = require("./base-field.js");
|
|
6
|
-
const GROUP_COLUMN_PATTERN = /^((?:[a-zA-Z][\w$]*\.){0,2})([\w$]*)$/;
|
|
7
|
-
class GroupColumn extends base_field_js_1.BaseField {
|
|
8
|
-
constructor(value) {
|
|
9
|
-
super();
|
|
10
|
-
const m = value.match(GROUP_COLUMN_PATTERN);
|
|
11
|
-
if (!m)
|
|
12
|
-
throw new TypeError(`"${value}" does not match group column format`);
|
|
13
|
-
this._field = m[2];
|
|
14
|
-
if (m[1]) {
|
|
15
|
-
const a = m[1].split(/\./g);
|
|
16
|
-
a.pop();
|
|
17
|
-
this._table = a.pop();
|
|
18
|
-
this._schema = a.pop();
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
get _type() {
|
|
22
|
-
return enums_js_1.SerializationType.GROUP_COLUMN;
|
|
23
|
-
}
|
|
24
|
-
_serialize(ctx) {
|
|
25
|
-
const o = {
|
|
26
|
-
schema: this._schema,
|
|
27
|
-
table: this._table,
|
|
28
|
-
field: this._field,
|
|
29
|
-
isReservedWord: !!(this._field && ctx.isReservedWord(this._field)),
|
|
30
|
-
};
|
|
31
|
-
return ctx.serialize(this._type, o, () => (this._schema ? this._schema + '.' : '') +
|
|
32
|
-
(this._table ? this._table + '.' : '') +
|
|
33
|
-
(o.isReservedWord ? '"' + this._field + '"' : this._field));
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.GroupColumn = GroupColumn;
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JoinStatement = void 0;
|
|
4
|
-
const enums_js_1 = require("../enums.js");
|
|
5
|
-
const serializable_js_1 = require("../serializable.js");
|
|
6
|
-
const typeguards_js_1 = require("../typeguards.js");
|
|
7
|
-
const op_and_js_1 = require("./operators/op-and.js");
|
|
8
|
-
const table_name_js_1 = require("./table-name.js");
|
|
9
|
-
class JoinStatement extends serializable_js_1.Serializable {
|
|
10
|
-
_joinType;
|
|
11
|
-
_table;
|
|
12
|
-
_conditions = new op_and_js_1.OpAnd();
|
|
13
|
-
constructor(joinType, table) {
|
|
14
|
-
super();
|
|
15
|
-
// noinspection SuspiciousTypeOfGuard
|
|
16
|
-
if (!((0, typeguards_js_1.isSelectQuery)(table) ||
|
|
17
|
-
(0, typeguards_js_1.isRawStatement)(table) ||
|
|
18
|
-
(0, typeguards_js_1.isTableName)(table) ||
|
|
19
|
-
typeof table === 'string')) {
|
|
20
|
-
throw new TypeError('Table name, select query or raw object required for Join');
|
|
21
|
-
}
|
|
22
|
-
this._joinType = joinType;
|
|
23
|
-
this._table = typeof table === 'string' ? new table_name_js_1.TableName(table) : table;
|
|
24
|
-
}
|
|
25
|
-
get _type() {
|
|
26
|
-
return enums_js_1.SerializationType.JOIN;
|
|
27
|
-
}
|
|
28
|
-
on(...conditions) {
|
|
29
|
-
this._conditions.add(...conditions);
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
|
-
_serialize(ctx) {
|
|
33
|
-
const o = {
|
|
34
|
-
joinType: this._joinType,
|
|
35
|
-
table: this._table._serialize(ctx),
|
|
36
|
-
conditions: this.__serializeConditions(ctx, this),
|
|
37
|
-
};
|
|
38
|
-
return ctx.serialize(this._type, o, () => {
|
|
39
|
-
let out;
|
|
40
|
-
switch (this._joinType) {
|
|
41
|
-
case enums_js_1.JoinType.LEFT:
|
|
42
|
-
out = 'left join';
|
|
43
|
-
break;
|
|
44
|
-
case enums_js_1.JoinType.LEFT_OUTER:
|
|
45
|
-
out = 'left outer join';
|
|
46
|
-
break;
|
|
47
|
-
case enums_js_1.JoinType.RIGHT:
|
|
48
|
-
out = 'right join';
|
|
49
|
-
break;
|
|
50
|
-
case enums_js_1.JoinType.RIGHT_OUTER:
|
|
51
|
-
out = 'right outer join';
|
|
52
|
-
break;
|
|
53
|
-
case enums_js_1.JoinType.OUTER:
|
|
54
|
-
out = 'outer join';
|
|
55
|
-
break;
|
|
56
|
-
case enums_js_1.JoinType.FULL_OUTER:
|
|
57
|
-
out = 'full outer join';
|
|
58
|
-
break;
|
|
59
|
-
case enums_js_1.JoinType.CROSS:
|
|
60
|
-
out = 'cross join';
|
|
61
|
-
break;
|
|
62
|
-
default:
|
|
63
|
-
out = 'inner join';
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
const lf = o.table.length > 40;
|
|
67
|
-
if ((0, typeguards_js_1.isSelectQuery)(this._table)) {
|
|
68
|
-
const alias = this._table._alias;
|
|
69
|
-
if (!alias)
|
|
70
|
-
throw new Error('Alias required for sub-select in Join');
|
|
71
|
-
out +=
|
|
72
|
-
' (' +
|
|
73
|
-
(lf ? '\n\t' : '') +
|
|
74
|
-
o.table +
|
|
75
|
-
(lf ? '\n\b' : '') +
|
|
76
|
-
') ' +
|
|
77
|
-
alias;
|
|
78
|
-
}
|
|
79
|
-
else
|
|
80
|
-
out += ' ' + o.table;
|
|
81
|
-
if (o.conditions)
|
|
82
|
-
out += ' ' + o.conditions;
|
|
83
|
-
return out + (lf ? '\b' : '');
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
__serializeConditions(ctx, join) {
|
|
87
|
-
if (join._conditions._items.length) {
|
|
88
|
-
const s = join._conditions._serialize(ctx);
|
|
89
|
-
return ctx.serialize(enums_js_1.SerializationType.JOIN_CONDITIONS, s, () => s ? 'on ' + s : '');
|
|
90
|
-
}
|
|
91
|
-
return '';
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
exports.JoinStatement = JoinStatement;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LowerStatement = void 0;
|
|
4
|
-
const enums_js_1 = require("../enums.js");
|
|
5
|
-
const serializable_js_1 = require("../serializable.js");
|
|
6
|
-
class LowerStatement extends serializable_js_1.Serializable {
|
|
7
|
-
_expression;
|
|
8
|
-
_alias;
|
|
9
|
-
constructor(expression) {
|
|
10
|
-
super();
|
|
11
|
-
this._expression = expression;
|
|
12
|
-
}
|
|
13
|
-
get _type() {
|
|
14
|
-
return enums_js_1.SerializationType.LOWER_STATEMENT;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Sets alias to case expression.
|
|
18
|
-
*/
|
|
19
|
-
as(alias) {
|
|
20
|
-
this._alias = alias;
|
|
21
|
-
return this;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Performs serialization
|
|
25
|
-
*
|
|
26
|
-
* @param {Object} ctx
|
|
27
|
-
* @return {string}
|
|
28
|
-
* @override
|
|
29
|
-
*/
|
|
30
|
-
_serialize(ctx) {
|
|
31
|
-
if (!this._expression)
|
|
32
|
-
return '';
|
|
33
|
-
const q = ctx.anyToSQL(this._expression);
|
|
34
|
-
return ctx.serialize(this._type, q, () => this.__defaultSerialize(ctx, q));
|
|
35
|
-
}
|
|
36
|
-
__defaultSerialize(ctx, o) {
|
|
37
|
-
return 'lower(' + o + ')' + (this._alias ? ' ' + this._alias : '');
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.LowerStatement = LowerStatement;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MaxStatement = void 0;
|
|
4
|
-
const enums_js_1 = require("../enums.js");
|
|
5
|
-
const serializable_js_1 = require("../serializable.js");
|
|
6
|
-
class MaxStatement extends serializable_js_1.Serializable {
|
|
7
|
-
_expression;
|
|
8
|
-
_alias;
|
|
9
|
-
constructor(expression) {
|
|
10
|
-
super();
|
|
11
|
-
this._expression = expression;
|
|
12
|
-
}
|
|
13
|
-
get _type() {
|
|
14
|
-
return enums_js_1.SerializationType.MAX_STATEMENT;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Sets alias to case expression.
|
|
18
|
-
*/
|
|
19
|
-
as(alias) {
|
|
20
|
-
this._alias = alias;
|
|
21
|
-
return this;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Performs serialization
|
|
25
|
-
*
|
|
26
|
-
* @param {Object} ctx
|
|
27
|
-
* @return {string}
|
|
28
|
-
* @override
|
|
29
|
-
*/
|
|
30
|
-
_serialize(ctx) {
|
|
31
|
-
if (!this._expression)
|
|
32
|
-
return '';
|
|
33
|
-
const q = ctx.anyToSQL(this._expression);
|
|
34
|
-
return ctx.serialize(this._type, q, () => this.__defaultSerialize(ctx, q));
|
|
35
|
-
}
|
|
36
|
-
__defaultSerialize(ctx, o) {
|
|
37
|
-
return 'max(' + o + ')' + (this._alias ? ' ' + this._alias : '');
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.MaxStatement = MaxStatement;
|