@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.
Files changed (42) hide show
  1. package/dist/client/client.d.ts +2 -0
  2. package/dist/client/client.d.ts.map +1 -1
  3. package/dist/client/client.js +11 -0
  4. package/dist/client/client.js.map +1 -1
  5. package/dist/codegen/generator.d.ts.map +1 -1
  6. package/dist/codegen/generator.js +2 -1
  7. package/dist/codegen/generator.js.map +1 -1
  8. package/dist/codegen/type-mapper.d.ts +7 -0
  9. package/dist/codegen/type-mapper.d.ts.map +1 -1
  10. package/dist/codegen/type-mapper.js +9 -3
  11. package/dist/codegen/type-mapper.js.map +1 -1
  12. package/dist/query/compile-utils.d.ts +37 -0
  13. package/dist/query/compile-utils.d.ts.map +1 -0
  14. package/dist/query/compile-utils.js +59 -0
  15. package/dist/query/compile-utils.js.map +1 -0
  16. package/dist/query/delete-builder.d.ts +24 -0
  17. package/dist/query/delete-builder.d.ts.map +1 -0
  18. package/dist/query/delete-builder.js +56 -0
  19. package/dist/query/delete-builder.js.map +1 -0
  20. package/dist/query/expressions.d.ts +65 -0
  21. package/dist/query/expressions.d.ts.map +1 -1
  22. package/dist/query/expressions.js +193 -0
  23. package/dist/query/expressions.js.map +1 -1
  24. package/dist/query/index.d.ts +5 -3
  25. package/dist/query/index.d.ts.map +1 -1
  26. package/dist/query/index.js +4 -2
  27. package/dist/query/index.js.map +1 -1
  28. package/dist/query/query-builder.d.ts +10 -2
  29. package/dist/query/query-builder.d.ts.map +1 -1
  30. package/dist/query/query-builder.js +12 -1
  31. package/dist/query/query-builder.js.map +1 -1
  32. package/dist/query/select-builder.d.ts +55 -3
  33. package/dist/query/select-builder.d.ts.map +1 -1
  34. package/dist/query/select-builder.js +129 -35
  35. package/dist/query/select-builder.js.map +1 -1
  36. package/dist/query/types.d.ts +6 -2
  37. package/dist/query/types.d.ts.map +1 -1
  38. package/dist/query/update-builder.d.ts +27 -0
  39. package/dist/query/update-builder.d.ts.map +1 -0
  40. package/dist/query/update-builder.js +72 -0
  41. package/dist/query/update-builder.js.map +1 -0
  42. package/package.json +4 -4
@@ -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,CA8ClB"}
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"}
@@ -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;AA0B5B;;;;;;;;;;;;;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,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
+ {"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;AA+ED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAqBvF"}
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, options);
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":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAA0B,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAO7E,yEAAyE;AACzE,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AAEtD,+DAA+D;AAC/D,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC;AAC1D,CAAC;AAED,2EAA2E;AAC3E,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC;SACL,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAClD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAC,SAAiB;IAChC,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1C,CAAC;AAED,SAAS,UAAU,CAAC,SAAiB;IACnC,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC7C,CAAC;AAED,SAAS,KAAK,CAAC,KAAe;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IACtD,OAAO,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AACjE,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAwB,EAAE,OAAyB;IAC/E,MAAM,QAAQ,GAAG;QACf,YAAY,KAAK,CAAC,IAAI,IAAI;QAC1B,WAAW,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE;KAC9C,CAAC;IACF,IAAI,KAAK,CAAC,UAAU;QAAE,QAAQ,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;IACvE,IAAI,KAAK,CAAC,YAAY;QAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,aAAa;QAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IACjF,IAAI,KAAK,CAAC,OAAO;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,GAAG,OAAO,KAAK,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,GAAG,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,oBAAoB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAChG,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAwB,EAAE,OAAyB;IAClF,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAC5C,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,KAAK,cAAc,IAAI,GAAG,CAAC,WAAW,KAAK,OAAO,CAC3E,CAAC;IAEF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAE9C,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC3C,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,OAAO,GAAG,OAAO,KAAK,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,MAAM,GAAG,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,OAAO,yBAAyB,KAAK,CAAC,IAAI,gGAAgG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAChM,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA2B;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAE1F,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,aAAa,yBAAyB,cAAc,SAAS,CAAC;IACnM,CAAC,CAAC,CAAC;IAEH,OAAO,4HAA4H,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7J,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,MAA2B,EAAE,OAAyB;IAC7E,MAAM,MAAM,GAAG;QACb,yBAAyB;QACzB,gBAAgB,OAAO,CAAC,QAAQ,EAAE;QAClC,oBAAoB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;QAC9C,IAAI;QACJ,gEAAgE;QAChE,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,QAAQ,GAAa,CAAC,MAAM,CAAC,CAAC;IAEpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,WAAW;YAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5C,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACtC,CAAC"}
@@ -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;CACnB;AA+BD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,CA2DzF;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"}
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
- return options.bigints ? 'bigint' : 'string';
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":"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"}
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;IAGzC,kEAAkE;aACzD,MAAM,GAAG,UAAU;CAG7B,CAAC"}
1
+ {"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/query/expressions.ts"],"names":[],"mappings":"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"}