@jantokic/chtype 0.2.0 → 0.4.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 +4 -2
- 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/migrate/differ.d.ts +43 -0
- package/dist/migrate/differ.d.ts.map +1 -0
- package/dist/migrate/differ.js +77 -0
- package/dist/migrate/differ.js.map +1 -0
- package/dist/migrate/generator.d.ts +33 -0
- package/dist/migrate/generator.d.ts.map +1 -0
- package/dist/migrate/generator.js +125 -0
- package/dist/migrate/generator.js.map +1 -0
- package/dist/migrate/index.d.ts +4 -0
- package/dist/migrate/index.d.ts.map +1 -0
- package/dist/migrate/index.js +4 -0
- package/dist/migrate/index.js.map +1 -0
- package/dist/migrate/snapshot.d.ts +31 -0
- package/dist/migrate/snapshot.d.ts.map +1 -0
- package/dist/migrate/snapshot.js +68 -0
- package/dist/migrate/snapshot.js.map +1 -0
- 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 +70 -3
- package/dist/query/expressions.d.ts.map +1 -1
- package/dist/query/expressions.js +194 -1
- package/dist/query/expressions.js.map +1 -1
- package/dist/query/index.d.ts +6 -3
- package/dist/query/index.d.ts.map +1 -1
- package/dist/query/index.js +5 -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 +61 -5
- 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/sql-template.d.ts +37 -0
- package/dist/query/sql-template.d.ts.map +1 -0
- package/dist/query/sql-template.js +80 -0
- package/dist/query/sql-template.js.map +1 -0
- package/dist/query/types.d.ts +12 -4
- 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 +8 -4
|
@@ -5,15 +5,16 @@
|
|
|
5
5
|
* literals are NOT allowed to prevent SQL injection. Use `qb.param()` to create
|
|
6
6
|
* typed parameter placeholders.
|
|
7
7
|
*/
|
|
8
|
-
import { Expression } from './expressions.js';
|
|
9
|
-
import {
|
|
10
|
-
/** Valid ClickHouse setting name pattern. */
|
|
11
|
-
const VALID_SETTING_KEY = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
|
|
8
|
+
import { Expression, Subquery } from './expressions.js';
|
|
9
|
+
import { createCompileContext, mergeParams, renderValue, renderWhereClause, VALID_IDENTIFIER, } from './compile-utils.js';
|
|
12
10
|
export class SelectBuilder {
|
|
13
11
|
_table;
|
|
14
12
|
_tableAlias;
|
|
15
13
|
_columns = [];
|
|
14
|
+
_distinct = false;
|
|
15
|
+
_ctes = [];
|
|
16
16
|
_wheres = [];
|
|
17
|
+
_prewheres = [];
|
|
17
18
|
_joins = [];
|
|
18
19
|
_groupBy = [];
|
|
19
20
|
_havings = [];
|
|
@@ -21,6 +22,8 @@ export class SelectBuilder {
|
|
|
21
22
|
_limit = null;
|
|
22
23
|
_offset = null;
|
|
23
24
|
_final = false;
|
|
25
|
+
_sample = null;
|
|
26
|
+
_sampleOffset = null;
|
|
24
27
|
_settings = {};
|
|
25
28
|
constructor(table) {
|
|
26
29
|
this._table = table;
|
|
@@ -30,13 +33,30 @@ export class SelectBuilder {
|
|
|
30
33
|
this._tableAlias = alias;
|
|
31
34
|
return this;
|
|
32
35
|
}
|
|
36
|
+
/** Add DISTINCT to the SELECT clause. */
|
|
37
|
+
distinct() {
|
|
38
|
+
this._distinct = true;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
/** Add a WITH (CTE) clause. The subquery is compiled and prepended to the query. */
|
|
42
|
+
with(name, subquery) {
|
|
43
|
+
if (!VALID_IDENTIFIER.test(name)) {
|
|
44
|
+
throw new Error(`Invalid CTE name: "${name}"`);
|
|
45
|
+
}
|
|
46
|
+
const sub = subquery instanceof Subquery ? subquery : new Subquery(subquery.compile());
|
|
47
|
+
this._ctes.push({ name, subquery: sub });
|
|
48
|
+
return this;
|
|
49
|
+
}
|
|
50
|
+
prewhere(columnOrCondition, op, value) {
|
|
51
|
+
this._prewheres.push(buildWhereClause(columnOrCondition, op, value));
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
33
54
|
select(columns) {
|
|
34
55
|
this._columns = columns;
|
|
35
56
|
return this;
|
|
36
57
|
}
|
|
37
|
-
where(
|
|
38
|
-
|
|
39
|
-
this._wheres.push({ column: col, op, value });
|
|
58
|
+
where(columnOrCondition, op, value) {
|
|
59
|
+
this._wheres.push(buildWhereClause(columnOrCondition, op, value));
|
|
40
60
|
return this;
|
|
41
61
|
}
|
|
42
62
|
/**
|
|
@@ -78,9 +98,13 @@ export class SelectBuilder {
|
|
|
78
98
|
this._groupBy.push(...columns.map((c) => (c instanceof Expression ? c.sql : c)));
|
|
79
99
|
return this;
|
|
80
100
|
}
|
|
81
|
-
having(
|
|
82
|
-
|
|
83
|
-
|
|
101
|
+
having(columnOrCondition, op, value) {
|
|
102
|
+
if (columnOrCondition instanceof Expression && op === undefined) {
|
|
103
|
+
this._havings.push({ kind: 'expression', expr: columnOrCondition });
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
const col = columnOrCondition instanceof Expression ? columnOrCondition.sql : columnOrCondition;
|
|
107
|
+
this._havings.push({ kind: 'comparison', column: col, op: op, value: value });
|
|
84
108
|
return this;
|
|
85
109
|
}
|
|
86
110
|
orderBy(column, direction = 'ASC') {
|
|
@@ -101,27 +125,56 @@ export class SelectBuilder {
|
|
|
101
125
|
this._final = true;
|
|
102
126
|
return this;
|
|
103
127
|
}
|
|
104
|
-
/**
|
|
128
|
+
/**
|
|
129
|
+
* Add SAMPLE clause (ClickHouse-specific approximate query optimization).
|
|
130
|
+
* @param ratio — fraction (0-1) or absolute row count (>= 1)
|
|
131
|
+
* @param offset — optional OFFSET for reproducible sampling (0-1)
|
|
132
|
+
*/
|
|
133
|
+
sample(ratio, offset) {
|
|
134
|
+
this._sample = ratio;
|
|
135
|
+
if (offset !== undefined) {
|
|
136
|
+
this._sampleOffset = offset;
|
|
137
|
+
}
|
|
138
|
+
return this;
|
|
139
|
+
}
|
|
140
|
+
/** Add SETTINGS clause. Keys and string values are validated to prevent injection. */
|
|
105
141
|
settings(s) {
|
|
106
|
-
for (const key of Object.
|
|
107
|
-
if (!
|
|
142
|
+
for (const [key, val] of Object.entries(s)) {
|
|
143
|
+
if (!VALID_IDENTIFIER.test(key)) {
|
|
108
144
|
throw new Error(`Invalid ClickHouse setting name: "${key}"`);
|
|
109
145
|
}
|
|
146
|
+
if (typeof val === 'string' && val.includes("'")) {
|
|
147
|
+
throw new Error(`Setting value for "${key}" contains invalid character: '`);
|
|
148
|
+
}
|
|
110
149
|
}
|
|
111
150
|
Object.assign(this._settings, s);
|
|
112
151
|
return this;
|
|
113
152
|
}
|
|
114
153
|
compile() {
|
|
115
|
-
const
|
|
154
|
+
const ctx = createCompileContext();
|
|
116
155
|
const parts = [];
|
|
156
|
+
// WITH (CTE) clauses
|
|
157
|
+
if (this._ctes.length > 0) {
|
|
158
|
+
const cteParts = this._ctes.map((cte) => {
|
|
159
|
+
mergeParams(ctx, cte.subquery.subqueryParams);
|
|
160
|
+
return `${cte.name} AS ${cte.subquery.sql}`;
|
|
161
|
+
});
|
|
162
|
+
parts.push(`WITH ${cteParts.join(',\n')}`);
|
|
163
|
+
}
|
|
117
164
|
const selectList = this._columns.length > 0
|
|
118
165
|
? this._columns.map((c) => (c instanceof Expression ? c.toString() : c)).join(', ')
|
|
119
166
|
: '*';
|
|
120
|
-
|
|
167
|
+
const distinctMod = this._distinct ? 'DISTINCT ' : '';
|
|
168
|
+
parts.push(`SELECT ${distinctMod}${selectList}`);
|
|
121
169
|
const tableName = this._table;
|
|
122
170
|
const tableRef = this._tableAlias ? `${tableName} AS ${this._tableAlias}` : tableName;
|
|
123
171
|
const finalMod = this._final ? ' FINAL' : '';
|
|
124
|
-
|
|
172
|
+
const sampleMod = this._sample !== null
|
|
173
|
+
? this._sampleOffset !== null
|
|
174
|
+
? ` SAMPLE ${this._sample} OFFSET ${this._sampleOffset}`
|
|
175
|
+
: ` SAMPLE ${this._sample}`
|
|
176
|
+
: '';
|
|
177
|
+
parts.push(`FROM ${tableRef}${finalMod}${sampleMod}`);
|
|
125
178
|
for (const j of this._joins) {
|
|
126
179
|
const joinTable = j.alias ? `${j.table} AS ${j.alias}` : j.table;
|
|
127
180
|
if (j.type === 'CROSS JOIN') {
|
|
@@ -131,21 +184,20 @@ export class SelectBuilder {
|
|
|
131
184
|
parts.push(`${j.type} ${joinTable} ON ${j.onLeft} = ${j.onRight}`);
|
|
132
185
|
}
|
|
133
186
|
}
|
|
187
|
+
// PREWHERE (ClickHouse-specific, before WHERE)
|
|
188
|
+
if (this._prewheres.length > 0) {
|
|
189
|
+
const conditions = this._prewheres.map((w) => renderWhereClause(w, ctx));
|
|
190
|
+
parts.push(`PREWHERE ${conditions.join(' AND ')}`);
|
|
191
|
+
}
|
|
134
192
|
if (this._wheres.length > 0) {
|
|
135
|
-
const conditions = this._wheres.map((w) =>
|
|
136
|
-
const val = renderValue(w.value, params);
|
|
137
|
-
return `${w.column} ${w.op} ${val}`;
|
|
138
|
-
});
|
|
193
|
+
const conditions = this._wheres.map((w) => renderWhereClause(w, ctx));
|
|
139
194
|
parts.push(`WHERE ${conditions.join(' AND ')}`);
|
|
140
195
|
}
|
|
141
196
|
if (this._groupBy.length > 0) {
|
|
142
197
|
parts.push(`GROUP BY ${this._groupBy.join(', ')}`);
|
|
143
198
|
}
|
|
144
199
|
if (this._havings.length > 0) {
|
|
145
|
-
const conditions = this._havings.map((h) =>
|
|
146
|
-
const val = renderValue(h.value, params);
|
|
147
|
-
return `${h.column} ${h.op} ${val}`;
|
|
148
|
-
});
|
|
200
|
+
const conditions = this._havings.map((h) => renderWhereClause(h, ctx));
|
|
149
201
|
parts.push(`HAVING ${conditions.join(' AND ')}`);
|
|
150
202
|
}
|
|
151
203
|
if (this._orderBys.length > 0) {
|
|
@@ -153,10 +205,10 @@ export class SelectBuilder {
|
|
|
153
205
|
parts.push(`ORDER BY ${clauses.join(', ')}`);
|
|
154
206
|
}
|
|
155
207
|
if (this._limit !== null) {
|
|
156
|
-
parts.push(`LIMIT ${renderValue(this._limit,
|
|
208
|
+
parts.push(`LIMIT ${renderValue(this._limit, ctx)}`);
|
|
157
209
|
}
|
|
158
210
|
if (this._offset !== null) {
|
|
159
|
-
parts.push(`OFFSET ${renderValue(this._offset,
|
|
211
|
+
parts.push(`OFFSET ${renderValue(this._offset, ctx)}`);
|
|
160
212
|
}
|
|
161
213
|
const settingsEntries = Object.entries(this._settings);
|
|
162
214
|
if (settingsEntries.length > 0) {
|
|
@@ -165,18 +217,60 @@ export class SelectBuilder {
|
|
|
165
217
|
.join(', ');
|
|
166
218
|
parts.push(`SETTINGS ${settingsStr}`);
|
|
167
219
|
}
|
|
168
|
-
return { sql: parts.join('\n'), params };
|
|
220
|
+
return { sql: parts.join('\n'), params: ctx.params };
|
|
169
221
|
}
|
|
170
222
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
223
|
+
/** Combine multiple SELECT queries with a set operator (UNION ALL, UNION DISTINCT, INTERSECT, EXCEPT). */
|
|
224
|
+
export function setOperation(operator, ...queries) {
|
|
225
|
+
if (queries.length < 2) {
|
|
226
|
+
throw new Error(`${operator} requires at least two queries`);
|
|
175
227
|
}
|
|
176
|
-
|
|
177
|
-
|
|
228
|
+
const compiled = queries.map((q) => q.compile());
|
|
229
|
+
const params = {};
|
|
230
|
+
const seen = new Set();
|
|
231
|
+
for (const c of compiled) {
|
|
232
|
+
for (const key of Object.keys(c.params)) {
|
|
233
|
+
if (seen.has(key)) {
|
|
234
|
+
throw new Error(`Param name collision: "${key}" appears in multiple ${operator} branches`);
|
|
235
|
+
}
|
|
236
|
+
seen.add(key);
|
|
237
|
+
params[key] = c.params[key];
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
const sql = compiled.map((c) => c.sql).join(`\n${operator}\n`);
|
|
241
|
+
return { sql, params };
|
|
242
|
+
}
|
|
243
|
+
/** Shorthand for UNION ALL. */
|
|
244
|
+
export function unionAll(...queries) {
|
|
245
|
+
return setOperation('UNION ALL', ...queries);
|
|
246
|
+
}
|
|
247
|
+
/** Shorthand for UNION DISTINCT. */
|
|
248
|
+
export function unionDistinct(...queries) {
|
|
249
|
+
return setOperation('UNION DISTINCT', ...queries);
|
|
250
|
+
}
|
|
251
|
+
/** Shorthand for INTERSECT. */
|
|
252
|
+
export function intersect(...queries) {
|
|
253
|
+
return setOperation('INTERSECT', ...queries);
|
|
254
|
+
}
|
|
255
|
+
/** Shorthand for EXCEPT. */
|
|
256
|
+
export function except(...queries) {
|
|
257
|
+
return setOperation('EXCEPT', ...queries);
|
|
258
|
+
}
|
|
259
|
+
/** Parse where() arguments into a WhereClause. Shared by where() and prewhere(). */
|
|
260
|
+
function buildWhereClause(columnOrCondition, op, value) {
|
|
261
|
+
if (columnOrCondition instanceof Expression && op === undefined) {
|
|
262
|
+
return { kind: 'expression', expr: columnOrCondition };
|
|
263
|
+
}
|
|
264
|
+
const col = columnOrCondition instanceof Expression ? columnOrCondition.sql : columnOrCondition;
|
|
265
|
+
if (op === 'IS NULL' || op === 'IS NOT NULL') {
|
|
266
|
+
return { kind: 'unary', column: col, op };
|
|
267
|
+
}
|
|
268
|
+
if (op === 'BETWEEN' || op === 'NOT BETWEEN') {
|
|
269
|
+
if (!Array.isArray(value) || value.length < 2) {
|
|
270
|
+
throw new Error(`${op} requires a [low, high] tuple`);
|
|
271
|
+
}
|
|
272
|
+
return { kind: 'between', column: col, op, low: value[0], high: value[1] };
|
|
178
273
|
}
|
|
179
|
-
|
|
180
|
-
return String(value);
|
|
274
|
+
return { kind: 'comparison', column: col, op: op, value: value };
|
|
181
275
|
}
|
|
182
276
|
//# sourceMappingURL=select-builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-builder.js","sourceRoot":"","sources":["../../src/query/select-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"select-builder.js","sourceRoot":"","sources":["../../src/query/select-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { CompiledQuery } from './types.js';
|
|
2
|
+
import { Expression, Subquery } from './expressions.js';
|
|
3
|
+
import { Param } from './param.js';
|
|
4
|
+
/**
|
|
5
|
+
* Allowed interpolation types for the `sql` tagged template.
|
|
6
|
+
* Raw strings and numbers are intentionally excluded to prevent SQL injection.
|
|
7
|
+
*/
|
|
8
|
+
export type SqlInterpolation = Param | Expression | Subquery | CompiledQuery;
|
|
9
|
+
/**
|
|
10
|
+
* Type-level guard that rejects raw string/number interpolation.
|
|
11
|
+
* Produces a compile-time error with a helpful message.
|
|
12
|
+
*/
|
|
13
|
+
type RejectRaw<T> = T extends string ? never & {
|
|
14
|
+
error: 'Raw strings are not allowed in sql`...` — use Param, Expression, or fn.raw() instead';
|
|
15
|
+
} : T extends number ? never & {
|
|
16
|
+
error: 'Raw numbers are not allowed in sql`...` — use Param or Expression instead';
|
|
17
|
+
} : T extends SqlInterpolation ? T : never & {
|
|
18
|
+
error: 'Unsupported interpolation type — use Param, Expression, Subquery, or CompiledQuery';
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Tagged template literal for raw SQL with type-safe interpolation.
|
|
22
|
+
*
|
|
23
|
+
* Accepts `Param`, `Expression`, `Subquery`, and `CompiledQuery` interpolations.
|
|
24
|
+
* Raw strings and numbers are rejected at the TypeScript type level.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* const minScore = qb.param('min', 'Float64');
|
|
29
|
+
* const query = sql`SELECT user_id FROM users WHERE score > ${minScore}`;
|
|
30
|
+
* // query.sql === 'SELECT user_id FROM users WHERE score > {min:Float64}'
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function sql<T extends SqlInterpolation[]>(strings: TemplateStringsArray, ...values: {
|
|
34
|
+
[K in keyof T]: RejectRaw<T[K]>;
|
|
35
|
+
}): CompiledQuery;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=sql-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-template.d.ts","sourceRoot":"","sources":["../../src/query/sql-template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAkB,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAE7E;;;GAGG;AACH,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GAChC,KAAK,GAAG;IAAE,KAAK,EAAE,sFAAsF,CAAA;CAAE,GACzG,CAAC,SAAS,MAAM,GACd,KAAK,GAAG;IAAE,KAAK,EAAE,2EAA2E,CAAA;CAAE,GAC9F,CAAC,SAAS,gBAAgB,GACxB,CAAC,GACD,KAAK,GAAG;IAAE,KAAK,EAAE,oFAAoF,CAAA;CAAE,CAAC;AAiBhH;;;;;;;;;;;;GAYG;AACH,wBAAgB,GAAG,CAAC,CAAC,SAAS,gBAAgB,EAAE,EAC9C,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GAC7C,aAAa,CAmDf"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { ConditionGroup, Expression, Subquery } from './expressions.js';
|
|
2
|
+
import { Param } from './param.js';
|
|
3
|
+
/** Check if a value is a CompiledQuery (duck-type check). */
|
|
4
|
+
function isCompiledQuery(value) {
|
|
5
|
+
return (typeof value === 'object' &&
|
|
6
|
+
value !== null &&
|
|
7
|
+
'sql' in value &&
|
|
8
|
+
'params' in value &&
|
|
9
|
+
typeof value.sql === 'string' &&
|
|
10
|
+
typeof value.params === 'object' &&
|
|
11
|
+
!(value instanceof Expression) &&
|
|
12
|
+
!(value instanceof Param) &&
|
|
13
|
+
!(value instanceof Subquery));
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Tagged template literal for raw SQL with type-safe interpolation.
|
|
17
|
+
*
|
|
18
|
+
* Accepts `Param`, `Expression`, `Subquery`, and `CompiledQuery` interpolations.
|
|
19
|
+
* Raw strings and numbers are rejected at the TypeScript type level.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* const minScore = qb.param('min', 'Float64');
|
|
24
|
+
* const query = sql`SELECT user_id FROM users WHERE score > ${minScore}`;
|
|
25
|
+
* // query.sql === 'SELECT user_id FROM users WHERE score > {min:Float64}'
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function sql(strings, ...values) {
|
|
29
|
+
const params = {};
|
|
30
|
+
const registeredParams = new Set();
|
|
31
|
+
function registerParam(p) {
|
|
32
|
+
if (registeredParams.has(p.name)) {
|
|
33
|
+
throw new Error(`Param name collision: "${p.name}" is already used in this query`);
|
|
34
|
+
}
|
|
35
|
+
registeredParams.add(p.name);
|
|
36
|
+
params[p.name] = undefined;
|
|
37
|
+
}
|
|
38
|
+
function mergeParams(source, label) {
|
|
39
|
+
for (const key of Object.keys(source)) {
|
|
40
|
+
if (registeredParams.has(key)) {
|
|
41
|
+
throw new Error(`Param name collision: "${key}" is used in both the ${label} and outer query`);
|
|
42
|
+
}
|
|
43
|
+
registeredParams.add(key);
|
|
44
|
+
params[key] = source[key];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const sqlParts = [strings[0]];
|
|
48
|
+
for (let i = 0; i < values.length; i++) {
|
|
49
|
+
const value = values[i];
|
|
50
|
+
const nextString = strings[i + 1];
|
|
51
|
+
if (value instanceof Param) {
|
|
52
|
+
registerParam(value);
|
|
53
|
+
sqlParts.push(value.toString(), nextString);
|
|
54
|
+
}
|
|
55
|
+
else if (value instanceof Subquery) {
|
|
56
|
+
mergeParams(value.subqueryParams, 'subquery');
|
|
57
|
+
sqlParts.push(value.sql, nextString);
|
|
58
|
+
}
|
|
59
|
+
else if (value instanceof ConditionGroup) {
|
|
60
|
+
for (const p of value.params)
|
|
61
|
+
registerParam(p);
|
|
62
|
+
sqlParts.push(value.toString(), nextString);
|
|
63
|
+
}
|
|
64
|
+
else if (value instanceof Expression) {
|
|
65
|
+
sqlParts.push(value.toString(), nextString);
|
|
66
|
+
}
|
|
67
|
+
else if (isCompiledQuery(value)) {
|
|
68
|
+
mergeParams(value.params, 'embedded query');
|
|
69
|
+
sqlParts.push(value.sql, nextString);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
throw new Error('Unsupported interpolation type in sql template — use Param, Expression, Subquery, or CompiledQuery');
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
sql: sqlParts.join(''),
|
|
77
|
+
params,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=sql-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-template.js","sourceRoot":"","sources":["../../src/query/sql-template.ts"],"names":[],"mappings":"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"}
|
package/dist/query/types.d.ts
CHANGED
|
@@ -11,20 +11,28 @@ export type TableName<DB extends DatabaseSchema> = keyof DB & string;
|
|
|
11
11
|
export type RowType<DB extends DatabaseSchema, T extends TableName<DB>> = DB[T]['row'];
|
|
12
12
|
export type InsertType<DB extends DatabaseSchema, T extends TableName<DB>> = DB[T]['insert'];
|
|
13
13
|
export type ColumnName<DB extends DatabaseSchema, T extends TableName<DB>> = keyof RowType<DB, T> & string;
|
|
14
|
-
/** A compiled query ready for execution. */
|
|
15
|
-
export interface CompiledQuery {
|
|
14
|
+
/** A compiled query ready for execution. TResult carries the inferred row type from selected columns. */
|
|
15
|
+
export interface CompiledQuery<TResult = Record<string, unknown>> {
|
|
16
16
|
/** The parameterized SQL string with {name:Type} placeholders. */
|
|
17
17
|
sql: string;
|
|
18
18
|
/** Registry of parameter names that appear in the query. Values are undefined (filled at execution time). */
|
|
19
19
|
params: Record<string, unknown>;
|
|
20
|
+
/** Phantom field — never set at runtime, only used by TypeScript to carry the result type. */
|
|
21
|
+
readonly _resultType?: TResult;
|
|
20
22
|
}
|
|
23
|
+
/** Compute the result row type from selected columns and expressions. */
|
|
24
|
+
export type SelectResult<DB extends DatabaseSchema, T extends TableName<DB>, TSelected extends string> = string extends TSelected ? Record<string, unknown> : Pick<RowType<DB, T>, TSelected & keyof RowType<DB, T>> & Record<Exclude<TSelected, keyof RowType<DB, T>>, unknown>;
|
|
21
25
|
export type SortDirection = 'ASC' | 'DESC';
|
|
22
26
|
/** Comparison operators for scalar values. */
|
|
23
|
-
export type ComparisonOp = '=' | '!=' | '>' | '<' | '>=' | '<=' | 'LIKE';
|
|
27
|
+
export type ComparisonOp = '=' | '!=' | '>' | '<' | '>=' | '<=' | 'LIKE' | 'NOT LIKE' | 'ILIKE' | 'NOT ILIKE';
|
|
24
28
|
/** Set membership operators — require Array(...) param types. */
|
|
25
29
|
export type SetOp = 'IN' | 'NOT IN';
|
|
30
|
+
/** Unary operators (no value argument). */
|
|
31
|
+
export type UnaryOp = 'IS NULL' | 'IS NOT NULL';
|
|
32
|
+
/** Range operators — require a [low, high] tuple. */
|
|
33
|
+
export type BetweenOp = 'BETWEEN' | 'NOT BETWEEN';
|
|
26
34
|
/** All WHERE operators. */
|
|
27
|
-
export type WhereOp = ComparisonOp | SetOp;
|
|
35
|
+
export type WhereOp = ComparisonOp | SetOp | UnaryOp | BetweenOp;
|
|
28
36
|
/** ClickHouse JOIN types. */
|
|
29
37
|
export type JoinType = 'JOIN' | 'INNER JOIN' | 'LEFT JOIN' | 'RIGHT JOIN' | 'FULL JOIN' | 'CROSS JOIN' | 'LEFT OUTER JOIN' | 'RIGHT OUTER JOIN' | 'FULL OUTER JOIN' | 'ANY JOIN' | 'ANY LEFT JOIN' | 'ANY RIGHT JOIN' | 'ANY INNER JOIN' | 'ALL JOIN' | 'ALL LEFT JOIN' | 'ALL RIGHT JOIN' | 'ALL INNER JOIN' | 'ASOF JOIN' | 'ASOF LEFT JOIN';
|
|
30
38
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,CAAC,SAAS,EAAE,MAAM,GAAG;QACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,MAAM,SAAS,CAAC,EAAE,SAAS,cAAc,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC;AACrE,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACvF,MAAM,MAAM,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7F,MAAM,MAAM,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,IAAI,MAAM,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;AAE3G,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/query/types.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,CAAC,SAAS,EAAE,MAAM,GAAG;QACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B,CAAC;CACH;AAED,MAAM,MAAM,SAAS,CAAC,EAAE,SAAS,cAAc,IAAI,MAAM,EAAE,GAAG,MAAM,CAAC;AACrE,MAAM,MAAM,OAAO,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACvF,MAAM,MAAM,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC7F,MAAM,MAAM,UAAU,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,IAAI,MAAM,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC;AAE3G,yGAAyG;AACzG,MAAM,WAAW,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC9D,kEAAkE;IAClE,GAAG,EAAE,MAAM,CAAC;IACZ,6GAA6G;IAC7G,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,8FAA8F;IAC9F,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,yEAAyE;AACzE,MAAM,MAAM,YAAY,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC,SAAS,SAAS,CAAC,EAAE,CAAC,EAAE,SAAS,SAAS,MAAM,IACnG,MAAM,SAAS,SAAS,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GACpD,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,8CAA8C;AAC9C,MAAM,MAAM,YAAY,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,CAAC;AAE9G,iEAAiE;AACjE,MAAM,MAAM,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;AAEpC,2CAA2C;AAC3C,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC;AAEhD,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAElD,2BAA2B;AAC3B,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjE,6BAA6B;AAC7B,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,UAAU,GACV,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,UAAU,GACV,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,WAAW,GACX,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe UPDATE builder for ClickHouse.
|
|
3
|
+
*
|
|
4
|
+
* ClickHouse uses ALTER TABLE ... UPDATE ... WHERE syntax.
|
|
5
|
+
* All values in SET and 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 UpdateBuilder<DB extends DatabaseSchema, T extends TableName<DB> = TableName<DB>> {
|
|
11
|
+
private _table;
|
|
12
|
+
private _cluster?;
|
|
13
|
+
private _sets;
|
|
14
|
+
private _wheres;
|
|
15
|
+
constructor(table: T);
|
|
16
|
+
/** Specify the cluster for distributed updates: ALTER TABLE ... ON CLUSTER ... */
|
|
17
|
+
onCluster(cluster: string): this;
|
|
18
|
+
/** Set a column to a parameterized value or expression. */
|
|
19
|
+
set(column: ColumnName<DB, T>, value: Param | Expression): this;
|
|
20
|
+
where(column: ColumnName<DB, T> | Expression | string, op: ComparisonOp, value: Param | Expression): this;
|
|
21
|
+
where(column: ColumnName<DB, T> | Expression | string, op: SetOp, value: Param | Expression): this;
|
|
22
|
+
where(column: ColumnName<DB, T> | Expression | string, op: UnaryOp): this;
|
|
23
|
+
where(column: ColumnName<DB, T> | Expression | string, op: BetweenOp, value: [Param | Expression, Param | Expression]): this;
|
|
24
|
+
where(condition: Expression): this;
|
|
25
|
+
compile(): CompiledQuery;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=update-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-builder.d.ts","sourceRoot":"","sources":["../../src/query/update-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;AAcnC,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,KAAK,CAAmB;IAChC,OAAO,CAAC,OAAO,CAAqB;gBAExB,KAAK,EAAE,CAAC;IAIpB,kFAAkF;IAClF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQhC,2DAA2D;IAC3D,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,IAAI;IAQ/D,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;CAsBzB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe UPDATE builder for ClickHouse.
|
|
3
|
+
*
|
|
4
|
+
* ClickHouse uses ALTER TABLE ... UPDATE ... WHERE syntax.
|
|
5
|
+
* All values in SET and WHERE must be Param or Expression — no raw strings.
|
|
6
|
+
*/
|
|
7
|
+
import { Expression } from './expressions.js';
|
|
8
|
+
import { createCompileContext, renderValue, renderWhereClause, VALID_IDENTIFIER, } from './compile-utils.js';
|
|
9
|
+
export class UpdateBuilder {
|
|
10
|
+
_table;
|
|
11
|
+
_cluster;
|
|
12
|
+
_sets = [];
|
|
13
|
+
_wheres = [];
|
|
14
|
+
constructor(table) {
|
|
15
|
+
this._table = table;
|
|
16
|
+
}
|
|
17
|
+
/** Specify the cluster for distributed updates: ALTER TABLE ... ON CLUSTER ... */
|
|
18
|
+
onCluster(cluster) {
|
|
19
|
+
if (!VALID_IDENTIFIER.test(cluster)) {
|
|
20
|
+
throw new Error(`Invalid cluster name: "${cluster}"`);
|
|
21
|
+
}
|
|
22
|
+
this._cluster = cluster;
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
/** Set a column to a parameterized value or expression. */
|
|
26
|
+
set(column, value) {
|
|
27
|
+
if (!VALID_IDENTIFIER.test(column)) {
|
|
28
|
+
throw new Error(`Invalid column name: "${column}"`);
|
|
29
|
+
}
|
|
30
|
+
this._sets.push({ column, value });
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
where(columnOrCondition, op, value) {
|
|
34
|
+
this._wheres.push(buildWhereClause(columnOrCondition, op, value));
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
compile() {
|
|
38
|
+
if (this._sets.length === 0) {
|
|
39
|
+
throw new Error('UPDATE requires at least one SET assignment');
|
|
40
|
+
}
|
|
41
|
+
if (this._wheres.length === 0) {
|
|
42
|
+
throw new Error('UPDATE requires at least one WHERE condition');
|
|
43
|
+
}
|
|
44
|
+
const ctx = createCompileContext();
|
|
45
|
+
const table = this._table;
|
|
46
|
+
const clusterClause = this._cluster ? ` ON CLUSTER ${this._cluster}` : '';
|
|
47
|
+
const setClauses = this._sets.map((s) => {
|
|
48
|
+
const val = renderValue(s.value, ctx);
|
|
49
|
+
return `${s.column} = ${val}`;
|
|
50
|
+
});
|
|
51
|
+
const conditions = this._wheres.map((w) => renderWhereClause(w, ctx));
|
|
52
|
+
const sql = `ALTER TABLE ${table}${clusterClause} UPDATE ${setClauses.join(', ')} WHERE ${conditions.join(' AND ')}`;
|
|
53
|
+
return { sql, params: ctx.params };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
function buildWhereClause(columnOrCondition, op, value) {
|
|
57
|
+
if (columnOrCondition instanceof Expression && op === undefined) {
|
|
58
|
+
return { kind: 'expression', expr: columnOrCondition };
|
|
59
|
+
}
|
|
60
|
+
const col = columnOrCondition instanceof Expression ? columnOrCondition.sql : columnOrCondition;
|
|
61
|
+
if (op === 'IS NULL' || op === 'IS NOT NULL') {
|
|
62
|
+
return { kind: 'unary', column: col, op };
|
|
63
|
+
}
|
|
64
|
+
if (op === 'BETWEEN' || op === 'NOT BETWEEN') {
|
|
65
|
+
if (!Array.isArray(value) || value.length < 2) {
|
|
66
|
+
throw new Error(`${op} requires a [low, high] tuple`);
|
|
67
|
+
}
|
|
68
|
+
return { kind: 'between', column: col, op, low: value[0], high: value[1] };
|
|
69
|
+
}
|
|
70
|
+
return { kind: 'comparison', column: col, op: op, value: value };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=update-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-builder.js","sourceRoot":"","sources":["../../src/query/update-builder.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jantokic/chtype",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Type-safe ClickHouse toolkit for TypeScript — schema codegen, query builder, and enhanced client",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -24,13 +24,17 @@
|
|
|
24
24
|
"./client": {
|
|
25
25
|
"import": "./dist/client/index.js",
|
|
26
26
|
"types": "./dist/client/index.d.ts"
|
|
27
|
+
},
|
|
28
|
+
"./migrate": {
|
|
29
|
+
"import": "./dist/migrate/index.js",
|
|
30
|
+
"types": "./dist/migrate/index.d.ts"
|
|
27
31
|
}
|
|
28
32
|
},
|
|
29
33
|
"scripts": {
|
|
30
|
-
"build": "tsc",
|
|
34
|
+
"build": "bun x tsc",
|
|
31
35
|
"test": "bun test",
|
|
32
|
-
"typecheck": "tsc --noEmit",
|
|
33
|
-
"check": "bun test && tsc --noEmit"
|
|
36
|
+
"typecheck": "bun x tsc --noEmit",
|
|
37
|
+
"check": "bun test && bun x tsc --noEmit"
|
|
34
38
|
},
|
|
35
39
|
"dependencies": {
|
|
36
40
|
"@clickhouse/client": "^1.8.0",
|