@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
package/dist/client/client.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ import type { CompiledQuery, DatabaseSchema, InsertType, TableName } from '../qu
|
|
|
8
8
|
export interface ChtypeClient<DB extends DatabaseSchema> {
|
|
9
9
|
/** Execute a compiled query and return typed rows. */
|
|
10
10
|
execute<T = Record<string, unknown>>(query: CompiledQuery): Promise<T[]>;
|
|
11
|
+
/** Execute a compiled query and return a typed async iterable for streaming large result sets. */
|
|
12
|
+
stream<T = Record<string, unknown>>(query: CompiledQuery): AsyncIterable<T[]>;
|
|
11
13
|
/** Execute a raw SQL query with optional parameters. */
|
|
12
14
|
query<T = Record<string, unknown>>(sql: string, params?: Record<string, unknown>): Promise<T[]>;
|
|
13
15
|
/** Insert rows into a table. Type-checked against the table's Insert type. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,gBAAgB,IAAI,UAAU,EACnC,KAAK,6BAA6B,EAEnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9F,MAAM,WAAW,YAAY,CAAC,EAAE,SAAS,cAAc;IACrD,sDAAsD;IACtD,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAEzE,wDAAwD;IACxD,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAEhG,8EAA8E;IAC9E,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpF;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,cAAc,EACpD,OAAO,EAAE,6BAA6B,GACrC,YAAY,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,gBAAgB,IAAI,UAAU,EACnC,KAAK,6BAA6B,EAEnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9F,MAAM,WAAW,YAAY,CAAC,EAAE,SAAS,cAAc;IACrD,sDAAsD;IACtD,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAEzE,kGAAkG;IAClG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,aAAa,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAE9E,wDAAwD;IACxD,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAEhG,8EAA8E;IAC9E,MAAM,CAAC,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpF;;;;;;OAMG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,EAAE,SAAS,cAAc,EACpD,OAAO,EAAE,6BAA6B,GACrC,YAAY,CAAC,EAAE,CAAC,CA0DlB"}
|
package/dist/client/client.js
CHANGED
|
@@ -29,6 +29,17 @@ export function createClient(options) {
|
|
|
29
29
|
});
|
|
30
30
|
return result.json();
|
|
31
31
|
},
|
|
32
|
+
async *stream(query) {
|
|
33
|
+
const result = await client.query({
|
|
34
|
+
query: query.sql,
|
|
35
|
+
query_params: query.params,
|
|
36
|
+
format: 'JSONEachRow',
|
|
37
|
+
});
|
|
38
|
+
const stream = result.stream();
|
|
39
|
+
for await (const rows of stream) {
|
|
40
|
+
yield rows.map((row) => row.json());
|
|
41
|
+
}
|
|
42
|
+
},
|
|
32
43
|
async query(sql, params) {
|
|
33
44
|
const result = await client.query({
|
|
34
45
|
query: sql,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGL,YAAY,IAAI,gBAAgB,GACjC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGL,YAAY,IAAI,gBAAgB,GACjC,MAAM,oBAAoB,CAAC;AA6B5B;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAsC;IAEtC,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEzC,OAAO;QACL,KAAK,CAAC,OAAO,CAA8B,KAAoB;YAC7D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;gBAChC,KAAK,EAAE,KAAK,CAAC,GAAG;gBAChB,YAAY,EAAE,KAAK,CAAC,MAAM;gBAC1B,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,EAAK,CAAC;QAC1B,CAAC;QAED,KAAK,CAAC,CAAC,MAAM,CAA8B,KAAoB;YAC7D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;gBAChC,KAAK,EAAE,KAAK,CAAC,GAAG;gBAChB,YAAY,EAAE,KAAK,CAAC,MAAM;gBAC1B,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAK,CAAC;YAClC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,KAAK,CACT,GAAW,EACX,MAAgC;YAEhC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;gBAChC,KAAK,EAAE,GAAG;gBACV,YAAY,EAAE,MAAM;gBACpB,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,IAAI,EAAK,CAAC;QAC1B,CAAC;QAED,KAAK,CAAC,MAAM,CAA0B,KAAQ,EAAE,IAAyB;YACvE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC9B,MAAM,MAAM,CAAC,MAAM,CAAC;gBAClB,KAAK,EAAE,KAAe;gBACtB,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,aAAa;aACtB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,GAAW;YACvB,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,CAAC,KAAK;YACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,GAAG;YACL,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/codegen/generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAsB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAqB,MAAM,kBAAkB,CAAC;AAE7E,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/codegen/generator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAsB,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAqB,MAAM,kBAAkB,CAAC;AAE7E,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgFD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAqBvF"}
|
|
@@ -57,8 +57,9 @@ function generateInsertInterface(table, options) {
|
|
|
57
57
|
const insertableColumns = table.columns.filter((col) => col.defaultKind !== 'MATERIALIZED' && col.defaultKind !== 'ALIAS');
|
|
58
58
|
if (insertableColumns.length === 0)
|
|
59
59
|
return '';
|
|
60
|
+
const insertOptions = { ...options, insertCoerce: true };
|
|
60
61
|
const fields = insertableColumns.map((col) => {
|
|
61
|
-
const tsType = mapClickHouseType(col.type,
|
|
62
|
+
const tsType = mapClickHouseType(col.type, insertOptions);
|
|
62
63
|
const optional = col.defaultKind === 'DEFAULT' ? '?' : '';
|
|
63
64
|
const comment = col.comment ? ` /** ${col.comment} */\n` : '';
|
|
64
65
|
return `${comment} ${quoteProperty(col.name)}${optional}: ${tsType};`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/codegen/generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/codegen/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,13 @@
|
|
|
7
7
|
export interface TypeMapperOptions {
|
|
8
8
|
/** Map UInt64/Int64/UInt128/Int128/UInt256/Int256 to bigint instead of string */
|
|
9
9
|
bigints?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Emit coercible union types for Insert interfaces.
|
|
12
|
+
* ClickHouse auto-coerces number values for Decimal, DateTime, DateTime64,
|
|
13
|
+
* Date, Date32, UInt64/Int64/etc. columns. When true, these map to
|
|
14
|
+
* `number | string` instead of just `string`.
|
|
15
|
+
*/
|
|
16
|
+
insertCoerce?: boolean;
|
|
10
17
|
}
|
|
11
18
|
export declare function mapClickHouseType(chType: string, options?: TypeMapperOptions): string;
|
|
12
19
|
/** Find the index of the first top-level comma (not inside parentheses). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-mapper.d.ts","sourceRoot":"","sources":["../../src/codegen/type-mapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"type-mapper.d.ts","sourceRoot":"","sources":["../../src/codegen/type-mapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA+BD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CAiEzF;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAcjD"}
|
|
@@ -74,13 +74,19 @@ export function mapClickHouseType(chType, options = {}) {
|
|
|
74
74
|
return mapClickHouseType(aggMatch[1], options);
|
|
75
75
|
}
|
|
76
76
|
if (t.startsWith('Decimal'))
|
|
77
|
-
return 'string';
|
|
77
|
+
return options.insertCoerce ? 'number | string' : 'string';
|
|
78
78
|
if (t.startsWith('DateTime64'))
|
|
79
|
-
return 'string';
|
|
79
|
+
return options.insertCoerce ? 'number | string' : 'string';
|
|
80
80
|
if (t.startsWith('FixedString'))
|
|
81
81
|
return 'string';
|
|
82
82
|
if (LARGE_INT_TYPES.has(t)) {
|
|
83
|
-
|
|
83
|
+
if (options.bigints)
|
|
84
|
+
return options.insertCoerce ? 'number | bigint' : 'bigint';
|
|
85
|
+
return options.insertCoerce ? 'number | string' : 'string';
|
|
86
|
+
}
|
|
87
|
+
// DateTime and Date scalars — accept unix timestamps on insert
|
|
88
|
+
if (options.insertCoerce && (t === 'DateTime' || t === 'Date' || t === 'Date32')) {
|
|
89
|
+
return 'number | string';
|
|
84
90
|
}
|
|
85
91
|
return SCALAR_MAP[t] ?? 'unknown';
|
|
86
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-mapper.js","sourceRoot":"","sources":["../../src/codegen/type-mapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"type-mapper.js","sourceRoot":"","sources":["../../src/codegen/type-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared compilation utilities for SELECT, DELETE, and UPDATE builders.
|
|
3
|
+
*/
|
|
4
|
+
import type { BetweenOp, ComparisonOp, SetOp, UnaryOp } from './types.js';
|
|
5
|
+
import { Expression } from './expressions.js';
|
|
6
|
+
import { Param } from './param.js';
|
|
7
|
+
export type WhereClause = {
|
|
8
|
+
kind: 'comparison';
|
|
9
|
+
column: string;
|
|
10
|
+
op: ComparisonOp | SetOp;
|
|
11
|
+
value: Param | Expression;
|
|
12
|
+
} | {
|
|
13
|
+
kind: 'unary';
|
|
14
|
+
column: string;
|
|
15
|
+
op: UnaryOp;
|
|
16
|
+
} | {
|
|
17
|
+
kind: 'between';
|
|
18
|
+
column: string;
|
|
19
|
+
op: BetweenOp;
|
|
20
|
+
low: Param | Expression;
|
|
21
|
+
high: Param | Expression;
|
|
22
|
+
} | {
|
|
23
|
+
kind: 'expression';
|
|
24
|
+
expr: Expression;
|
|
25
|
+
};
|
|
26
|
+
export interface CompileContext {
|
|
27
|
+
params: Record<string, unknown>;
|
|
28
|
+
/** Param names that came from subqueries/CTEs (external sources). */
|
|
29
|
+
externalParams: Set<string>;
|
|
30
|
+
}
|
|
31
|
+
export declare function createCompileContext(): CompileContext;
|
|
32
|
+
export declare function mergeParams(ctx: CompileContext, source: Record<string, unknown>): void;
|
|
33
|
+
export declare function renderValue(value: number | Param | Expression, ctx: CompileContext): string;
|
|
34
|
+
export declare function renderWhereClause(w: WhereClause, ctx: CompileContext): string;
|
|
35
|
+
/** Valid SQL identifier pattern (settings keys, CTE names, cluster names, column names). */
|
|
36
|
+
export declare const VALID_IDENTIFIER: RegExp;
|
|
37
|
+
//# sourceMappingURL=compile-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-utils.d.ts","sourceRoot":"","sources":["../../src/query/compile-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAkB,UAAU,EAAY,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,YAAY,GAAG,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;CAAE,GAC3F;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,KAAK,GAAG,UAAU,CAAC;IAAC,IAAI,EAAE,KAAK,GAAG,UAAU,CAAA;CAAE,GACrG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,qEAAqE;IACrE,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAQtF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,CAiB3F;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,CAoB7E;AAED,4FAA4F;AAC5F,eAAO,MAAM,gBAAgB,QAA6B,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared compilation utilities for SELECT, DELETE, and UPDATE builders.
|
|
3
|
+
*/
|
|
4
|
+
import { ConditionGroup, Expression, Subquery } from './expressions.js';
|
|
5
|
+
import { Param } from './param.js';
|
|
6
|
+
export function createCompileContext() {
|
|
7
|
+
return { params: {}, externalParams: new Set() };
|
|
8
|
+
}
|
|
9
|
+
export function mergeParams(ctx, source) {
|
|
10
|
+
for (const key of Object.keys(source)) {
|
|
11
|
+
if (key in ctx.params) {
|
|
12
|
+
throw new Error(`Param name collision: "${key}" is used in both the subquery/CTE and outer query`);
|
|
13
|
+
}
|
|
14
|
+
ctx.params[key] = source[key];
|
|
15
|
+
ctx.externalParams.add(key);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function renderValue(value, ctx) {
|
|
19
|
+
if (value instanceof Subquery) {
|
|
20
|
+
mergeParams(ctx, value.subqueryParams);
|
|
21
|
+
return value.sql;
|
|
22
|
+
}
|
|
23
|
+
if (value instanceof Param) {
|
|
24
|
+
if (ctx.externalParams.has(value.name)) {
|
|
25
|
+
throw new Error(`Param name collision: "${value.name}" is used in both the subquery/CTE and outer query`);
|
|
26
|
+
}
|
|
27
|
+
ctx.params[value.name] = undefined;
|
|
28
|
+
return value.toString();
|
|
29
|
+
}
|
|
30
|
+
if (value instanceof Expression) {
|
|
31
|
+
return value.sql;
|
|
32
|
+
}
|
|
33
|
+
// Only numbers reach here (from limit/offset)
|
|
34
|
+
return String(value);
|
|
35
|
+
}
|
|
36
|
+
export function renderWhereClause(w, ctx) {
|
|
37
|
+
switch (w.kind) {
|
|
38
|
+
case 'comparison':
|
|
39
|
+
return `${w.column} ${w.op} ${renderValue(w.value, ctx)}`;
|
|
40
|
+
case 'unary':
|
|
41
|
+
return `${w.column} ${w.op}`;
|
|
42
|
+
case 'between':
|
|
43
|
+
return `${w.column} ${w.op} ${renderValue(w.low, ctx)} AND ${renderValue(w.high, ctx)}`;
|
|
44
|
+
case 'expression': {
|
|
45
|
+
if (w.expr instanceof ConditionGroup) {
|
|
46
|
+
for (const p of w.expr.params) {
|
|
47
|
+
if (ctx.externalParams.has(p.name)) {
|
|
48
|
+
throw new Error(`Param name collision: "${p.name}" is used in both the subquery/CTE and outer query`);
|
|
49
|
+
}
|
|
50
|
+
ctx.params[p.name] = undefined;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return w.expr.sql;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** Valid SQL identifier pattern (settings keys, CTE names, cluster names, column names). */
|
|
58
|
+
export const VALID_IDENTIFIER = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
59
|
+
//# sourceMappingURL=compile-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-utils.js","sourceRoot":"","sources":["../../src/query/compile-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe DELETE builder for ClickHouse.
|
|
3
|
+
*
|
|
4
|
+
* ClickHouse uses ALTER TABLE ... DELETE WHERE syntax.
|
|
5
|
+
* All values in WHERE must be Param or Expression — no raw strings.
|
|
6
|
+
*/
|
|
7
|
+
import type { BetweenOp, ColumnName, CompiledQuery, ComparisonOp, DatabaseSchema, SetOp, TableName, UnaryOp } from './types.js';
|
|
8
|
+
import { Expression } from './expressions.js';
|
|
9
|
+
import { Param } from './param.js';
|
|
10
|
+
export declare class DeleteBuilder<DB extends DatabaseSchema, T extends TableName<DB> = TableName<DB>> {
|
|
11
|
+
private _table;
|
|
12
|
+
private _cluster?;
|
|
13
|
+
private _wheres;
|
|
14
|
+
constructor(table: T);
|
|
15
|
+
/** Specify the cluster for distributed deletes: ALTER TABLE ... ON CLUSTER ... */
|
|
16
|
+
onCluster(cluster: string): this;
|
|
17
|
+
where(column: ColumnName<DB, T> | Expression | string, op: ComparisonOp, value: Param | Expression): this;
|
|
18
|
+
where(column: ColumnName<DB, T> | Expression | string, op: SetOp, value: Param | Expression): this;
|
|
19
|
+
where(column: ColumnName<DB, T> | Expression | string, op: UnaryOp): this;
|
|
20
|
+
where(column: ColumnName<DB, T> | Expression | string, op: BetweenOp, value: [Param | Expression, Param | Expression]): this;
|
|
21
|
+
where(condition: Expression): this;
|
|
22
|
+
compile(): CompiledQuery;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=delete-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-builder.d.ts","sourceRoot":"","sources":["../../src/query/delete-builder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,KAAK,EACL,SAAS,EACT,OAAO,EAER,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAQnC,qBAAa,aAAa,CACxB,EAAE,SAAS,cAAc,EACzB,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC;IAEvC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAqB;gBAExB,KAAK,EAAE,CAAC;IAIpB,kFAAkF;IAClF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQhC,KAAK,CACH,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,GAAG,MAAM,EAC/C,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,KAAK,GAAG,UAAU,GACxB,IAAI;IACP,KAAK,CACH,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,GAAG,MAAM,EAC/C,EAAE,EAAE,KAAK,EACT,KAAK,EAAE,KAAK,GAAG,UAAU,GACxB,IAAI;IACP,KAAK,CACH,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,GAAG,MAAM,EAC/C,EAAE,EAAE,OAAO,GACV,IAAI;IACP,KAAK,CACH,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,GAAG,MAAM,EAC/C,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,CAAC,KAAK,GAAG,UAAU,EAAE,KAAK,GAAG,UAAU,CAAC,GAC9C,IAAI;IACP,KAAK,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI;IAUlC,OAAO,IAAI,aAAa;CAazB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe DELETE builder for ClickHouse.
|
|
3
|
+
*
|
|
4
|
+
* ClickHouse uses ALTER TABLE ... DELETE WHERE syntax.
|
|
5
|
+
* All values in WHERE must be Param or Expression — no raw strings.
|
|
6
|
+
*/
|
|
7
|
+
import { Expression } from './expressions.js';
|
|
8
|
+
import { createCompileContext, renderWhereClause, VALID_IDENTIFIER, } from './compile-utils.js';
|
|
9
|
+
export class DeleteBuilder {
|
|
10
|
+
_table;
|
|
11
|
+
_cluster;
|
|
12
|
+
_wheres = [];
|
|
13
|
+
constructor(table) {
|
|
14
|
+
this._table = table;
|
|
15
|
+
}
|
|
16
|
+
/** Specify the cluster for distributed deletes: ALTER TABLE ... ON CLUSTER ... */
|
|
17
|
+
onCluster(cluster) {
|
|
18
|
+
if (!VALID_IDENTIFIER.test(cluster)) {
|
|
19
|
+
throw new Error(`Invalid cluster name: "${cluster}"`);
|
|
20
|
+
}
|
|
21
|
+
this._cluster = cluster;
|
|
22
|
+
return this;
|
|
23
|
+
}
|
|
24
|
+
where(columnOrCondition, op, value) {
|
|
25
|
+
this._wheres.push(buildWhereClause(columnOrCondition, op, value));
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
compile() {
|
|
29
|
+
if (this._wheres.length === 0) {
|
|
30
|
+
throw new Error('DELETE requires at least one WHERE condition');
|
|
31
|
+
}
|
|
32
|
+
const ctx = createCompileContext();
|
|
33
|
+
const table = this._table;
|
|
34
|
+
const clusterClause = this._cluster ? ` ON CLUSTER ${this._cluster}` : '';
|
|
35
|
+
const conditions = this._wheres.map((w) => renderWhereClause(w, ctx));
|
|
36
|
+
const sql = `ALTER TABLE ${table}${clusterClause} DELETE WHERE ${conditions.join(' AND ')}`;
|
|
37
|
+
return { sql, params: ctx.params };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function buildWhereClause(columnOrCondition, op, value) {
|
|
41
|
+
if (columnOrCondition instanceof Expression && op === undefined) {
|
|
42
|
+
return { kind: 'expression', expr: columnOrCondition };
|
|
43
|
+
}
|
|
44
|
+
const col = columnOrCondition instanceof Expression ? columnOrCondition.sql : columnOrCondition;
|
|
45
|
+
if (op === 'IS NULL' || op === 'IS NOT NULL') {
|
|
46
|
+
return { kind: 'unary', column: col, op };
|
|
47
|
+
}
|
|
48
|
+
if (op === 'BETWEEN' || op === 'NOT BETWEEN') {
|
|
49
|
+
if (!Array.isArray(value) || value.length < 2) {
|
|
50
|
+
throw new Error(`${op} requires a [low, high] tuple`);
|
|
51
|
+
}
|
|
52
|
+
return { kind: 'between', column: col, op, low: value[0], high: value[1] };
|
|
53
|
+
}
|
|
54
|
+
return { kind: 'comparison', column: col, op: op, value: value };
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=delete-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-builder.js","sourceRoot":"","sources":["../../src/query/delete-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { CompiledQuery } from './types.js';
|
|
2
|
+
import { Param } from './param.js';
|
|
1
3
|
/** Represents a raw SQL expression with an optional alias. */
|
|
2
4
|
export declare class Expression {
|
|
3
5
|
readonly sql: string;
|
|
@@ -6,6 +8,22 @@ export declare class Expression {
|
|
|
6
8
|
as(alias: string): Expression;
|
|
7
9
|
toString(): string;
|
|
8
10
|
}
|
|
11
|
+
/** A condition tuple: [column, operator, value]. */
|
|
12
|
+
type ConditionTuple = [column: string, op: string, value: Param | Expression];
|
|
13
|
+
/** An expression that carries param references for registration during compile. */
|
|
14
|
+
export declare class ConditionGroup extends Expression {
|
|
15
|
+
readonly params: Param[];
|
|
16
|
+
constructor(conditions: (ConditionTuple | Expression)[], operator: 'AND' | 'OR');
|
|
17
|
+
}
|
|
18
|
+
/** Group conditions with OR. */
|
|
19
|
+
export declare function or(...conditions: (ConditionTuple | Expression)[]): ConditionGroup;
|
|
20
|
+
/** Group conditions with AND. */
|
|
21
|
+
export declare function and(...conditions: (ConditionTuple | Expression)[]): ConditionGroup;
|
|
22
|
+
/** A subquery expression — wraps a compiled SELECT in parentheses and carries its params. */
|
|
23
|
+
export declare class Subquery extends Expression {
|
|
24
|
+
readonly subqueryParams: Record<string, unknown>;
|
|
25
|
+
constructor(compiled: CompiledQuery);
|
|
26
|
+
}
|
|
9
27
|
/** ClickHouse function builders. */
|
|
10
28
|
export declare const fn: {
|
|
11
29
|
argMax(column: string, versionColumn: string): Expression;
|
|
@@ -22,7 +40,54 @@ export declare const fn: {
|
|
|
22
40
|
uniqExact(column: string): Expression;
|
|
23
41
|
toStartOfDay(column: string): Expression;
|
|
24
42
|
toStartOfHour(column: string): Expression;
|
|
43
|
+
arrayMap(lambda: string, column: string): Expression;
|
|
44
|
+
arrayFilter(lambda: string, column: string): Expression;
|
|
45
|
+
arrayExists(lambda: string, column: string): Expression;
|
|
46
|
+
arrayAll(lambda: string, column: string): Expression;
|
|
47
|
+
arraySort(column: string): Expression;
|
|
48
|
+
arrayReverse(column: string): Expression;
|
|
49
|
+
arrayDistinct(column: string): Expression;
|
|
50
|
+
arrayFlatten(column: string): Expression;
|
|
51
|
+
arrayConcat(...columns: string[]): Expression;
|
|
52
|
+
arraySlice(column: string, offset: number, length?: number): Expression;
|
|
53
|
+
length(column: string): Expression;
|
|
54
|
+
has(column: string, element: string): Expression;
|
|
55
|
+
indexOf(column: string, element: string): Expression;
|
|
56
|
+
mapKeys(column: string): Expression;
|
|
57
|
+
mapValues(column: string): Expression;
|
|
58
|
+
mapContains(column: string, key: string): Expression;
|
|
59
|
+
tupleElement(column: string, index: number): Expression;
|
|
60
|
+
toStartOfWeek(column: string): Expression;
|
|
61
|
+
toStartOfMonth(column: string): Expression;
|
|
62
|
+
toStartOfYear(column: string): Expression;
|
|
63
|
+
toStartOfMinute(column: string): Expression;
|
|
64
|
+
toDate(column: string): Expression;
|
|
65
|
+
toDateTime(column: string): Expression;
|
|
66
|
+
now(): Expression;
|
|
67
|
+
today(): Expression;
|
|
68
|
+
dateDiff(unit: string, start: string, end: string): Expression;
|
|
69
|
+
lower(column: string): Expression;
|
|
70
|
+
upper(column: string): Expression;
|
|
71
|
+
trim(column: string): Expression;
|
|
72
|
+
concat(...columns: string[]): Expression;
|
|
73
|
+
substring(column: string, offset: number, length?: number): Expression;
|
|
74
|
+
if_(condition: string, then: string, else_: string): Expression;
|
|
75
|
+
multiIf(...args: string[]): Expression;
|
|
76
|
+
coalesce(...columns: string[]): Expression;
|
|
77
|
+
toUInt32(column: string): Expression;
|
|
78
|
+
toUInt64(column: string): Expression;
|
|
79
|
+
toInt32(column: string): Expression;
|
|
80
|
+
toFloat64(column: string): Expression;
|
|
81
|
+
toString_(column: string): Expression;
|
|
82
|
+
quantile(level: number, column: string): Expression;
|
|
83
|
+
median(column: string): Expression;
|
|
84
|
+
any(column: string): Expression;
|
|
85
|
+
anyLast(column: string): Expression;
|
|
86
|
+
sumIf(column: string, condition: string): Expression;
|
|
87
|
+
countIf(condition: string): Expression;
|
|
88
|
+
avgIf(column: string, condition: string): Expression;
|
|
25
89
|
/** Raw SQL expression — escape hatch for anything not covered. */
|
|
26
90
|
raw(sql: string): Expression;
|
|
27
91
|
};
|
|
92
|
+
export {};
|
|
28
93
|
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/query/expressions.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,qBAAa,UAAU;aAEH,GAAG,EAAE,MAAM;aACX,KAAK,CAAC,EAAE,MAAM;gBADd,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,MAAM,YAAA;IAGhC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAI7B,QAAQ,IAAI,MAAM;CAGnB;AAED,oCAAoC;AACpC,eAAO,MAAM,EAAE;mBACE,MAAM,iBAAiB,MAAM,GAAG,UAAU;mBAG1C,MAAM,iBAAiB,MAAM,GAAG,UAAU;mBAG1C,MAAM,GAAG,UAAU;0BAGZ,MAAM,GAAG,UAAU;gBAG7B,MAAM,GAAG,UAAU;gBAGnB,MAAM,GAAG,UAAU;gBAGnB,MAAM,GAAG,UAAU;gBAGnB,MAAM,GAAG,UAAU;uBAGZ,MAAM,GAAG,UAAU;sBAGpB,MAAM,GAAG,UAAU;iBAGxB,MAAM,GAAG,UAAU;sBAGd,MAAM,GAAG,UAAU;yBAGhB,MAAM,GAAG,UAAU;0BAGlB,MAAM,GAAG,UAAU;
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/query/expressions.ts"],"names":[],"mappings":"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"}
|