@justwant/warehouse 0.1.1 → 0.2.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.
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAIV,UAAU,EACV,SAAS,EACT,yBAAyB,EACzB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AA0BpB,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAM5E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,6BAA6B,GACrC,SAAS,CA4IX"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,KAAK,EAIV,UAAU,EACV,SAAS,EACT,yBAAyB,EACzB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAsCpB,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAM5E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,6BAA6B,GACrC,SAAS,CA4KX"}
package/dist/core.js CHANGED
@@ -13,11 +13,16 @@ function toRows(result) {
13
13
  const r = result;
14
14
  return (r?.rows ?? []);
15
15
  }
16
- /** Normalize BigInt to number in aggregate results (DuckDB, ClickHouse return BigInt for count/sum). */
16
+ /** Normalize BigInt/string to number in aggregate results (DuckDB, ClickHouse return BigInt or string for count/sum). */
17
17
  function normalizeAggregateRow(row) {
18
18
  const out = {};
19
19
  for (const [k, v] of Object.entries(row)) {
20
- out[k] = typeof v === "bigint" ? Number(v) : v;
20
+ if (typeof v === "bigint")
21
+ out[k] = Number(v);
22
+ else if (typeof v === "string" && /^\d+$/.test(v))
23
+ out[k] = Number(v);
24
+ else
25
+ out[k] = v;
21
26
  }
22
27
  return out;
23
28
  }
@@ -29,6 +34,16 @@ function parseExistResult(rows) {
29
34
  const val = Object.values(row)[0];
30
35
  return val === 1 || val === true || (typeof val === "number" && val !== 0);
31
36
  }
37
+ /** Execute DDL/mutation (CREATE, DROP, INSERT). ClickHouse requires .command() to avoid JSON parse on empty response. */
38
+ async function executeMutation(q, dialect) {
39
+ const cmd = q.command;
40
+ if (dialect === "clickhouse" && typeof cmd === "function") {
41
+ await cmd.call(q);
42
+ }
43
+ else {
44
+ await q;
45
+ }
46
+ }
32
47
  /**
33
48
  * Creates a warehouse from connection config. Use with driver factories (createDuckDbAdapter, etc.).
34
49
  */
@@ -52,7 +67,7 @@ export function createWarehouseFromSql(sql, options) {
52
67
  async createTable(contract) {
53
68
  try {
54
69
  const ddl = getCreateTableSQL(contract, dialect);
55
- await sql `${sql.raw(ddl)}`;
70
+ await executeMutation(sql `${sql.raw(ddl)}`, dialect);
56
71
  }
57
72
  catch (err) {
58
73
  throw parseWarehouseError(err);
@@ -68,7 +83,7 @@ export function createWarehouseFromSql(sql, options) {
68
83
  async createTable() {
69
84
  try {
70
85
  const ddl = getCreateTableSQL(contract, dialect, { ifNotExists: true });
71
- await sql `${sql.raw(ddl)}`;
86
+ await executeMutation(sql `${sql.raw(ddl)}`, dialect);
72
87
  }
73
88
  catch (err) {
74
89
  throw parseWarehouseError(err);
@@ -87,7 +102,7 @@ export function createWarehouseFromSql(sql, options) {
87
102
  async drop() {
88
103
  try {
89
104
  const dropSql = getDropTableSQL(tableName, dialect);
90
- await sql `${sql.raw(dropSql)}`;
105
+ await executeMutation(sql `${sql.raw(dropSql)}`, dialect);
91
106
  }
92
107
  catch (err) {
93
108
  throw parseWarehouseError(err);
@@ -103,11 +118,35 @@ export function createWarehouseFromSql(sql, options) {
103
118
  const dbRow = mapContractToRow(row, mapping);
104
119
  return colOrder.map((col) => {
105
120
  const val = dbRow[col];
106
- return val === undefined && sqlDefault !== undefined ? sqlDefault : val;
121
+ if (val === undefined) {
122
+ return dialect === "clickhouse" ? null : (sqlDefault ?? null);
123
+ }
124
+ return val;
107
125
  });
108
126
  });
109
127
  const colList = colOrder.map((c) => `"${String(c).replace(/"/g, '""')}"`).join(", ");
110
- await sql `INSERT INTO ${tableId} (${sql.raw(colList)}) VALUES ${sql.values(tuples)}`;
128
+ const types = dialect === "clickhouse"
129
+ ? colOrder.map((col) => {
130
+ const key = Object.entries(mapping).find(([, c]) => c.name === col)?.[0];
131
+ const field = key
132
+ ? contract.fields[key]
133
+ : undefined;
134
+ if (!field)
135
+ return "String";
136
+ const base = field._columnType === "REAL"
137
+ ? "Float64"
138
+ : field._columnType === "INTEGER"
139
+ ? "Int64"
140
+ : "String";
141
+ return !field._required
142
+ ? `Nullable(${base})`
143
+ : base;
144
+ })
145
+ : undefined;
146
+ const valuesArg = types !== undefined
147
+ ? sql.values(tuples, types)
148
+ : sql.values(tuples);
149
+ await executeMutation(sql `INSERT INTO ${tableId} (${sql.raw(colList)}) VALUES ${valuesArg}`, dialect);
111
150
  }
112
151
  catch (err) {
113
152
  throw parseWarehouseError(err);
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
@@ -28,9 +28,9 @@ export function getCreateTableSQL(contract, options) {
28
28
  if (!field)
29
29
  continue;
30
30
  const colName = col.name;
31
- const type = columnTypeForClickHouse(field);
32
- const nullable = !field._required ? " Nullable" : "";
33
- parts.push(`${escapeIdentifier(colName)} ${type}${nullable}`);
31
+ const baseType = columnTypeForClickHouse(field);
32
+ const type = !field._required ? `Nullable(${baseType})` : baseType;
33
+ parts.push(`${escapeIdentifier(colName)} ${type}`);
34
34
  }
35
35
  const tableId = escapeIdentifier(tableName);
36
36
  const orderByCol = entries[0]?.[1]?.name ?? "id";
@@ -1 +1 @@
1
- {"version":3,"file":"clickhouse.js","sourceRoot":"","sources":["../../src/ddl/clickhouse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AACjD,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAiC;IAChE,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC;IACvC,MAAM,GAAG,GAA2B;QAClC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;KACjB,CAAC;IACF,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAmE,EACnE,OAAmC;IAEnC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,GAA0B,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;IACjD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO,eAAe,WAAW,IAAI,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC;AACvI,CAAC"}
1
+ {"version":3,"file":"clickhouse.js","sourceRoot":"","sources":["../../src/ddl/clickhouse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AACjD,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAiC;IAChE,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC;IACvC,MAAM,GAAG,GAA2B;QAClC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;KACjB,CAAC;IACF,OAAO,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAmE,EACnE,OAAmC;IAEnC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,GAA0B,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;QACzB,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC;IACjD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO,eAAe,WAAW,IAAI,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC;AACvI,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * E2E helpers for availability checks.
3
+ * Used by integration tests to skip when Docker ClickHouse is not running.
4
+ */
5
+ export declare const CLICKHOUSE_URL: string;
6
+ export declare function hasClickHouse(): Promise<boolean>;
7
+ //# sourceMappingURL=e2e-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e-helpers.d.ts","sourceRoot":"","sources":["../src/e2e-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,cAAc,QAAwD,CAAC;AAEpF,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAOtD"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * E2E helpers for availability checks.
3
+ * Used by integration tests to skip when Docker ClickHouse is not running.
4
+ */
5
+ export const CLICKHOUSE_URL = process.env.CLICKHOUSE_URL ?? "http://localhost:8123";
6
+ export async function hasClickHouse() {
7
+ try {
8
+ const res = await fetch(`${CLICKHOUSE_URL}/ping`);
9
+ return res.ok;
10
+ }
11
+ catch {
12
+ return false;
13
+ }
14
+ }
15
+ //# sourceMappingURL=e2e-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e-helpers.js","sourceRoot":"","sources":["../src/e2e-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,uBAAuB,CAAC;AAEpF,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,OAAO,CAAC,CAAC;QAClD,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,cAAe,SAAQ,KAAK;aAGrB,IAAI,EAAE,MAAM;aACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFlD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAMrD;AAED,qBAAa,wBAAyB,SAAQ,cAAc;gBAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAKhE;AAED,qBAAa,qBAAsB,SAAQ,cAAc;gBAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAKhE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAqBhE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,cAAe,SAAQ,KAAK;aAGrB,IAAI,EAAE,MAAM;aACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFlD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAMrD;AAED,qBAAa,wBAAyB,SAAQ,cAAc;gBAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAKhE;AAED,qBAAa,qBAAsB,SAAQ,cAAc;gBAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAKhE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,cAAc,CAkBhE"}
package/dist/errors.js CHANGED
@@ -29,11 +29,9 @@ export class WarehouseTimeoutError extends WarehouseError {
29
29
  export function parseWarehouseError(raw) {
30
30
  const err = raw;
31
31
  const message = typeof err?.message === "string" ? err.message : String(raw ?? "Unknown error");
32
- const causeMsg = typeof err?.cause?.message === "string"
33
- ? err.cause.message
34
- : "";
35
- const msgToCheck = causeMsg || message;
36
- const code = err?.code;
32
+ const cause = err?.cause;
33
+ const causeMsg = typeof cause?.message === "string" ? cause.message : "";
34
+ const code = (err?.code ?? cause?.code);
37
35
  if (typeof code === "string") {
38
36
  switch (code) {
39
37
  case "ECONNREFUSED":
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB;IACA;IAHlB,YACE,OAAe,EACC,IAAY,EACZ,QAAkC;QAElD,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAA0B;QAGlD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IAC1D,YAAY,OAAe,EAAE,QAAkC;QAC7D,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IACvD,YAAY,OAAe,EAAE,QAAkC;QAC7D,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,GAAG,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;IAChG,MAAM,QAAQ,GACZ,OAAQ,GAAG,EAAE,KAA8B,EAAE,OAAO,KAAK,QAAQ;QAC/D,CAAC,CAAE,GAAG,CAAC,KAA6B,CAAC,OAAO;QAC5C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,UAAU,GAAG,QAAQ,IAAI,OAAO,CAAC;IACvC,MAAM,IAAI,GAAG,GAAG,EAAE,IAA0B,CAAC;IAE7C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,cAAc,CAAC;YACpB,KAAK,YAAY;gBACf,OAAO,IAAI,wBAAwB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,KAAK,WAAW;gBACd,OAAO,IAAI,qBAAqB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3E,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGrB;IACA;IAHlB,YACE,OAAe,EACC,IAAY,EACZ,QAAkC;QAElD,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAA0B;QAGlD,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IAC1D,YAAY,OAAe,EAAE,QAAkC;QAC7D,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAClE,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IACvD,YAAY,OAAe,EAAE,QAAkC;QAC7D,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;CACF;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,GAAG,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;IAChG,MAAM,KAAK,GAAG,GAAG,EAAE,KAA4C,CAAC;IAChE,MAAM,QAAQ,GAAG,OAAO,KAAK,EAAE,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,OAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,CAAuB,CAAC;IAE9D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,cAAc,CAAC;YACpB,KAAK,YAAY;gBACf,OAAO,IAAI,wBAAwB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,KAAK,WAAW;gBACd,OAAO,IAAI,qBAAqB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@justwant/warehouse",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "DAL for data warehouses (OLAP). Batch insert, query, aggregate. ClickHouse, DuckDB.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -33,7 +33,9 @@
33
33
  "scripts": {
34
34
  "build": "tsc",
35
35
  "typecheck": "tsc --noEmit",
36
- "test": "bun test"
36
+ "test": "bun test",
37
+ "test:e2e:full": "docker compose up -d && sleep 5 && bun test",
38
+ "test:e2e:down": "docker compose down"
37
39
  },
38
40
  "files": ["dist", "README.md", "docs"],
39
41
  "publishConfig": {
@@ -51,6 +53,7 @@
51
53
  }
52
54
  },
53
55
  "devDependencies": {
56
+ "@clickhouse/client": "*",
54
57
  "@duckdb/node-api": "*",
55
58
  "@justwant/tsconfig": "0.0.0",
56
59
  "typescript": "^5.7.0",