@hypequery/clickhouse 1.6.0 → 1.6.1
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/README.md +19 -14
- package/dist/cli/generate-types.js +5 -12
- package/dist/core/adapters/clickhouse-adapter.d.ts +14 -0
- package/dist/core/adapters/clickhouse-adapter.d.ts.map +1 -0
- package/dist/core/adapters/clickhouse-adapter.js +58 -0
- package/dist/core/adapters/database-adapter.d.ts +13 -0
- package/dist/core/adapters/database-adapter.d.ts.map +1 -0
- package/dist/core/adapters/database-adapter.js +1 -0
- package/dist/core/cache/cache-manager.d.ts.map +1 -1
- package/dist/core/cache/cache-manager.js +6 -5
- package/dist/core/dialects/clickhouse-dialect.d.ts +10 -0
- package/dist/core/dialects/clickhouse-dialect.d.ts.map +1 -0
- package/dist/core/dialects/clickhouse-dialect.js +47 -0
- package/dist/core/dialects/sql-dialect.d.ts +11 -0
- package/dist/core/dialects/sql-dialect.d.ts.map +1 -0
- package/dist/core/dialects/sql-dialect.js +1 -0
- package/dist/core/features/aggregations.d.ts +5 -5
- package/dist/core/features/analytics.d.ts +804 -5
- package/dist/core/features/analytics.d.ts.map +1 -1
- package/dist/core/features/analytics.js +6 -9
- package/dist/core/features/executor.d.ts.map +1 -1
- package/dist/core/features/executor.js +26 -53
- package/dist/core/features/filtering.d.ts +5 -5
- package/dist/core/features/joins.d.ts +1 -1
- package/dist/core/features/query-modifiers.d.ts +6 -6
- package/dist/core/query-builder.d.ts +17 -6
- package/dist/core/query-builder.d.ts.map +1 -1
- package/dist/core/query-builder.js +25 -32
- package/dist/core/tests/integration/setup.d.ts +3 -1
- package/dist/core/tests/integration/setup.d.ts.map +1 -1
- package/dist/core/tests/test-utils.d.ts.map +1 -1
- package/dist/core/tests/test-utils.js +12 -2
- package/dist/core/types/select-types.d.ts +1 -1
- package/dist/core/types/select-types.d.ts.map +1 -1
- package/dist/core/utils/streaming-helpers.d.ts.map +1 -1
- package/dist/core/utils/streaming-helpers.js +8 -0
- package/dist/core/utils.d.ts.map +1 -1
- package/dist/core/utils.js +3 -0
- package/dist/dataset/definition.d.ts +135 -0
- package/dist/dataset/definition.d.ts.map +1 -0
- package/dist/dataset/definition.js +265 -0
- package/dist/dataset/helpers.d.ts +136 -0
- package/dist/dataset/helpers.d.ts.map +1 -0
- package/dist/dataset/helpers.js +189 -0
- package/dist/dataset/index.d.ts +51 -0
- package/dist/dataset/index.d.ts.map +1 -0
- package/dist/dataset/index.js +59 -0
- package/dist/dataset/introspection.d.ts +133 -0
- package/dist/dataset/introspection.d.ts.map +1 -0
- package/dist/dataset/introspection.js +239 -0
- package/dist/dataset/sql-tag.d.ts +51 -0
- package/dist/dataset/sql-tag.d.ts.map +1 -0
- package/dist/dataset/sql-tag.js +86 -0
- package/dist/dataset/types.d.ts +300 -0
- package/dist/dataset/types.d.ts.map +1 -0
- package/dist/dataset/types.js +11 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -15
- package/dist/migrations/config/index.d.ts +3 -0
- package/dist/migrations/config/index.d.ts.map +1 -0
- package/dist/migrations/config/index.js +1 -0
- package/dist/migrations/config/types.d.ts +45 -0
- package/dist/migrations/config/types.d.ts.map +1 -0
- package/dist/migrations/config/types.js +28 -0
- package/dist/migrations/diff/diff.d.ts +11 -0
- package/dist/migrations/diff/diff.d.ts.map +1 -0
- package/dist/migrations/diff/diff.js +240 -0
- package/dist/migrations/diff/index.d.ts +3 -0
- package/dist/migrations/diff/index.d.ts.map +1 -0
- package/dist/migrations/diff/index.js +1 -0
- package/dist/migrations/diff/types.d.ts +74 -0
- package/dist/migrations/diff/types.d.ts.map +1 -0
- package/dist/migrations/diff/types.js +1 -0
- package/dist/migrations/schema/column.d.ts +71 -0
- package/dist/migrations/schema/column.d.ts.map +1 -0
- package/dist/migrations/schema/column.js +123 -0
- package/dist/migrations/schema/define.d.ts +24 -0
- package/dist/migrations/schema/define.d.ts.map +1 -0
- package/dist/migrations/schema/define.js +47 -0
- package/dist/migrations/schema/index.d.ts +4 -0
- package/dist/migrations/schema/index.d.ts.map +1 -0
- package/dist/migrations/schema/index.js +2 -0
- package/dist/migrations/schema/types.d.ts +74 -0
- package/dist/migrations/schema/types.d.ts.map +1 -0
- package/dist/migrations/schema/types.js +1 -0
- package/dist/migrations/snapshot/index.d.ts +3 -0
- package/dist/migrations/snapshot/index.d.ts.map +1 -0
- package/dist/migrations/snapshot/index.js +1 -0
- package/dist/migrations/snapshot/serialize.d.ts +21 -0
- package/dist/migrations/snapshot/serialize.d.ts.map +1 -0
- package/dist/migrations/snapshot/serialize.js +127 -0
- package/dist/migrations/snapshot/types.d.ts +47 -0
- package/dist/migrations/snapshot/types.d.ts.map +1 -0
- package/dist/migrations/snapshot/types.js +1 -0
- package/dist/migrations/sql/index.d.ts +4 -0
- package/dist/migrations/sql/index.d.ts.map +1 -0
- package/dist/migrations/sql/index.js +2 -0
- package/dist/migrations/sql/render.d.ts +11 -0
- package/dist/migrations/sql/render.d.ts.map +1 -0
- package/dist/migrations/sql/render.js +334 -0
- package/dist/migrations/sql/types.d.ts +48 -0
- package/dist/migrations/sql/types.d.ts.map +1 -0
- package/dist/migrations/sql/types.js +1 -0
- package/dist/migrations/sql/write.d.ts +9 -0
- package/dist/migrations/sql/write.d.ts.map +1 -0
- package/dist/migrations/sql/write.js +31 -0
- package/dist/types/base.d.ts +2 -1
- package/dist/types/base.d.ts.map +1 -1
- package/dist/types/clickhouse-types.d.ts +3 -1
- package/dist/types/clickhouse-types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL Tagged Template Literal
|
|
3
|
+
*
|
|
4
|
+
* Marks a string as a SQL expression rather than a column reference.
|
|
5
|
+
* Used to distinguish between:
|
|
6
|
+
* - Simple column: 'region' (string)
|
|
7
|
+
* - SQL expression: sql`DATE(created_at)` (SQLExpression)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* dimensions: {
|
|
12
|
+
* region: 'region', // Simple column reference
|
|
13
|
+
* date: sql`DATE(created_at)`, // SQL expression
|
|
14
|
+
* hour: sql`toHour(created_at)` // SQL expression
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Represents a SQL expression with metadata
|
|
20
|
+
*/
|
|
21
|
+
export interface SQLExpression {
|
|
22
|
+
readonly __brand: 'SQLExpression';
|
|
23
|
+
readonly sql: string;
|
|
24
|
+
readonly raw: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Tagged template literal for SQL expressions
|
|
28
|
+
*
|
|
29
|
+
* @param strings - Template string array
|
|
30
|
+
* @param values - Interpolated values
|
|
31
|
+
* @returns SQLExpression object
|
|
32
|
+
*/
|
|
33
|
+
export declare function sql(strings: TemplateStringsArray, ...values: unknown[]): SQLExpression;
|
|
34
|
+
/**
|
|
35
|
+
* Type guard to check if a value is a SQLExpression
|
|
36
|
+
*
|
|
37
|
+
* @param value - Value to check
|
|
38
|
+
* @returns True if value is a SQLExpression
|
|
39
|
+
*/
|
|
40
|
+
export declare function isSQLExpression(value: unknown): value is SQLExpression;
|
|
41
|
+
/**
|
|
42
|
+
* Convert a value to a SQL string
|
|
43
|
+
* - If it's a SQLExpression, return the sql property
|
|
44
|
+
* - If it's a string, return it as-is (assumed to be a column name)
|
|
45
|
+
* - Otherwise, throw an error
|
|
46
|
+
*
|
|
47
|
+
* @param value - Value to convert
|
|
48
|
+
* @returns SQL string
|
|
49
|
+
*/
|
|
50
|
+
export declare function toSQLString(value: string | SQLExpression): string;
|
|
51
|
+
//# sourceMappingURL=sql-tag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-tag.d.ts","sourceRoot":"","sources":["../../src/dataset/sql-tag.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CACjB,OAAO,EAAE,oBAAoB,EAC7B,GAAG,MAAM,EAAE,OAAO,EAAE,GACnB,aAAa,CA+Bf;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAOtE;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,CAYjE"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL Tagged Template Literal
|
|
3
|
+
*
|
|
4
|
+
* Marks a string as a SQL expression rather than a column reference.
|
|
5
|
+
* Used to distinguish between:
|
|
6
|
+
* - Simple column: 'region' (string)
|
|
7
|
+
* - SQL expression: sql`DATE(created_at)` (SQLExpression)
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* dimensions: {
|
|
12
|
+
* region: 'region', // Simple column reference
|
|
13
|
+
* date: sql`DATE(created_at)`, // SQL expression
|
|
14
|
+
* hour: sql`toHour(created_at)` // SQL expression
|
|
15
|
+
* }
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Tagged template literal for SQL expressions
|
|
20
|
+
*
|
|
21
|
+
* @param strings - Template string array
|
|
22
|
+
* @param values - Interpolated values
|
|
23
|
+
* @returns SQLExpression object
|
|
24
|
+
*/
|
|
25
|
+
export function sql(strings, ...values) {
|
|
26
|
+
// Build the SQL string by interleaving strings and values
|
|
27
|
+
let result = strings[0];
|
|
28
|
+
for (let i = 0; i < values.length; i++) {
|
|
29
|
+
const value = values[i];
|
|
30
|
+
// Handle nested SQL expressions
|
|
31
|
+
if (isSQLExpression(value)) {
|
|
32
|
+
result += value.sql;
|
|
33
|
+
}
|
|
34
|
+
else if (typeof value === 'string') {
|
|
35
|
+
// For security, we should escape string values
|
|
36
|
+
// In production, this would use proper escaping
|
|
37
|
+
result += value;
|
|
38
|
+
}
|
|
39
|
+
else if (typeof value === 'number') {
|
|
40
|
+
result += String(value);
|
|
41
|
+
}
|
|
42
|
+
else if (value === null || value === undefined) {
|
|
43
|
+
result += 'NULL';
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// For other types, convert to string
|
|
47
|
+
result += String(value);
|
|
48
|
+
}
|
|
49
|
+
result += strings[i + 1];
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
__brand: 'SQLExpression',
|
|
53
|
+
sql: result,
|
|
54
|
+
raw: true,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Type guard to check if a value is a SQLExpression
|
|
59
|
+
*
|
|
60
|
+
* @param value - Value to check
|
|
61
|
+
* @returns True if value is a SQLExpression
|
|
62
|
+
*/
|
|
63
|
+
export function isSQLExpression(value) {
|
|
64
|
+
return (typeof value === 'object' &&
|
|
65
|
+
value !== null &&
|
|
66
|
+
'__brand' in value &&
|
|
67
|
+
value.__brand === 'SQLExpression');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Convert a value to a SQL string
|
|
71
|
+
* - If it's a SQLExpression, return the sql property
|
|
72
|
+
* - If it's a string, return it as-is (assumed to be a column name)
|
|
73
|
+
* - Otherwise, throw an error
|
|
74
|
+
*
|
|
75
|
+
* @param value - Value to convert
|
|
76
|
+
* @returns SQL string
|
|
77
|
+
*/
|
|
78
|
+
export function toSQLString(value) {
|
|
79
|
+
if (typeof value === 'string') {
|
|
80
|
+
return value;
|
|
81
|
+
}
|
|
82
|
+
if (isSQLExpression(value)) {
|
|
83
|
+
return value.sql;
|
|
84
|
+
}
|
|
85
|
+
throw new Error(`Expected string or SQLExpression, got ${typeof value}`);
|
|
86
|
+
}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dataset API Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive type system for the dataset API, including:
|
|
5
|
+
* - Dataset definitions
|
|
6
|
+
* - Dimension and metric types
|
|
7
|
+
* - Filter operators and types
|
|
8
|
+
* - Query execution types
|
|
9
|
+
* - Type inference utilities
|
|
10
|
+
*/
|
|
11
|
+
import type { SQLExpression } from './sql-tag.js';
|
|
12
|
+
/**
|
|
13
|
+
* Dimension value types
|
|
14
|
+
*/
|
|
15
|
+
export type DimensionType = 'string' | 'number' | 'date' | 'boolean';
|
|
16
|
+
/**
|
|
17
|
+
* Simple dimension definition (column name as string)
|
|
18
|
+
*/
|
|
19
|
+
export type SimpleDimension = string;
|
|
20
|
+
/**
|
|
21
|
+
* Complex dimension definition with metadata
|
|
22
|
+
*/
|
|
23
|
+
export interface DimensionDefinition {
|
|
24
|
+
/** SQL expression or column name */
|
|
25
|
+
sql: string | SQLExpression;
|
|
26
|
+
/** Data type of the dimension */
|
|
27
|
+
type: DimensionType;
|
|
28
|
+
/** Human-readable description (for AI agents) */
|
|
29
|
+
description: string;
|
|
30
|
+
/** Example values (for AI context) */
|
|
31
|
+
examples?: string[];
|
|
32
|
+
/** Whether this dimension requires a join */
|
|
33
|
+
join?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Dimension definition (simple or complex)
|
|
37
|
+
*/
|
|
38
|
+
export type Dimension = SimpleDimension | SQLExpression | DimensionDefinition;
|
|
39
|
+
/**
|
|
40
|
+
* Map of dimension names to definitions
|
|
41
|
+
*/
|
|
42
|
+
export type DimensionsMap = Record<string, Dimension>;
|
|
43
|
+
/**
|
|
44
|
+
* Supported metric aggregation types
|
|
45
|
+
*/
|
|
46
|
+
export type MetricAggregationType = 'count' | 'sum' | 'avg' | 'min' | 'max' | 'countDistinct' | 'custom';
|
|
47
|
+
/**
|
|
48
|
+
* Metric format hints
|
|
49
|
+
*/
|
|
50
|
+
export type MetricFormat = 'currency' | 'percent' | 'number' | 'bytes';
|
|
51
|
+
/**
|
|
52
|
+
* Metric definition
|
|
53
|
+
*/
|
|
54
|
+
export interface MetricDefinition {
|
|
55
|
+
/** Aggregation type */
|
|
56
|
+
type: MetricAggregationType;
|
|
57
|
+
/** SQL expression or column name */
|
|
58
|
+
sql: string | SQLExpression;
|
|
59
|
+
/** Human-readable description (for AI agents) */
|
|
60
|
+
description: string;
|
|
61
|
+
/** Format hint for display */
|
|
62
|
+
format?: MetricFormat;
|
|
63
|
+
/** Whether this metric requires a join */
|
|
64
|
+
join?: string;
|
|
65
|
+
/** Allow fan-out (for oneToMany joins) - advanced use only */
|
|
66
|
+
allowFanout?: boolean;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Map of metric names to definitions
|
|
70
|
+
*/
|
|
71
|
+
export type MetricsMap = Record<string, MetricDefinition>;
|
|
72
|
+
/**
|
|
73
|
+
* Multi-tenancy configuration
|
|
74
|
+
*/
|
|
75
|
+
export interface TenantConfig {
|
|
76
|
+
/** Column name for tenant isolation */
|
|
77
|
+
column: string;
|
|
78
|
+
/** Whether tenant filtering is required */
|
|
79
|
+
required?: boolean;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Complexity limits to prevent expensive queries
|
|
83
|
+
*/
|
|
84
|
+
export interface DatasetLimits {
|
|
85
|
+
/** Maximum number of dimensions in a query */
|
|
86
|
+
maxDimensions?: number;
|
|
87
|
+
/** Maximum number of metrics in a query */
|
|
88
|
+
maxMetrics?: number;
|
|
89
|
+
/** Maximum number of filters in a query */
|
|
90
|
+
maxFilters?: number;
|
|
91
|
+
/** Maximum result set size */
|
|
92
|
+
maxResultSize?: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Complete dataset definition
|
|
96
|
+
*/
|
|
97
|
+
export interface DatasetDefinition<TDimensions extends DimensionsMap = DimensionsMap, TMetrics extends MetricsMap = MetricsMap> {
|
|
98
|
+
/** Unique dataset name */
|
|
99
|
+
name: string;
|
|
100
|
+
/** Human-readable description (for AI agents) */
|
|
101
|
+
description: string;
|
|
102
|
+
/** Source table name */
|
|
103
|
+
table: string;
|
|
104
|
+
/** Schema type (for type inference) */
|
|
105
|
+
schema?: unknown;
|
|
106
|
+
/** Dimension definitions */
|
|
107
|
+
dimensions: TDimensions;
|
|
108
|
+
/** Metric definitions */
|
|
109
|
+
metrics: TMetrics;
|
|
110
|
+
/** Multi-tenancy configuration */
|
|
111
|
+
tenant?: TenantConfig;
|
|
112
|
+
/** Complexity guardrails */
|
|
113
|
+
limits?: DatasetLimits;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Map of dataset names to definitions
|
|
117
|
+
*/
|
|
118
|
+
export type DatasetsMap = Record<string, DatasetDefinition>;
|
|
119
|
+
/**
|
|
120
|
+
* Filter operator types
|
|
121
|
+
*/
|
|
122
|
+
export type FilterOperator = 'eq' | 'ne' | 'gt' | 'lt' | 'gte' | 'lte' | 'in' | 'notIn' | 'between' | 'like' | 'notLike' | 'isNull' | 'isNotNull' | 'inDateRange';
|
|
123
|
+
/**
|
|
124
|
+
* Date range helper values
|
|
125
|
+
*/
|
|
126
|
+
export type DateRangeValue = 'today' | 'yesterday' | 'last_7_days' | 'last_30_days' | 'this_week' | 'last_week' | 'this_month' | 'last_month' | 'this_quarter' | 'last_quarter' | 'this_year' | 'last_year' | {
|
|
127
|
+
start: string;
|
|
128
|
+
end: string;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Filter value type based on operator
|
|
132
|
+
*/
|
|
133
|
+
export type FilterValue<TOperator extends FilterOperator = FilterOperator> = TOperator extends 'in' | 'notIn' ? unknown[] : TOperator extends 'between' ? [unknown, unknown] : TOperator extends 'isNull' | 'isNotNull' ? never : TOperator extends 'inDateRange' ? DateRangeValue : unknown;
|
|
134
|
+
/**
|
|
135
|
+
* Filter definition
|
|
136
|
+
*/
|
|
137
|
+
export interface FilterDefinition<TOperator extends FilterOperator = FilterOperator> {
|
|
138
|
+
/** Dimension to filter on */
|
|
139
|
+
dimension: string;
|
|
140
|
+
/** Filter operator */
|
|
141
|
+
operator: TOperator;
|
|
142
|
+
/** Filter value (type depends on operator) */
|
|
143
|
+
value?: FilterValue<TOperator>;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Array of filters
|
|
147
|
+
*/
|
|
148
|
+
export type Filters = FilterDefinition[];
|
|
149
|
+
/**
|
|
150
|
+
* Sort direction
|
|
151
|
+
*/
|
|
152
|
+
export type SortDirection = 'asc' | 'desc';
|
|
153
|
+
/**
|
|
154
|
+
* Order by dimension
|
|
155
|
+
*/
|
|
156
|
+
export interface OrderByDimension {
|
|
157
|
+
dimension: string;
|
|
158
|
+
direction: SortDirection;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Order by metric
|
|
162
|
+
*/
|
|
163
|
+
export interface OrderByMetric {
|
|
164
|
+
metric: string;
|
|
165
|
+
direction: SortDirection;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Order definition (dimension or metric)
|
|
169
|
+
*/
|
|
170
|
+
export type OrderBy = OrderByDimension | OrderByMetric;
|
|
171
|
+
/**
|
|
172
|
+
* Cache options for query results
|
|
173
|
+
*/
|
|
174
|
+
export interface CacheOptions {
|
|
175
|
+
/** Time-to-live in seconds */
|
|
176
|
+
ttl?: number;
|
|
177
|
+
/** Custom cache key */
|
|
178
|
+
key?: string;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Dataset query definition
|
|
182
|
+
*/
|
|
183
|
+
export interface DatasetQuery<TDataset extends DatasetDefinition = DatasetDefinition> {
|
|
184
|
+
/** Dimensions to include in the query */
|
|
185
|
+
dimensions: Array<keyof TDataset['dimensions'] & string>;
|
|
186
|
+
/** Metrics to include in the query */
|
|
187
|
+
metrics: Array<keyof TDataset['metrics'] & string>;
|
|
188
|
+
/** Filters to apply */
|
|
189
|
+
filters?: Filters;
|
|
190
|
+
/** Ordering */
|
|
191
|
+
order?: OrderBy[];
|
|
192
|
+
/** Result limit */
|
|
193
|
+
limit?: number;
|
|
194
|
+
/** Result offset (for pagination) */
|
|
195
|
+
offset?: number;
|
|
196
|
+
/** Cache options */
|
|
197
|
+
cache?: CacheOptions;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Query execution context (for multi-tenancy)
|
|
201
|
+
*/
|
|
202
|
+
export interface QueryContext {
|
|
203
|
+
/** Tenant ID for multi-tenant isolation */
|
|
204
|
+
tenantId?: string;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Query result metadata
|
|
208
|
+
*/
|
|
209
|
+
export interface QueryResultMetadata {
|
|
210
|
+
/** Dimensions included in the result */
|
|
211
|
+
dimensions: string[];
|
|
212
|
+
/** Metrics included in the result */
|
|
213
|
+
metrics: string[];
|
|
214
|
+
/** Number of rows returned */
|
|
215
|
+
rowCount: number;
|
|
216
|
+
/** Whether the result was served from cache */
|
|
217
|
+
cached: boolean;
|
|
218
|
+
/** Execution time in milliseconds */
|
|
219
|
+
executionTime?: number;
|
|
220
|
+
/** Generated SQL query */
|
|
221
|
+
sql?: string;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Query result
|
|
225
|
+
*/
|
|
226
|
+
export interface QueryResult<TRow = Record<string, unknown>> {
|
|
227
|
+
/** Result data */
|
|
228
|
+
data: TRow[];
|
|
229
|
+
/** Result metadata */
|
|
230
|
+
metadata: QueryResultMetadata;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Infer the TypeScript type from a dimension definition
|
|
234
|
+
*/
|
|
235
|
+
export type InferDimensionType<T> = T extends string ? string : T extends SQLExpression ? unknown : T extends DimensionDefinition ? T['type'] extends 'string' ? string : T['type'] extends 'number' ? number : T['type'] extends 'date' ? Date : T['type'] extends 'boolean' ? boolean : unknown : unknown;
|
|
236
|
+
/**
|
|
237
|
+
* Infer the TypeScript type from a metric definition
|
|
238
|
+
* All metrics return numbers
|
|
239
|
+
*/
|
|
240
|
+
export type InferMetricType<T> = T extends MetricDefinition ? number : number;
|
|
241
|
+
/**
|
|
242
|
+
* Infer the row type from a dataset query
|
|
243
|
+
*/
|
|
244
|
+
export type InferQueryRowType<TDataset extends DatasetDefinition, TDimensions extends Array<keyof TDataset['dimensions'] & string>, TMetrics extends Array<keyof TDataset['metrics'] & string>> = {
|
|
245
|
+
[K in TDimensions[number]]: InferDimensionType<TDataset['dimensions'][K]>;
|
|
246
|
+
} & {
|
|
247
|
+
[K in TMetrics[number]]: InferMetricType<TDataset['metrics'][K]>;
|
|
248
|
+
};
|
|
249
|
+
/**
|
|
250
|
+
* Infer the complete result type from a dataset query
|
|
251
|
+
*/
|
|
252
|
+
export type InferQueryResult<TDataset extends DatasetDefinition, TQuery extends DatasetQuery<TDataset>> = QueryResult<InferQueryRowType<TDataset, TQuery['dimensions'], TQuery['metrics']>>;
|
|
253
|
+
/**
|
|
254
|
+
* Introspected dimension schema (for AI agents)
|
|
255
|
+
*/
|
|
256
|
+
export interface IntrospectedDimension {
|
|
257
|
+
/** Dimension type */
|
|
258
|
+
type: DimensionType;
|
|
259
|
+
/** Human-readable description */
|
|
260
|
+
description?: string;
|
|
261
|
+
/** Example values */
|
|
262
|
+
examples?: string[];
|
|
263
|
+
/** SQL expression */
|
|
264
|
+
sql: string;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Introspected metric schema (for AI agents)
|
|
268
|
+
*/
|
|
269
|
+
export interface IntrospectedMetric {
|
|
270
|
+
/** Always 'number' for metrics */
|
|
271
|
+
type: 'number';
|
|
272
|
+
/** Aggregation type */
|
|
273
|
+
aggregationType: MetricAggregationType;
|
|
274
|
+
/** Human-readable description */
|
|
275
|
+
description: string;
|
|
276
|
+
/** Format hint */
|
|
277
|
+
format?: MetricFormat;
|
|
278
|
+
/** SQL expression */
|
|
279
|
+
sql: string;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Introspected dataset schema (for AI agents)
|
|
283
|
+
*/
|
|
284
|
+
export interface IntrospectedDataset {
|
|
285
|
+
/** Dataset name */
|
|
286
|
+
name: string;
|
|
287
|
+
/** Dataset description */
|
|
288
|
+
description: string;
|
|
289
|
+
/** Source table */
|
|
290
|
+
table: string;
|
|
291
|
+
/** Introspected dimensions */
|
|
292
|
+
dimensions: Record<string, IntrospectedDimension>;
|
|
293
|
+
/** Introspected metrics */
|
|
294
|
+
metrics: Record<string, IntrospectedMetric>;
|
|
295
|
+
/** Whether multi-tenancy is required */
|
|
296
|
+
tenantRequired?: boolean;
|
|
297
|
+
/** Complexity limits */
|
|
298
|
+
limits?: DatasetLimits;
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dataset/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dataset API Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive type system for the dataset API, including:
|
|
5
|
+
* - Dataset definitions
|
|
6
|
+
* - Dimension and metric types
|
|
7
|
+
* - Filter operators and types
|
|
8
|
+
* - Query execution types
|
|
9
|
+
* - Type inference utilities
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export { createQueryBuilder, QueryBuilder } from './core/query-builder.js';
|
|
2
2
|
export { ClickHouseConnection } from './core/connection.js';
|
|
3
3
|
export { JoinRelationships } from './core/join-relationships.js';
|
|
4
|
+
export { createClickHouseAdapter, ClickHouseAdapter } from './core/adapters/clickhouse-adapter.js';
|
|
5
|
+
export { ClickHouseDialect } from './core/dialects/clickhouse-dialect.js';
|
|
6
|
+
export type { DatabaseAdapter } from './core/adapters/database-adapter.js';
|
|
7
|
+
export type { SqlDialect } from './core/dialects/sql-dialect.js';
|
|
4
8
|
export type { ClickHouseConfig, ClickHouseClientConfig, CreateQueryBuilderConfig, ExecuteOptions } from './core/query-builder.js';
|
|
5
9
|
export { isClientConfig } from './core/query-builder.js';
|
|
6
10
|
export type { CacheOptions, CacheConfig, CacheProvider, CacheEntry, CacheStatus } from './core/cache/types.js';
|
|
@@ -17,4 +21,21 @@ export { logger } from './core/utils/logger.js';
|
|
|
17
21
|
export { raw, rawAs, selectExpr, toDateTime, formatDateTime, toStartOfInterval, datePart } from './core/utils/sql-expressions.js';
|
|
18
22
|
export type { SqlExpression, FormatDateTimeOptions, AliasedExpression } from './core/utils/sql-expressions.js';
|
|
19
23
|
export type { PredicateExpression, PredicateLiteral, PredicateBuilder, PredicateArg } from './core/utils/predicate-builder.js';
|
|
24
|
+
export { sql, isSQLExpression, toSQLString } from './dataset/sql-tag.js';
|
|
25
|
+
export type { SQLExpression } from './dataset/sql-tag.js';
|
|
26
|
+
export { dimension, metric } from './dataset/helpers.js';
|
|
27
|
+
export type { DimensionOptions, MetricOptions } from './dataset/helpers.js';
|
|
28
|
+
export type { DimensionType, SimpleDimension, DimensionDefinition, Dimension, DimensionsMap, MetricAggregationType, MetricFormat, MetricDefinition, MetricsMap, DatasetDefinition, DatasetsMap, TenantConfig, DatasetLimits, DateRangeValue, FilterValue, FilterDefinition, Filters, SortDirection, OrderByDimension, OrderByMetric, OrderBy, DatasetQuery, QueryContext, QueryResultMetadata, QueryResult, InferDimensionType, InferMetricType, InferQueryRowType, InferQueryResult, IntrospectedDimension, IntrospectedMetric, IntrospectedDataset, } from './dataset/types.js';
|
|
29
|
+
export { validateDatasetDefinition, validateDatasets, normalizeDimension, normalizeDimensions, inferDimensionType, getDimensionSQL, getMetricSQL, getDataset, listDatasets, hasDataset, getDimensionNames, getMetricNames, hasDimension, hasMetric, getDimension, getMetric, } from './dataset/definition.js';
|
|
30
|
+
export { introspectDimension, introspectMetric, getDatasetSchema, getAllDatasetSchemas, summarizeDataset, datasetsToJSON, summarizeAllDatasets, } from './dataset/introspection.js';
|
|
31
|
+
export { defineConfig, resolveClickHouseConfig, DEFAULT_MIGRATIONS_OUT_DIR, DEFAULT_MIGRATIONS_PREFIX, DEFAULT_MIGRATIONS_TABLE, } from './migrations/config/index.js';
|
|
32
|
+
export { column, ClickHouseColumnBuilder, defineMaterializedView, defineSchema, defineTable, } from './migrations/schema/index.js';
|
|
33
|
+
export { diffSnapshots, } from './migrations/diff/index.js';
|
|
34
|
+
export { serializeSchemaToSnapshot, snapshotToStableJson, hashSnapshot, } from './migrations/snapshot/index.js';
|
|
35
|
+
export { renderMigrationArtifacts, writeMigrationArtifacts, } from './migrations/sql/index.js';
|
|
36
|
+
export type { ClickHouseClusterConfig, ClickHouseMigrationDbCredentials, ClickHouseMigrationDirectoryConfig, HypequeryClickHouseConfig, MigrationFilePrefix, ResolvedHypequeryClickHouseConfig, } from './migrations/config/index.js';
|
|
37
|
+
export type { ClickHouseColumnDefinition, ClickHouseColumnBuilderLike, ClickHouseColumnDefaultValue, ClickHouseColumnType, ClickHouseDefaultInput, ClickHouseLowCardinalityColumnType, ClickHouseLiteralDefaultValue, ClickHouseMaterializedViewDefinition, ClickHouseMaterializedViewInputDefinition, ClickHouseNamedColumnType, ClickHouseNullableColumnType, ClickHouseSqlDefaultValue, ClickHouseSchemaAst, ClickHouseSchemaDefinition, ClickHouseSqlExpression, ClickHouseTableDefinition, ClickHouseTableInputDefinition, ClickHouseTableEngine, } from './migrations/schema/index.js';
|
|
38
|
+
export type { AddColumnOperation, AlterTableWithDependentViewsOperation, CreateMaterializedViewOperation, CreateTableOperation, DiffWarning, DropColumnOperation, DropMaterializedViewOperation, DropTableOperation, MigrationOperation, ModifyColumnDefaultOperation, ModifyColumnTypeOperation, RecreateMaterializedViewOperation, SnapshotDiffResult, TableMutationOperation, UnsupportedChange, } from './migrations/diff/index.js';
|
|
39
|
+
export type { MigrationMeta, RenderMigrationArtifactsOptions, RenderMigrationArtifactsResult, WriteMigrationArtifactsOptions, WriteMigrationArtifactsResult, } from './migrations/sql/index.js';
|
|
40
|
+
export type { Snapshot, SnapshotColumn, SnapshotColumnDefault, SnapshotDependencyEdge, SnapshotMaterializedView, SnapshotTable, SnapshotTableEngine, } from './migrations/snapshot/index.js';
|
|
20
41
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,cAAc,EACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,UAAU,EACV,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,IAAI,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,YAAY,EACV,UAAU,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,cAAc,EACd,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,cAAc,EACd,WAAW,EACX,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,OAAO,EACL,GAAG,EACH,KAAK,EACL,UAAU,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACT,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACb,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
export { createQueryBuilder } from './core/query-builder.js';
|
|
1
|
+
export { createQueryBuilder, QueryBuilder } from './core/query-builder.js';
|
|
3
2
|
export { ClickHouseConnection } from './core/connection.js';
|
|
4
3
|
export { JoinRelationships } from './core/join-relationships.js';
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
4
|
+
export { createClickHouseAdapter, ClickHouseAdapter } from './core/adapters/clickhouse-adapter.js';
|
|
5
|
+
export { ClickHouseDialect } from './core/dialects/clickhouse-dialect.js';
|
|
6
|
+
export { isClientConfig } from './core/query-builder.js';
|
|
7
7
|
export { CacheController } from './core/cache/controller.js';
|
|
8
8
|
export { MemoryCacheProvider } from './core/cache/providers/memory-lru.js';
|
|
9
9
|
export { MemoryCacheProvider as MemoryLRUCacheProvider } from './core/cache/providers/memory-lru.js';
|
|
10
10
|
export { NoopCacheProvider } from './core/cache/providers/noop.js';
|
|
11
|
-
export {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
//
|
|
21
|
-
|
|
11
|
+
export { CrossFilter } from './core/cross-filter.js';
|
|
12
|
+
export { logger } from './core/utils/logger.js';
|
|
13
|
+
// Re-export SQL expression utilities
|
|
14
|
+
export { raw, rawAs, selectExpr, toDateTime, formatDateTime, toStartOfInterval, datePart } from './core/utils/sql-expressions.js';
|
|
15
|
+
// =============================================================================
|
|
16
|
+
// DATASET API (Phase 1)
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// SQL tagged template
|
|
19
|
+
export { sql, isSQLExpression, toSQLString } from './dataset/sql-tag.js';
|
|
20
|
+
// Dimension and metric helpers
|
|
21
|
+
export { dimension, metric } from './dataset/helpers.js';
|
|
22
|
+
// Dataset definition utilities
|
|
23
|
+
export { validateDatasetDefinition, validateDatasets, normalizeDimension, normalizeDimensions, inferDimensionType, getDimensionSQL, getMetricSQL, getDataset, listDatasets, hasDataset, getDimensionNames, getMetricNames, hasDimension, hasMetric, getDimension, getMetric, } from './dataset/definition.js';
|
|
24
|
+
// Dataset introspection
|
|
25
|
+
export { introspectDimension, introspectMetric, getDatasetSchema, getAllDatasetSchemas, summarizeDataset, datasetsToJSON, summarizeAllDatasets, } from './dataset/introspection.js';
|
|
26
|
+
// Migrations foundations
|
|
27
|
+
export { defineConfig, resolveClickHouseConfig, DEFAULT_MIGRATIONS_OUT_DIR, DEFAULT_MIGRATIONS_PREFIX, DEFAULT_MIGRATIONS_TABLE, } from './migrations/config/index.js';
|
|
28
|
+
export { column, ClickHouseColumnBuilder, defineMaterializedView, defineSchema, defineTable, } from './migrations/schema/index.js';
|
|
29
|
+
export { diffSnapshots, } from './migrations/diff/index.js';
|
|
30
|
+
export { serializeSchemaToSnapshot, snapshotToStableJson, hashSnapshot, } from './migrations/snapshot/index.js';
|
|
31
|
+
export { renderMigrationArtifacts, writeMigrationArtifacts, } from './migrations/sql/index.js';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { DEFAULT_MIGRATIONS_OUT_DIR, DEFAULT_MIGRATIONS_PREFIX, DEFAULT_MIGRATIONS_TABLE, defineConfig, resolveClickHouseConfig, } from './types.js';
|
|
2
|
+
export type { ClickHouseClusterConfig, ClickHouseMigrationDbCredentials, ClickHouseMigrationDirectoryConfig, HypequeryClickHouseConfig, MigrationFilePrefix, ResolvedHypequeryClickHouseConfig, } from './types.js';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrations/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,YAAY,EACZ,uBAAuB,GACxB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,uBAAuB,EACvB,gCAAgC,EAChC,kCAAkC,EAClC,yBAAyB,EACzB,mBAAmB,EACnB,iCAAiC,GAClC,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { DEFAULT_MIGRATIONS_OUT_DIR, DEFAULT_MIGRATIONS_PREFIX, DEFAULT_MIGRATIONS_TABLE, defineConfig, resolveClickHouseConfig, } from './types.js';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare const DEFAULT_MIGRATIONS_OUT_DIR = "./migrations";
|
|
2
|
+
export declare const DEFAULT_MIGRATIONS_TABLE = "_hypequery_migrations";
|
|
3
|
+
export declare const DEFAULT_MIGRATIONS_PREFIX: "timestamp";
|
|
4
|
+
export type MigrationFilePrefix = typeof DEFAULT_MIGRATIONS_PREFIX;
|
|
5
|
+
export interface ClickHouseMigrationDirectoryConfig {
|
|
6
|
+
out: string;
|
|
7
|
+
table: string;
|
|
8
|
+
prefix: MigrationFilePrefix;
|
|
9
|
+
}
|
|
10
|
+
export interface ClickHouseMigrationDbCredentials {
|
|
11
|
+
host: string;
|
|
12
|
+
port?: number;
|
|
13
|
+
username: string;
|
|
14
|
+
password?: string;
|
|
15
|
+
database: string;
|
|
16
|
+
secure?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface ClickHouseClusterConfig {
|
|
19
|
+
name: string;
|
|
20
|
+
}
|
|
21
|
+
export interface HypequeryClickHouseConfig {
|
|
22
|
+
dialect: 'clickhouse';
|
|
23
|
+
schema: string;
|
|
24
|
+
migrations?: Partial<ClickHouseMigrationDirectoryConfig>;
|
|
25
|
+
dbCredentials: ClickHouseMigrationDbCredentials;
|
|
26
|
+
cluster?: ClickHouseClusterConfig;
|
|
27
|
+
}
|
|
28
|
+
export interface ResolvedHypequeryClickHouseConfig extends Omit<HypequeryClickHouseConfig, 'migrations'> {
|
|
29
|
+
migrations: ClickHouseMigrationDirectoryConfig;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Defines a ClickHouse migration configuration while preserving literal TypeScript types.
|
|
33
|
+
*
|
|
34
|
+
* Use this from `hypequery.config.ts` so the CLI can load database credentials,
|
|
35
|
+
* schema entry points, and migration output settings from one typed object.
|
|
36
|
+
*/
|
|
37
|
+
export declare function defineConfig(config: HypequeryClickHouseConfig): HypequeryClickHouseConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Applies default migration settings to a user-provided ClickHouse config.
|
|
40
|
+
*
|
|
41
|
+
* This keeps CLI and programmatic callers aligned on the default output directory,
|
|
42
|
+
* migration table name, and timestamp-based file prefix strategy.
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveClickHouseConfig(config: HypequeryClickHouseConfig): ResolvedHypequeryClickHouseConfig;
|
|
45
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/migrations/config/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAChE,eAAO,MAAM,yBAAyB,EAAG,WAAoB,CAAC;AAE9D,MAAM,MAAM,mBAAmB,GAAG,OAAO,yBAAyB,CAAC;AAEnE,MAAM,WAAW,kCAAkC;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED,MAAM,WAAW,gCAAgC;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACzD,aAAa,EAAE,gCAAgC,CAAC;IAChD,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACnC;AAED,MAAM,WAAW,iCACf,SAAQ,IAAI,CAAC,yBAAyB,EAAE,YAAY,CAAC;IACrD,UAAU,EAAE,kCAAkC,CAAC;CAChD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,yBAAyB,GAAG,yBAAyB,CAEzF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,yBAAyB,GAChC,iCAAiC,CASnC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const DEFAULT_MIGRATIONS_OUT_DIR = './migrations';
|
|
2
|
+
export const DEFAULT_MIGRATIONS_TABLE = '_hypequery_migrations';
|
|
3
|
+
export const DEFAULT_MIGRATIONS_PREFIX = 'timestamp';
|
|
4
|
+
/**
|
|
5
|
+
* Defines a ClickHouse migration configuration while preserving literal TypeScript types.
|
|
6
|
+
*
|
|
7
|
+
* Use this from `hypequery.config.ts` so the CLI can load database credentials,
|
|
8
|
+
* schema entry points, and migration output settings from one typed object.
|
|
9
|
+
*/
|
|
10
|
+
export function defineConfig(config) {
|
|
11
|
+
return config;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Applies default migration settings to a user-provided ClickHouse config.
|
|
15
|
+
*
|
|
16
|
+
* This keeps CLI and programmatic callers aligned on the default output directory,
|
|
17
|
+
* migration table name, and timestamp-based file prefix strategy.
|
|
18
|
+
*/
|
|
19
|
+
export function resolveClickHouseConfig(config) {
|
|
20
|
+
return {
|
|
21
|
+
...config,
|
|
22
|
+
migrations: {
|
|
23
|
+
out: config.migrations?.out ?? DEFAULT_MIGRATIONS_OUT_DIR,
|
|
24
|
+
table: config.migrations?.table ?? DEFAULT_MIGRATIONS_TABLE,
|
|
25
|
+
prefix: config.migrations?.prefix ?? DEFAULT_MIGRATIONS_PREFIX,
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|