@uptimizr/db 0.1.0 → 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.
package/dist/env.d.ts CHANGED
@@ -10,8 +10,25 @@ export interface DuckdbSettings {
10
10
  /** Path to the persisted `.duckdb` file, or `:memory:` for an ephemeral store. */
11
11
  path: string;
12
12
  }
13
+ /**
14
+ * ClickHouse (optional single-tenant scale store, ADR 0020) connection settings.
15
+ * Read from the environment but unused by the default DuckDB store, so the OSS
16
+ * install needs neither a ClickHouse server nor the client until opted into via
17
+ * `COLLECTOR_STORE=clickhouse`. Mirrors the `CLICKHOUSE_*` names in `.env.example`.
18
+ */
19
+ export interface ClickhouseSettings {
20
+ /** HTTP endpoint of the ClickHouse server (used by `@clickhouse/client`). */
21
+ url: string;
22
+ /** Target database. */
23
+ database: string;
24
+ /** Username. */
25
+ username: string;
26
+ /** Password (empty by default for a local dev server). */
27
+ password: string;
28
+ }
13
29
  export interface DbSettings {
14
30
  duckdb: DuckdbSettings;
31
+ clickhouse: ClickhouseSettings;
15
32
  /** Opt-in raw per-session retention for replay (ADR 0003). */
16
33
  enableRawSessionRetention: boolean;
17
34
  }
package/dist/env.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,8DAA8D;IAC9D,yBAAyB,EAAE,OAAO,CAAC;CACpC;AAED,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAmC9C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,GAAiB,GAAG,UAAU,CAOjE"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,8DAA8D;IAC9D,yBAAyB,EAAE,OAAO,CAAC;CACpC;AAED,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAmC9C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,GAAiB,GAAG,UAAU,CAajE"}
package/dist/env.js CHANGED
@@ -49,6 +49,12 @@ export function readDbSettings(env = process.env) {
49
49
  duckdb: {
50
50
  path: env.DUCKDB_PATH ?? defaultDuckdbPath(),
51
51
  },
52
+ clickhouse: {
53
+ url: env.CLICKHOUSE_URL ?? "http://localhost:8123",
54
+ database: env.CLICKHOUSE_DATABASE ?? "uptimizr",
55
+ username: env.CLICKHOUSE_USER ?? "default",
56
+ password: env.CLICKHOUSE_PASSWORD ?? "",
57
+ },
52
58
  enableRawSessionRetention: bool(env.ENABLE_RAW_SESSION_RETENTION, false),
53
59
  };
54
60
  }
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAgB1C,SAAS,IAAI,CAAC,KAAyB,EAAE,QAAiB;IACxD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC;IACnC,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,SAAS,CAAC;QACR,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QACrC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iBAAiB;IACxB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAW,OAAO,CAAC,GAAG;IACnD,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,iBAAiB,EAAE;SAC7C;QACD,yBAAyB,EAAE,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC;KACzE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAkC1C,SAAS,IAAI,CAAC,KAAyB,EAAE,QAAiB;IACxD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,QAAQ,CAAC;IACnC,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,SAAS,CAAC;QACR,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,SAAS,CAAC;QACrC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iBAAiB;IACxB,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAW,OAAO,CAAC,GAAG;IACnD,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,iBAAiB,EAAE;SAC7C;QACD,UAAU,EAAE;YACV,GAAG,EAAE,GAAG,CAAC,cAAc,IAAI,uBAAuB;YAClD,QAAQ,EAAE,GAAG,CAAC,mBAAmB,IAAI,UAAU;YAC/C,QAAQ,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS;YAC1C,QAAQ,EAAE,GAAG,CAAC,mBAAmB,IAAI,EAAE;SACxC;QACD,yBAAyB,EAAE,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,KAAK,CAAC;KACzE,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -10,7 +10,7 @@
10
10
  * Server/Node only — no DOM imports. Aggregations are query-time in v1.
11
11
  */
12
12
  export { readDbSettings } from "./env.js";
13
- export type { DbSettings, DuckdbSettings } from "./env.js";
13
+ export type { DbSettings, DuckdbSettings, ClickhouseSettings } from "./env.js";
14
14
  export { toEventRow, formatUtcTimestamp } from "./events.js";
15
15
  export type { EventRow, SessionMeta } from "./events.js";
16
16
  export { toNodeSampleRow, nodeSampleRowToEvent } from "./events.js";
@@ -19,6 +19,7 @@ export { hashApiKey, apiKeyPrefix, generateApiKey } from "./metadata.js";
19
19
  export type { Project, ApiKeyRecord, ApiKeyCapability, ResolvedApiKey, SceneRepresentation, SceneRepresentationKind, SceneRepresentationSummary, } from "./metadata.js";
20
20
  export type { Dialect, ParamType } from "./query/dialect.js";
21
21
  export { duckdbDialect, toDuckdbTimestamp } from "./query/duckdbDialect.js";
22
+ export { clickhouseDialect, toClickhouseTimestamp } from "./query/clickhouseDialect.js";
22
23
  export { buildListSessions, buildPointerHeatmap, buildWorldHeatmap, buildGazeHeatmap, buildCameraDirectionHeatmap, buildCameraPositionHeatmap, buildSessionTrajectory, buildClickGazeRay, buildFlowHeatmap, buildTopMeshes, buildMeshDwell, buildDeadClicks, buildRageClicks, buildHoverDwell, buildCompileStalls, buildResourceSummary, buildCapabilityChanges, buildCameraGestures, buildPerfSummary, buildPerfDistribution, buildFpsHistogram, buildFrameTimePercentiles, buildJankRate, buildPerfByDevice, buildPerfByScene, buildResourcePercentiles, buildStabilityCounts, buildPerfDaily, buildEventsDaily, buildDistinctScenes, buildTimeseries, buildEventTypeCounts, buildSceneCoverage, buildCameraDistance, buildNavigationStats, buildXrRotationRate, buildXrSourceUsage, buildXrAbandonment, buildInteractionsBySource, } from "./query/aggregations.js";
23
24
  export type { QuerySpec, RangeOptions, SceneOptions, SourceOptions, SessionOptions, CameraModeOptions, TimeseriesOptions, SessionSummaryRow, HeatmapBinRow, WorldHeatmapBinRow, PositionBinRow, TrajectoryPointRow, DirectionBinRow, ClickGazeRayRow, FlowLinkRow, MeshCountRow, MeshDwellRow, DeadClickRow, RageClickRow, HoverDwellRow, CompileStallRow, ResourceSummaryRow, CapabilityChangeRow, CameraGestureRow, PerfSummaryRow, PerfDistributionRow, FpsHistogramRow, FrameTimePercentileRow, JankRateRow, PerfByDeviceRow, PerfBySceneRow, ResourcePercentileRow, StabilityCountRow, PerfDailyRow, EventsDailyRow, SceneRow, TimeseriesBucketRow, EventTypeCountRow, CoverageVoxelRow, CameraDistanceBucketRow, NavigationStatsRow, XrRotationRateRow, XrSourceUsageRow, XrAbandonmentRow, InteractionSourceRow, } from "./query/types.js";
24
25
  export { createDuckdbClient, convertValue } from "./duckdb/client.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ export { toNodeSampleRow, nodeSampleRowToEvent } from "./events.js";
17
17
  // --- Engine-neutral metadata helpers and types (ADR 0020) ---
18
18
  export { hashApiKey, apiKeyPrefix, generateApiKey } from "./metadata.js";
19
19
  export { duckdbDialect, toDuckdbTimestamp } from "./query/duckdbDialect.js";
20
+ export { clickhouseDialect, toClickhouseTimestamp } from "./query/clickhouseDialect.js";
20
21
  export { buildListSessions, buildPointerHeatmap, buildWorldHeatmap, buildGazeHeatmap, buildCameraDirectionHeatmap, buildCameraPositionHeatmap, buildSessionTrajectory, buildClickGazeRay, buildFlowHeatmap, buildTopMeshes, buildMeshDwell, buildDeadClicks, buildRageClicks, buildHoverDwell, buildCompileStalls, buildResourceSummary, buildCapabilityChanges, buildCameraGestures, buildPerfSummary, buildPerfDistribution, buildFpsHistogram, buildFrameTimePercentiles, buildJankRate, buildPerfByDevice, buildPerfByScene, buildResourcePercentiles, buildStabilityCounts, buildPerfDaily, buildEventsDaily, buildDistinctScenes, buildTimeseries, buildEventTypeCounts, buildSceneCoverage, buildCameraDistance, buildNavigationStats, buildXrRotationRate, buildXrSourceUsage, buildXrAbandonment, buildInteractionsBySource, } from "./query/aggregations.js";
21
22
  // --- DuckDB (OSS single-file store, ADR 0020) ---
22
23
  export { createDuckdbClient, convertValue } from "./duckdb/client.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,sDAAsD;AACtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAG7D,kFAAkF;AAClF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGpE,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAgBzE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAiDjC,mDAAmD;AACnD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,YAAY,IAAI,kBAAkB,EAClC,gBAAgB,IAAI,sBAAsB,EAC1C,mBAAmB,IAAI,yBAAyB,EAChD,cAAc,IAAI,oBAAoB,GACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,IAAI,mBAAmB,EACpC,UAAU,IAAI,gBAAgB,EAC9B,YAAY,IAAI,kBAAkB,EAClC,aAAa,IAAI,mBAAmB,GACrC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,IAAI,sBAAsB,EAC1C,sBAAsB,IAAI,4BAA4B,EACtD,wBAAwB,IAAI,8BAA8B,GAC3D,MAAM,2BAA2B,CAAC;AAEnC,iDAAiD;AACjD,8EAA8E;AAC9E,kFAAkF;AAClF,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C,sDAAsD;AACtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAG7D,kFAAkF;AAClF,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGpE,+DAA+D;AAC/D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAgBzE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,2BAA2B,EAC3B,0BAA0B,EAC1B,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AAiDjC,mDAAmD;AACnD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEtE,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EACL,YAAY,IAAI,kBAAkB,EAClC,gBAAgB,IAAI,sBAAsB,EAC1C,mBAAmB,IAAI,yBAAyB,EAChD,cAAc,IAAI,oBAAoB,GACvC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,IAAI,mBAAmB,EACpC,UAAU,IAAI,gBAAgB,EAC9B,YAAY,IAAI,kBAAkB,EAClC,aAAa,IAAI,mBAAmB,GACrC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gBAAgB,IAAI,sBAAsB,EAC1C,sBAAsB,IAAI,4BAA4B,EACtD,wBAAwB,IAAI,8BAA8B,GAC3D,MAAM,2BAA2B,CAAC;AAEnC,iDAAiD;AACjD,8EAA8E;AAC9E,kFAAkF;AAClF,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -454,7 +454,7 @@ export function buildMeshDwell(projectId, opts, d) {
454
454
  FROM events
455
455
  WHERE project_id = ${pid} AND event_type = 'mesh_visibility' AND mesh != ''${range}${scene}${session}
456
456
  GROUP BY mesh
457
- ORDER BY visible_ms DESC
457
+ ORDER BY sum(visible_ms) DESC
458
458
  LIMIT ${limit}
459
459
  `,
460
460
  query_params: bag.values,
@@ -1042,7 +1042,7 @@ export function buildEventsDaily(projectId, opts, d) {
1042
1042
  FROM events_daily
1043
1043
  WHERE project_id = ${pid}${range}
1044
1044
  GROUP BY day, event_type
1045
- ORDER BY day DESC, events DESC
1045
+ ORDER BY day DESC, sum(events) DESC
1046
1046
  LIMIT ${limit}
1047
1047
  `,
1048
1048
  query_params: bag.values,
@@ -0,0 +1,36 @@
1
+ /**
2
+ * ClickHouse dialect for the query layer (ADR 0020).
3
+ *
4
+ * ClickHouse is the optional single-tenant scale engine: a columnar, concurrent
5
+ * store for self-hosters who outgrow DuckDB's single-writer file. This dialect
6
+ * renders the engine-specific fragments of each shared aggregation
7
+ * (`aggregations.ts`) to ClickHouse SQL, so the bulk of every query stays shared
8
+ * with DuckDB.
9
+ *
10
+ * Like the DuckDB dialect, it is *single-tenant* — it carries no
11
+ * `org_id`/tenant-isolation concerns — which keeps it relocatable across the
12
+ * open-core boundary.
13
+ *
14
+ * Binding model: parameters are emitted as ClickHouse typed placeholders
15
+ * (`{name:Type}`) and supplied to `@clickhouse/client` as a `query_params`
16
+ * record. Timestamp params are bound as naive-UTC `DateTime64(3)` strings (see
17
+ * {@link toClickhouseTimestamp}); DuckDB binds the same literal form, so both
18
+ * engines order and bucket time identically.
19
+ *
20
+ * Rollup note: the single-tenant store exposes the daily rollups as plain
21
+ * ClickHouse views (not `AggregatingMergeTree` materialized views — those are
22
+ * the scale tier), pre-grouped by `(project_id, …, day)`. Each read GROUP BY
23
+ * therefore sees one source row per group, so the `-Merge` combinators reduce to
24
+ * a plain pass-through aggregate of the precomputed value, mirroring the DuckDB
25
+ * view strategy.
26
+ */
27
+ import type { Dialect } from "./dialect.js";
28
+ /**
29
+ * Format an epoch-millisecond timestamp as a naive-UTC `YYYY-MM-DD HH:MM:SS.mmm`
30
+ * string for binding to a ClickHouse `DateTime64(3)` column/param. Mirrors the
31
+ * DuckDB `TIMESTAMP` literal format so both stores order and bucket time
32
+ * identically (both treat the naive literal as UTC).
33
+ */
34
+ export declare function toClickhouseTimestamp(epochMs: number): string;
35
+ export declare const clickhouseDialect: Dialect;
36
+ //# sourceMappingURL=clickhouseDialect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickhouseDialect.d.ts","sourceRoot":"","sources":["../../src/query/clickhouseDialect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,cAAc,CAAC;AAkBvD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO7D;AAED,eAAO,MAAM,iBAAiB,EAAE,OA2D/B,CAAC"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * ClickHouse dialect for the query layer (ADR 0020).
3
+ *
4
+ * ClickHouse is the optional single-tenant scale engine: a columnar, concurrent
5
+ * store for self-hosters who outgrow DuckDB's single-writer file. This dialect
6
+ * renders the engine-specific fragments of each shared aggregation
7
+ * (`aggregations.ts`) to ClickHouse SQL, so the bulk of every query stays shared
8
+ * with DuckDB.
9
+ *
10
+ * Like the DuckDB dialect, it is *single-tenant* — it carries no
11
+ * `org_id`/tenant-isolation concerns — which keeps it relocatable across the
12
+ * open-core boundary.
13
+ *
14
+ * Binding model: parameters are emitted as ClickHouse typed placeholders
15
+ * (`{name:Type}`) and supplied to `@clickhouse/client` as a `query_params`
16
+ * record. Timestamp params are bound as naive-UTC `DateTime64(3)` strings (see
17
+ * {@link toClickhouseTimestamp}); DuckDB binds the same literal form, so both
18
+ * engines order and bucket time identically.
19
+ *
20
+ * Rollup note: the single-tenant store exposes the daily rollups as plain
21
+ * ClickHouse views (not `AggregatingMergeTree` materialized views — those are
22
+ * the scale tier), pre-grouped by `(project_id, …, day)`. Each read GROUP BY
23
+ * therefore sees one source row per group, so the `-Merge` combinators reduce to
24
+ * a plain pass-through aggregate of the precomputed value, mirroring the DuckDB
25
+ * view strategy.
26
+ */
27
+ /** Map a logical {@link ParamType} to its ClickHouse parameter type name. */
28
+ function chParamType(type) {
29
+ switch (type) {
30
+ case "string":
31
+ return "String";
32
+ case "u32":
33
+ return "UInt32";
34
+ case "f64":
35
+ return "Float64";
36
+ case "timestamp":
37
+ return "DateTime64(3)";
38
+ case "date":
39
+ return "Date";
40
+ }
41
+ }
42
+ /**
43
+ * Format an epoch-millisecond timestamp as a naive-UTC `YYYY-MM-DD HH:MM:SS.mmm`
44
+ * string for binding to a ClickHouse `DateTime64(3)` column/param. Mirrors the
45
+ * DuckDB `TIMESTAMP` literal format so both stores order and bucket time
46
+ * identically (both treat the naive literal as UTC).
47
+ */
48
+ export function toClickhouseTimestamp(epochMs) {
49
+ const d = new Date(epochMs);
50
+ const p = (n, w = 2) => String(n).padStart(w, "0");
51
+ return (`${d.getUTCFullYear()}-${p(d.getUTCMonth() + 1)}-${p(d.getUTCDate())} ` +
52
+ `${p(d.getUTCHours())}:${p(d.getUTCMinutes())}:${p(d.getUTCSeconds())}.${p(d.getUTCMilliseconds(), 3)}`);
53
+ }
54
+ export const clickhouseDialect = {
55
+ name: "clickhouse",
56
+ placeholder(name, type) {
57
+ return `{${name}:${chParamType(type)}}`;
58
+ },
59
+ timestampValue(epochMs) {
60
+ return toClickhouseTimestamp(epochMs);
61
+ },
62
+ quantile(expr, q) {
63
+ // Plain `quantile` does type-7 linear interpolation between adjacent ranks,
64
+ // matching DuckDB's `quantile_cont`. It is exact (and deterministic) for
65
+ // datasets within the reservoir (≤8192 values); NULLs are ignored, mirroring
66
+ // DuckDB. (`quantileExact` returns an actual element instead of interpolating,
67
+ // so it would diverge from the golden on even-sized inputs.)
68
+ return `quantile(${q})(${expr})`;
69
+ },
70
+ vectorNorm(expr) {
71
+ return `L2Norm(${expr})`;
72
+ },
73
+ avgIf(value, cond) {
74
+ return `avgIf(${value}, ${cond})`;
75
+ },
76
+ anyValue(expr) {
77
+ return `any(${expr})`;
78
+ },
79
+ timeBucketMs(tsExpr, intervalPlaceholder) {
80
+ // toUnixTimestamp64Milli(ts) yields integer milliseconds (UTC); floor to the
81
+ // interval grid to match DuckDB's epoch_ms bucketing.
82
+ return `floor(toUnixTimestamp64Milli(${tsExpr}) / (${intervalPlaceholder} * 1000)) * (${intervalPlaceholder} * 1000)`;
83
+ },
84
+ epochMs(tsExpr) {
85
+ return `toUnixTimestamp64Milli(${tsExpr})`;
86
+ },
87
+ toDate(expr) {
88
+ return `toDate(${expr})`;
89
+ },
90
+ toText(expr) {
91
+ return `toString(${expr})`;
92
+ },
93
+ jsonText(column, ...path) {
94
+ // ClickHouse JSONExtractString takes the nested key path as trailing args.
95
+ const keys = path.map((p) => `'${p}'`).join(", ");
96
+ return `JSONExtractString(${column}, ${keys})`;
97
+ },
98
+ // Single-tenant rollups are plain views (pre-grouped by day), so each group has
99
+ // exactly one source row and the "merge" of a single precomputed value is a
100
+ // plain pass-through aggregate. (AggregatingMergeTree `-Merge` combinators are
101
+ // the scale tier.)
102
+ countMerge(stateExpr) {
103
+ return `sum(${stateExpr})`;
104
+ },
105
+ avgMerge(stateExpr) {
106
+ return `avg(${stateExpr})`;
107
+ },
108
+ quantileMerge(stateExpr, q) {
109
+ return `quantile(${q})(${stateExpr})`;
110
+ },
111
+ asofInnerJoin: "ASOF INNER JOIN",
112
+ asofLeftJoin: "ASOF LEFT JOIN",
113
+ };
114
+ //# sourceMappingURL=clickhouseDialect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clickhouseDialect.js","sourceRoot":"","sources":["../../src/query/clickhouseDialect.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uptimizr/db",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "OSS storage contracts (dialect-agnostic query layer, neutral event/metadata types) and the single-file DuckDB store for Uptimizr.",
5
5
  "keywords": [
6
6
  "uptimizr",