@jantokic/chtype 0.1.0 → 0.3.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/dist/client/client.d.ts +2 -0
- package/dist/client/client.d.ts.map +1 -1
- package/dist/client/client.js +11 -0
- package/dist/client/client.js.map +1 -1
- package/dist/codegen/generator.d.ts.map +1 -1
- package/dist/codegen/generator.js +2 -1
- package/dist/codegen/generator.js.map +1 -1
- package/dist/codegen/type-mapper.d.ts +7 -0
- package/dist/codegen/type-mapper.d.ts.map +1 -1
- package/dist/codegen/type-mapper.js +9 -3
- package/dist/codegen/type-mapper.js.map +1 -1
- package/dist/query/compile-utils.d.ts +37 -0
- package/dist/query/compile-utils.d.ts.map +1 -0
- package/dist/query/compile-utils.js +59 -0
- package/dist/query/compile-utils.js.map +1 -0
- package/dist/query/delete-builder.d.ts +24 -0
- package/dist/query/delete-builder.d.ts.map +1 -0
- package/dist/query/delete-builder.js +56 -0
- package/dist/query/delete-builder.js.map +1 -0
- package/dist/query/expressions.d.ts +65 -0
- package/dist/query/expressions.d.ts.map +1 -1
- package/dist/query/expressions.js +193 -0
- package/dist/query/expressions.js.map +1 -1
- package/dist/query/index.d.ts +5 -3
- package/dist/query/index.d.ts.map +1 -1
- package/dist/query/index.js +4 -2
- package/dist/query/index.js.map +1 -1
- package/dist/query/query-builder.d.ts +10 -2
- package/dist/query/query-builder.d.ts.map +1 -1
- package/dist/query/query-builder.js +12 -1
- package/dist/query/query-builder.js.map +1 -1
- package/dist/query/select-builder.d.ts +55 -3
- package/dist/query/select-builder.d.ts.map +1 -1
- package/dist/query/select-builder.js +129 -35
- package/dist/query/select-builder.js.map +1 -1
- package/dist/query/types.d.ts +6 -2
- package/dist/query/types.d.ts.map +1 -1
- package/dist/query/update-builder.d.ts +27 -0
- package/dist/query/update-builder.d.ts.map +1 -0
- package/dist/query/update-builder.js +72 -0
- package/dist/query/update-builder.js.map +1 -0
- package/package.json +4 -4
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Param } from './param.js';
|
|
1
2
|
/** Represents a raw SQL expression with an optional alias. */
|
|
2
3
|
export class Expression {
|
|
3
4
|
sql;
|
|
@@ -13,6 +14,50 @@ export class Expression {
|
|
|
13
14
|
return this.alias ? `${this.sql} AS ${this.alias}` : this.sql;
|
|
14
15
|
}
|
|
15
16
|
}
|
|
17
|
+
/** An expression that carries param references for registration during compile. */
|
|
18
|
+
export class ConditionGroup extends Expression {
|
|
19
|
+
params;
|
|
20
|
+
constructor(conditions, operator) {
|
|
21
|
+
const params = [];
|
|
22
|
+
const parts = conditions.map((c) => {
|
|
23
|
+
if (c instanceof ConditionGroup) {
|
|
24
|
+
params.push(...c.params);
|
|
25
|
+
return c.sql;
|
|
26
|
+
}
|
|
27
|
+
if (c instanceof Expression) {
|
|
28
|
+
return c.sql;
|
|
29
|
+
}
|
|
30
|
+
const [col, op, val] = c;
|
|
31
|
+
if (val instanceof ConditionGroup) {
|
|
32
|
+
params.push(...val.params);
|
|
33
|
+
return `${col} ${op} ${val.sql}`;
|
|
34
|
+
}
|
|
35
|
+
if (val instanceof Param) {
|
|
36
|
+
params.push(val);
|
|
37
|
+
return `${col} ${op} ${val.toString()}`;
|
|
38
|
+
}
|
|
39
|
+
return `${col} ${op} ${val.sql}`;
|
|
40
|
+
});
|
|
41
|
+
super(`(${parts.join(` ${operator} `)})`);
|
|
42
|
+
this.params = params;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** Group conditions with OR. */
|
|
46
|
+
export function or(...conditions) {
|
|
47
|
+
return new ConditionGroup(conditions, 'OR');
|
|
48
|
+
}
|
|
49
|
+
/** Group conditions with AND. */
|
|
50
|
+
export function and(...conditions) {
|
|
51
|
+
return new ConditionGroup(conditions, 'AND');
|
|
52
|
+
}
|
|
53
|
+
/** A subquery expression — wraps a compiled SELECT in parentheses and carries its params. */
|
|
54
|
+
export class Subquery extends Expression {
|
|
55
|
+
subqueryParams;
|
|
56
|
+
constructor(compiled) {
|
|
57
|
+
super(`(${compiled.sql})`);
|
|
58
|
+
this.subqueryParams = compiled.params;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
16
61
|
/** ClickHouse function builders. */
|
|
17
62
|
export const fn = {
|
|
18
63
|
argMax(column, versionColumn) {
|
|
@@ -57,6 +102,154 @@ export const fn = {
|
|
|
57
102
|
toStartOfHour(column) {
|
|
58
103
|
return new Expression(`toStartOfHour(${column})`);
|
|
59
104
|
},
|
|
105
|
+
// --- Array functions ---
|
|
106
|
+
arrayMap(lambda, column) {
|
|
107
|
+
return new Expression(`arrayMap(${lambda}, ${column})`);
|
|
108
|
+
},
|
|
109
|
+
arrayFilter(lambda, column) {
|
|
110
|
+
return new Expression(`arrayFilter(${lambda}, ${column})`);
|
|
111
|
+
},
|
|
112
|
+
arrayExists(lambda, column) {
|
|
113
|
+
return new Expression(`arrayExists(${lambda}, ${column})`);
|
|
114
|
+
},
|
|
115
|
+
arrayAll(lambda, column) {
|
|
116
|
+
return new Expression(`arrayAll(${lambda}, ${column})`);
|
|
117
|
+
},
|
|
118
|
+
arraySort(column) {
|
|
119
|
+
return new Expression(`arraySort(${column})`);
|
|
120
|
+
},
|
|
121
|
+
arrayReverse(column) {
|
|
122
|
+
return new Expression(`arrayReverse(${column})`);
|
|
123
|
+
},
|
|
124
|
+
arrayDistinct(column) {
|
|
125
|
+
return new Expression(`arrayDistinct(${column})`);
|
|
126
|
+
},
|
|
127
|
+
arrayFlatten(column) {
|
|
128
|
+
return new Expression(`arrayFlatten(${column})`);
|
|
129
|
+
},
|
|
130
|
+
arrayConcat(...columns) {
|
|
131
|
+
return new Expression(`arrayConcat(${columns.join(', ')})`);
|
|
132
|
+
},
|
|
133
|
+
arraySlice(column, offset, length) {
|
|
134
|
+
const args = length !== undefined ? `${column}, ${offset}, ${length}` : `${column}, ${offset}`;
|
|
135
|
+
return new Expression(`arraySlice(${args})`);
|
|
136
|
+
},
|
|
137
|
+
length(column) {
|
|
138
|
+
return new Expression(`length(${column})`);
|
|
139
|
+
},
|
|
140
|
+
has(column, element) {
|
|
141
|
+
return new Expression(`has(${column}, ${element})`);
|
|
142
|
+
},
|
|
143
|
+
indexOf(column, element) {
|
|
144
|
+
return new Expression(`indexOf(${column}, ${element})`);
|
|
145
|
+
},
|
|
146
|
+
// --- Map functions ---
|
|
147
|
+
mapKeys(column) {
|
|
148
|
+
return new Expression(`mapKeys(${column})`);
|
|
149
|
+
},
|
|
150
|
+
mapValues(column) {
|
|
151
|
+
return new Expression(`mapValues(${column})`);
|
|
152
|
+
},
|
|
153
|
+
mapContains(column, key) {
|
|
154
|
+
return new Expression(`mapContains(${column}, ${key})`);
|
|
155
|
+
},
|
|
156
|
+
// --- Tuple functions ---
|
|
157
|
+
tupleElement(column, index) {
|
|
158
|
+
return new Expression(`tupleElement(${column}, ${index})`);
|
|
159
|
+
},
|
|
160
|
+
// --- Date/time functions ---
|
|
161
|
+
toStartOfWeek(column) {
|
|
162
|
+
return new Expression(`toStartOfWeek(${column})`);
|
|
163
|
+
},
|
|
164
|
+
toStartOfMonth(column) {
|
|
165
|
+
return new Expression(`toStartOfMonth(${column})`);
|
|
166
|
+
},
|
|
167
|
+
toStartOfYear(column) {
|
|
168
|
+
return new Expression(`toStartOfYear(${column})`);
|
|
169
|
+
},
|
|
170
|
+
toStartOfMinute(column) {
|
|
171
|
+
return new Expression(`toStartOfMinute(${column})`);
|
|
172
|
+
},
|
|
173
|
+
toDate(column) {
|
|
174
|
+
return new Expression(`toDate(${column})`);
|
|
175
|
+
},
|
|
176
|
+
toDateTime(column) {
|
|
177
|
+
return new Expression(`toDateTime(${column})`);
|
|
178
|
+
},
|
|
179
|
+
now() {
|
|
180
|
+
return new Expression('now()');
|
|
181
|
+
},
|
|
182
|
+
today() {
|
|
183
|
+
return new Expression('today()');
|
|
184
|
+
},
|
|
185
|
+
dateDiff(unit, start, end) {
|
|
186
|
+
return new Expression(`dateDiff('${unit}', ${start}, ${end})`);
|
|
187
|
+
},
|
|
188
|
+
// --- String functions ---
|
|
189
|
+
lower(column) {
|
|
190
|
+
return new Expression(`lower(${column})`);
|
|
191
|
+
},
|
|
192
|
+
upper(column) {
|
|
193
|
+
return new Expression(`upper(${column})`);
|
|
194
|
+
},
|
|
195
|
+
trim(column) {
|
|
196
|
+
return new Expression(`trimBoth(${column})`);
|
|
197
|
+
},
|
|
198
|
+
concat(...columns) {
|
|
199
|
+
return new Expression(`concat(${columns.join(', ')})`);
|
|
200
|
+
},
|
|
201
|
+
substring(column, offset, length) {
|
|
202
|
+
const args = length !== undefined ? `${column}, ${offset}, ${length}` : `${column}, ${offset}`;
|
|
203
|
+
return new Expression(`substring(${args})`);
|
|
204
|
+
},
|
|
205
|
+
// --- Conditional ---
|
|
206
|
+
if_(condition, then, else_) {
|
|
207
|
+
return new Expression(`if(${condition}, ${then}, ${else_})`);
|
|
208
|
+
},
|
|
209
|
+
multiIf(...args) {
|
|
210
|
+
return new Expression(`multiIf(${args.join(', ')})`);
|
|
211
|
+
},
|
|
212
|
+
coalesce(...columns) {
|
|
213
|
+
return new Expression(`coalesce(${columns.join(', ')})`);
|
|
214
|
+
},
|
|
215
|
+
// --- Type conversion ---
|
|
216
|
+
toUInt32(column) {
|
|
217
|
+
return new Expression(`toUInt32(${column})`);
|
|
218
|
+
},
|
|
219
|
+
toUInt64(column) {
|
|
220
|
+
return new Expression(`toUInt64(${column})`);
|
|
221
|
+
},
|
|
222
|
+
toInt32(column) {
|
|
223
|
+
return new Expression(`toInt32(${column})`);
|
|
224
|
+
},
|
|
225
|
+
toFloat64(column) {
|
|
226
|
+
return new Expression(`toFloat64(${column})`);
|
|
227
|
+
},
|
|
228
|
+
toString_(column) {
|
|
229
|
+
return new Expression(`toString(${column})`);
|
|
230
|
+
},
|
|
231
|
+
// --- Aggregate (additional) ---
|
|
232
|
+
quantile(level, column) {
|
|
233
|
+
return new Expression(`quantile(${level})(${column})`);
|
|
234
|
+
},
|
|
235
|
+
median(column) {
|
|
236
|
+
return new Expression(`median(${column})`);
|
|
237
|
+
},
|
|
238
|
+
any(column) {
|
|
239
|
+
return new Expression(`any(${column})`);
|
|
240
|
+
},
|
|
241
|
+
anyLast(column) {
|
|
242
|
+
return new Expression(`anyLast(${column})`);
|
|
243
|
+
},
|
|
244
|
+
sumIf(column, condition) {
|
|
245
|
+
return new Expression(`sumIf(${column}, ${condition})`);
|
|
246
|
+
},
|
|
247
|
+
countIf(condition) {
|
|
248
|
+
return new Expression(`countIf(${condition})`);
|
|
249
|
+
},
|
|
250
|
+
avgIf(column, condition) {
|
|
251
|
+
return new Expression(`avgIf(${column}, ${condition})`);
|
|
252
|
+
},
|
|
60
253
|
/** Raw SQL expression — escape hatch for anything not covered. */
|
|
61
254
|
raw(sql) {
|
|
62
255
|
return new Expression(sql);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../src/query/expressions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"expressions.js","sourceRoot":"","sources":["../../src/query/expressions.ts"],"names":[],"mappings":"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"}
|
package/dist/query/index.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export { createQueryBuilder, type QueryBuilder } from './query-builder.js';
|
|
2
|
-
export { SelectBuilder } from './select-builder.js';
|
|
2
|
+
export { SelectBuilder, unionAll, unionDistinct, intersect, except, setOperation } from './select-builder.js';
|
|
3
3
|
export { InsertBuilder } from './insert-builder.js';
|
|
4
|
-
export {
|
|
4
|
+
export { DeleteBuilder } from './delete-builder.js';
|
|
5
|
+
export { UpdateBuilder } from './update-builder.js';
|
|
6
|
+
export { Expression, ConditionGroup, Subquery, fn, or, and } from './expressions.js';
|
|
5
7
|
export { Param, param, type ClickHouseParamType } from './param.js';
|
|
6
|
-
export type { DatabaseSchema, TableName, RowType, InsertType, ColumnName, CompiledQuery, SortDirection, ComparisonOp, SetOp, WhereOp, JoinType, } from './types.js';
|
|
8
|
+
export type { DatabaseSchema, TableName, RowType, InsertType, ColumnName, CompiledQuery, SortDirection, ComparisonOp, SetOp, UnaryOp, BetweenOp, WhereOp, JoinType, } from './types.js';
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACpE,YAAY,EACV,cAAc,EACd,SAAS,EACT,OAAO,EACP,UAAU,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,KAAK,EACL,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,GACT,MAAM,YAAY,CAAC"}
|
package/dist/query/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { createQueryBuilder } from './query-builder.js';
|
|
2
|
-
export { SelectBuilder } from './select-builder.js';
|
|
2
|
+
export { SelectBuilder, unionAll, unionDistinct, intersect, except, setOperation } from './select-builder.js';
|
|
3
3
|
export { InsertBuilder } from './insert-builder.js';
|
|
4
|
-
export {
|
|
4
|
+
export { DeleteBuilder } from './delete-builder.js';
|
|
5
|
+
export { UpdateBuilder } from './update-builder.js';
|
|
6
|
+
export { Expression, ConditionGroup, Subquery, fn, or, and } from './expressions.js';
|
|
5
7
|
export { Param, param } from './param.js';
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
package/dist/query/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAqB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,KAAK,EAA4B,MAAM,YAAY,CAAC"}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
import type { DatabaseSchema, TableName } from './types.js';
|
|
1
|
+
import type { CompiledQuery, DatabaseSchema, TableName } from './types.js';
|
|
2
2
|
import { type ClickHouseParamType, Param } from './param.js';
|
|
3
3
|
import { SelectBuilder } from './select-builder.js';
|
|
4
4
|
import { InsertBuilder } from './insert-builder.js';
|
|
5
|
-
import {
|
|
5
|
+
import { DeleteBuilder } from './delete-builder.js';
|
|
6
|
+
import { UpdateBuilder } from './update-builder.js';
|
|
7
|
+
import { fn, Subquery } from './expressions.js';
|
|
6
8
|
export interface QueryBuilder<DB extends DatabaseSchema> {
|
|
7
9
|
selectFrom<T extends TableName<DB>>(table: T): SelectBuilder<DB, T>;
|
|
8
10
|
insertInto<T extends TableName<DB>>(table: T): InsertBuilder<DB, T>;
|
|
11
|
+
deleteFrom<T extends TableName<DB>>(table: T): DeleteBuilder<DB, T>;
|
|
12
|
+
update<T extends TableName<DB>>(table: T): UpdateBuilder<DB, T>;
|
|
9
13
|
param(name: string, type: ClickHouseParamType): Param;
|
|
14
|
+
/** Wrap a compiled query as a subquery expression for use in WHERE IN / NOT IN. */
|
|
15
|
+
subquery(builder: {
|
|
16
|
+
compile(): CompiledQuery;
|
|
17
|
+
}): Subquery;
|
|
10
18
|
fn: typeof fn;
|
|
11
19
|
}
|
|
12
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/query/query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/query/query-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,WAAW,YAAY,CAAC,EAAE,SAAS,cAAc;IACrD,UAAU,CAAC,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpE,UAAU,CAAC,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpE,UAAU,CAAC,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAChE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,KAAK,CAAC;IACtD,mFAAmF;IACnF,QAAQ,CAAC,OAAO,EAAE;QAAE,OAAO,IAAI,aAAa,CAAA;KAAE,GAAG,QAAQ,CAAC;IAC1D,EAAE,EAAE,OAAO,EAAE,CAAC;CACf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,cAAc,KAAK,YAAY,CAAC,EAAE,CAAC,CAsBhF"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Param } from './param.js';
|
|
2
2
|
import { SelectBuilder } from './select-builder.js';
|
|
3
3
|
import { InsertBuilder } from './insert-builder.js';
|
|
4
|
-
import {
|
|
4
|
+
import { DeleteBuilder } from './delete-builder.js';
|
|
5
|
+
import { UpdateBuilder } from './update-builder.js';
|
|
6
|
+
import { fn, Subquery } from './expressions.js';
|
|
5
7
|
/**
|
|
6
8
|
* Create a type-safe query builder for your ClickHouse database.
|
|
7
9
|
*
|
|
@@ -27,9 +29,18 @@ export function createQueryBuilder() {
|
|
|
27
29
|
insertInto(table) {
|
|
28
30
|
return new InsertBuilder(table);
|
|
29
31
|
},
|
|
32
|
+
deleteFrom(table) {
|
|
33
|
+
return new DeleteBuilder(table);
|
|
34
|
+
},
|
|
35
|
+
update(table) {
|
|
36
|
+
return new UpdateBuilder(table);
|
|
37
|
+
},
|
|
30
38
|
param(name, type) {
|
|
31
39
|
return new Param(name, type);
|
|
32
40
|
},
|
|
41
|
+
subquery(builder) {
|
|
42
|
+
return new Subquery(builder.compile());
|
|
43
|
+
},
|
|
33
44
|
fn,
|
|
34
45
|
};
|
|
35
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/query/query-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/query/query-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAahD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,UAAU,CAA0B,KAAQ;YAC1C,OAAO,IAAI,aAAa,CAAQ,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,UAAU,CAA0B,KAAQ;YAC1C,OAAO,IAAI,aAAa,CAAQ,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,UAAU,CAA0B,KAAQ;YAC1C,OAAO,IAAI,aAAa,CAAQ,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,CAA0B,KAAQ;YACtC,OAAO,IAAI,aAAa,CAAQ,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,KAAK,CAAC,IAAY,EAAE,IAAyB;YAC3C,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;QACD,QAAQ,CAAC,OAAqC;YAC5C,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,EAAE;KACH,CAAC;AACJ,CAAC"}
|
|
@@ -5,14 +5,17 @@
|
|
|
5
5
|
* literals are NOT allowed to prevent SQL injection. Use `qb.param()` to create
|
|
6
6
|
* typed parameter placeholders.
|
|
7
7
|
*/
|
|
8
|
-
import type { ColumnName, CompiledQuery, ComparisonOp, DatabaseSchema, JoinType, SetOp, SortDirection, TableName } from './types.js';
|
|
9
|
-
import { Expression } from './expressions.js';
|
|
8
|
+
import type { BetweenOp, ColumnName, CompiledQuery, ComparisonOp, DatabaseSchema, JoinType, SetOp, SortDirection, TableName, UnaryOp } from './types.js';
|
|
9
|
+
import { Expression, Subquery } from './expressions.js';
|
|
10
10
|
import { Param } from './param.js';
|
|
11
11
|
export declare class SelectBuilder<DB extends DatabaseSchema, T extends TableName<DB> = TableName<DB>, TSelected extends string = string> {
|
|
12
12
|
private _table;
|
|
13
13
|
private _tableAlias?;
|
|
14
14
|
private _columns;
|
|
15
|
+
private _distinct;
|
|
16
|
+
private _ctes;
|
|
15
17
|
private _wheres;
|
|
18
|
+
private _prewheres;
|
|
16
19
|
private _joins;
|
|
17
20
|
private _groupBy;
|
|
18
21
|
private _havings;
|
|
@@ -20,15 +23,35 @@ export declare class SelectBuilder<DB extends DatabaseSchema, T extends TableNam
|
|
|
20
23
|
private _limit;
|
|
21
24
|
private _offset;
|
|
22
25
|
private _final;
|
|
26
|
+
private _sample;
|
|
27
|
+
private _sampleOffset;
|
|
23
28
|
private _settings;
|
|
24
29
|
constructor(table: T);
|
|
25
30
|
/** Alias the main table (useful with JOINs). */
|
|
26
31
|
as(alias: string): this;
|
|
32
|
+
/** Add DISTINCT to the SELECT clause. */
|
|
33
|
+
distinct(): this;
|
|
34
|
+
/** Add a WITH (CTE) clause. The subquery is compiled and prepended to the query. */
|
|
35
|
+
with(name: string, subquery: Subquery | {
|
|
36
|
+
compile(): CompiledQuery;
|
|
37
|
+
}): this;
|
|
38
|
+
/** Add a PREWHERE condition (ClickHouse-specific optimization, applied before data is read from disk). */
|
|
39
|
+
prewhere(column: ColumnName<DB, T> | Expression | string, op: ComparisonOp, value: Param | Expression): this;
|
|
40
|
+
prewhere(column: ColumnName<DB, T> | Expression | string, op: SetOp, value: Param | Expression): this;
|
|
41
|
+
prewhere(column: ColumnName<DB, T> | Expression | string, op: UnaryOp): this;
|
|
42
|
+
prewhere(column: ColumnName<DB, T> | Expression | string, op: BetweenOp, value: [Param | Expression, Param | Expression]): this;
|
|
43
|
+
prewhere(condition: Expression): this;
|
|
27
44
|
select<C extends ColumnName<DB, T>>(columns: (C | Expression)[]): SelectBuilder<DB, T, C>;
|
|
28
45
|
/** Add a WHERE condition. Values must be Param or Expression — no raw strings. */
|
|
29
46
|
where(column: ColumnName<DB, T> | Expression | string, op: ComparisonOp, value: Param | Expression): this;
|
|
30
47
|
/** Add a WHERE IN / NOT IN condition. Value must be an Array(...) Param. */
|
|
31
48
|
where(column: ColumnName<DB, T> | Expression | string, op: SetOp, value: Param | Expression): this;
|
|
49
|
+
/** Add a WHERE IS NULL / IS NOT NULL condition (no value). */
|
|
50
|
+
where(column: ColumnName<DB, T> | Expression | string, op: UnaryOp): this;
|
|
51
|
+
/** Add a WHERE BETWEEN condition with a [low, high] range. */
|
|
52
|
+
where(column: ColumnName<DB, T> | Expression | string, op: BetweenOp, value: [Param | Expression, Param | Expression]): this;
|
|
53
|
+
/** Add a pre-built condition group (from `or()` / `and()`). */
|
|
54
|
+
where(condition: Expression): this;
|
|
32
55
|
/**
|
|
33
56
|
* Add a JOIN clause.
|
|
34
57
|
*
|
|
@@ -52,13 +75,42 @@ export declare class SelectBuilder<DB extends DatabaseSchema, T extends TableNam
|
|
|
52
75
|
anyLeftJoin(table: string, alias: string | undefined, onLeft: string, onRight: string): this;
|
|
53
76
|
groupBy(...columns: (ColumnName<DB, T> | Expression | string)[]): this;
|
|
54
77
|
having(column: string | Expression, op: ComparisonOp, value: Param | Expression): this;
|
|
78
|
+
having(condition: Expression): this;
|
|
55
79
|
orderBy(column: ColumnName<DB, T> | Expression | string, direction?: SortDirection): this;
|
|
56
80
|
limit(n: number | Param): this;
|
|
57
81
|
offset(n: number | Param): this;
|
|
58
82
|
/** Add the FINAL modifier (use sparingly — only for debug/audit). */
|
|
59
83
|
final(): this;
|
|
60
|
-
/**
|
|
84
|
+
/**
|
|
85
|
+
* Add SAMPLE clause (ClickHouse-specific approximate query optimization).
|
|
86
|
+
* @param ratio — fraction (0-1) or absolute row count (>= 1)
|
|
87
|
+
* @param offset — optional OFFSET for reproducible sampling (0-1)
|
|
88
|
+
*/
|
|
89
|
+
sample(ratio: number, offset?: number): this;
|
|
90
|
+
/** Add SETTINGS clause. Keys and string values are validated to prevent injection. */
|
|
61
91
|
settings(s: Record<string, string | number | boolean>): this;
|
|
62
92
|
compile(): CompiledQuery;
|
|
63
93
|
}
|
|
94
|
+
type SetOperator = 'UNION ALL' | 'UNION DISTINCT' | 'INTERSECT' | 'EXCEPT';
|
|
95
|
+
/** Combine multiple SELECT queries with a set operator (UNION ALL, UNION DISTINCT, INTERSECT, EXCEPT). */
|
|
96
|
+
export declare function setOperation(operator: SetOperator, ...queries: {
|
|
97
|
+
compile(): CompiledQuery;
|
|
98
|
+
}[]): CompiledQuery;
|
|
99
|
+
/** Shorthand for UNION ALL. */
|
|
100
|
+
export declare function unionAll(...queries: {
|
|
101
|
+
compile(): CompiledQuery;
|
|
102
|
+
}[]): CompiledQuery;
|
|
103
|
+
/** Shorthand for UNION DISTINCT. */
|
|
104
|
+
export declare function unionDistinct(...queries: {
|
|
105
|
+
compile(): CompiledQuery;
|
|
106
|
+
}[]): CompiledQuery;
|
|
107
|
+
/** Shorthand for INTERSECT. */
|
|
108
|
+
export declare function intersect(...queries: {
|
|
109
|
+
compile(): CompiledQuery;
|
|
110
|
+
}[]): CompiledQuery;
|
|
111
|
+
/** Shorthand for EXCEPT. */
|
|
112
|
+
export declare function except(...queries: {
|
|
113
|
+
compile(): CompiledQuery;
|
|
114
|
+
}[]): CompiledQuery;
|
|
115
|
+
export {};
|
|
64
116
|
//# sourceMappingURL=select-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-builder.d.ts","sourceRoot":"","sources":["../../src/query/select-builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,KAAK,EACL,aAAa,EACb,SAAS,
|
|
1
|
+
{"version":3,"file":"select-builder.d.ts","sourceRoot":"","sources":["../../src/query/select-builder.ts"],"names":[],"mappings":"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"}
|