@hypequery/clickhouse 1.6.2 → 2.0.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 (141) hide show
  1. package/README-CLI.md +43 -88
  2. package/README.md +84 -253
  3. package/dist/cli/bin.js +16 -8
  4. package/dist/core/adapters/clickhouse-adapter.d.ts.map +1 -1
  5. package/dist/core/adapters/clickhouse-adapter.js +3 -2
  6. package/dist/core/cache/cache-manager.d.ts.map +1 -1
  7. package/dist/core/cache/cache-manager.js +5 -3
  8. package/dist/core/connection.d.ts +6 -6
  9. package/dist/core/connection.js +9 -9
  10. package/dist/core/cross-filter.js +1 -1
  11. package/dist/core/dialects/clickhouse-dialect.d.ts +2 -2
  12. package/dist/core/dialects/clickhouse-dialect.d.ts.map +1 -1
  13. package/dist/core/dialects/clickhouse-dialect.js +39 -22
  14. package/dist/core/dialects/sql-dialect.d.ts +2 -2
  15. package/dist/core/dialects/sql-dialect.d.ts.map +1 -1
  16. package/dist/core/env/auto-client.d.ts.map +1 -1
  17. package/dist/core/env/auto-client.js +1 -1
  18. package/dist/core/features/aggregations.d.ts +7 -90
  19. package/dist/core/features/aggregations.d.ts.map +1 -1
  20. package/dist/core/features/aggregations.js +19 -7
  21. package/dist/core/features/analytics.d.ts +5 -870
  22. package/dist/core/features/analytics.d.ts.map +1 -1
  23. package/dist/core/features/analytics.js +15 -13
  24. package/dist/core/features/cross-filtering.d.ts +1 -1
  25. package/dist/core/features/cross-filtering.d.ts.map +1 -1
  26. package/dist/core/features/cross-filtering.js +28 -73
  27. package/dist/core/features/executor.d.ts +1 -1
  28. package/dist/core/features/executor.d.ts.map +1 -1
  29. package/dist/core/features/executor.js +9 -11
  30. package/dist/core/features/filtering.d.ts +5 -91
  31. package/dist/core/features/filtering.d.ts.map +1 -1
  32. package/dist/core/features/filtering.js +63 -77
  33. package/dist/core/features/joins.d.ts +2 -19
  34. package/dist/core/features/joins.d.ts.map +1 -1
  35. package/dist/core/features/joins.js +16 -5
  36. package/dist/core/features/query-modifiers.d.ts +10 -109
  37. package/dist/core/features/query-modifiers.d.ts.map +1 -1
  38. package/dist/core/features/query-modifiers.js +64 -18
  39. package/dist/core/formatters/sql-formatter.d.ts +16 -5
  40. package/dist/core/formatters/sql-formatter.d.ts.map +1 -1
  41. package/dist/core/formatters/sql-formatter.js +197 -93
  42. package/dist/core/join-relationships.d.ts +22 -5
  43. package/dist/core/join-relationships.d.ts.map +1 -1
  44. package/dist/core/join-relationships.js +1 -1
  45. package/dist/core/query-builder.d.ts +63 -12
  46. package/dist/core/query-builder.d.ts.map +1 -1
  47. package/dist/core/query-builder.js +210 -153
  48. package/dist/core/query-node.d.ts +7 -0
  49. package/dist/core/query-node.d.ts.map +1 -0
  50. package/dist/core/query-node.js +80 -0
  51. package/dist/core/tests/integration/setup.d.ts +1 -0
  52. package/dist/core/tests/integration/setup.d.ts.map +1 -1
  53. package/dist/core/tests/integration/setup.js +4 -2
  54. package/dist/core/types/select-types.d.ts +3 -0
  55. package/dist/core/types/select-types.d.ts.map +1 -1
  56. package/dist/core/utils/connection-endpoint.d.ts +3 -0
  57. package/dist/core/utils/connection-endpoint.d.ts.map +1 -0
  58. package/dist/core/utils/connection-endpoint.js +9 -0
  59. package/dist/core/utils/filter-application.d.ts +15 -0
  60. package/dist/core/utils/filter-application.d.ts.map +1 -0
  61. package/dist/core/utils/filter-application.js +32 -0
  62. package/dist/core/utils/query-config-compat.d.ts +48 -0
  63. package/dist/core/utils/query-config-compat.d.ts.map +1 -0
  64. package/dist/core/utils/query-config-compat.js +137 -0
  65. package/dist/core/utils/relation-application.d.ts +9 -0
  66. package/dist/core/utils/relation-application.d.ts.map +1 -0
  67. package/dist/core/utils/relation-application.js +19 -0
  68. package/dist/core/utils/relation-validation.d.ts +6 -0
  69. package/dist/core/utils/relation-validation.d.ts.map +1 -0
  70. package/dist/core/utils/relation-validation.js +29 -0
  71. package/dist/core/utils/sql-expressions.d.ts +14 -0
  72. package/dist/core/utils/sql-expressions.d.ts.map +1 -1
  73. package/dist/core/utils/sql-expressions.js +40 -0
  74. package/dist/core/utils/tuple-filter-validation.d.ts +3 -0
  75. package/dist/core/utils/tuple-filter-validation.d.ts.map +1 -0
  76. package/dist/core/utils/tuple-filter-validation.js +16 -0
  77. package/dist/index.d.ts +2 -13
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +3 -8
  80. package/dist/types/base.d.ts +88 -22
  81. package/dist/types/base.d.ts.map +1 -1
  82. package/dist/types/filters.d.ts +9 -5
  83. package/dist/types/filters.d.ts.map +1 -1
  84. package/package.json +5 -5
  85. package/dist/migrations/config/index.d.ts +0 -3
  86. package/dist/migrations/config/index.d.ts.map +0 -1
  87. package/dist/migrations/config/index.js +0 -1
  88. package/dist/migrations/config/types.d.ts +0 -45
  89. package/dist/migrations/config/types.d.ts.map +0 -1
  90. package/dist/migrations/config/types.js +0 -28
  91. package/dist/migrations/diff/diff.d.ts +0 -11
  92. package/dist/migrations/diff/diff.d.ts.map +0 -1
  93. package/dist/migrations/diff/diff.js +0 -240
  94. package/dist/migrations/diff/index.d.ts +0 -3
  95. package/dist/migrations/diff/index.d.ts.map +0 -1
  96. package/dist/migrations/diff/index.js +0 -1
  97. package/dist/migrations/diff/types.d.ts +0 -74
  98. package/dist/migrations/diff/types.d.ts.map +0 -1
  99. package/dist/migrations/diff/types.js +0 -1
  100. package/dist/migrations/plan/index.d.ts +0 -3
  101. package/dist/migrations/plan/index.d.ts.map +0 -1
  102. package/dist/migrations/plan/index.js +0 -1
  103. package/dist/migrations/plan/plan.d.ts +0 -12
  104. package/dist/migrations/plan/plan.d.ts.map +0 -1
  105. package/dist/migrations/plan/plan.js +0 -416
  106. package/dist/migrations/plan/types.d.ts +0 -93
  107. package/dist/migrations/plan/types.d.ts.map +0 -1
  108. package/dist/migrations/plan/types.js +0 -1
  109. package/dist/migrations/schema/column.d.ts +0 -71
  110. package/dist/migrations/schema/column.d.ts.map +0 -1
  111. package/dist/migrations/schema/column.js +0 -123
  112. package/dist/migrations/schema/define.d.ts +0 -24
  113. package/dist/migrations/schema/define.d.ts.map +0 -1
  114. package/dist/migrations/schema/define.js +0 -47
  115. package/dist/migrations/schema/index.d.ts +0 -4
  116. package/dist/migrations/schema/index.d.ts.map +0 -1
  117. package/dist/migrations/schema/index.js +0 -2
  118. package/dist/migrations/schema/types.d.ts +0 -74
  119. package/dist/migrations/schema/types.d.ts.map +0 -1
  120. package/dist/migrations/schema/types.js +0 -1
  121. package/dist/migrations/snapshot/index.d.ts +0 -3
  122. package/dist/migrations/snapshot/index.d.ts.map +0 -1
  123. package/dist/migrations/snapshot/index.js +0 -1
  124. package/dist/migrations/snapshot/serialize.d.ts +0 -21
  125. package/dist/migrations/snapshot/serialize.d.ts.map +0 -1
  126. package/dist/migrations/snapshot/serialize.js +0 -127
  127. package/dist/migrations/snapshot/types.d.ts +0 -47
  128. package/dist/migrations/snapshot/types.d.ts.map +0 -1
  129. package/dist/migrations/snapshot/types.js +0 -1
  130. package/dist/migrations/sql/index.d.ts +0 -4
  131. package/dist/migrations/sql/index.d.ts.map +0 -1
  132. package/dist/migrations/sql/index.js +0 -2
  133. package/dist/migrations/sql/render.d.ts +0 -10
  134. package/dist/migrations/sql/render.d.ts.map +0 -1
  135. package/dist/migrations/sql/render.js +0 -347
  136. package/dist/migrations/sql/types.d.ts +0 -53
  137. package/dist/migrations/sql/types.d.ts.map +0 -1
  138. package/dist/migrations/sql/types.js +0 -1
  139. package/dist/migrations/sql/write.d.ts +0 -10
  140. package/dist/migrations/sql/write.d.ts.map +0 -1
  141. package/dist/migrations/sql/write.js +0 -35
@@ -1,21 +1,21 @@
1
1
  import type { ClickHouseSettings } from '@clickhouse/client-common';
2
2
  import { FilterOperator } from "./filters.js";
3
- import type { TableColumn } from './schema.js';
4
3
  export interface QueryConfig<T, Schema> {
5
- select?: Array<keyof T | string>;
6
- where?: WhereCondition[];
7
- groupBy?: string[];
8
- having?: string[];
4
+ select?: SelectionNode[];
5
+ from?: SourceNode;
6
+ arrayJoins?: ArrayJoinNode[];
7
+ prewhere?: ExprNode;
8
+ where?: ExprNode;
9
+ groupBy?: GroupByItemNode[];
10
+ withTotals?: boolean;
11
+ having?: HavingNode[];
12
+ limitBy?: LimitByNode;
9
13
  limit?: number;
10
14
  offset?: number;
11
15
  distinct?: boolean;
12
- orderBy?: Array<{
13
- column: keyof T | TableColumn<Schema>;
14
- direction: OrderDirection;
15
- }>;
16
- joins?: JoinClause[];
17
- parameters?: any[];
18
- ctes?: string[];
16
+ orderBy?: OrderByItemNode[];
17
+ joins?: JoinNode[];
18
+ ctes?: CteNode[];
19
19
  unionQueries?: string[];
20
20
  settings?: ClickHouseSettings;
21
21
  }
@@ -23,28 +23,94 @@ export type { ColumnType, TableSchema, DatabaseSchema, TableRecord, InferColumnT
23
23
  export type WhereExpression = string;
24
24
  export type GroupByExpression<T> = keyof T | Array<keyof T>;
25
25
  export type OrderDirection = 'ASC' | 'DESC';
26
- export interface StandardWhereCondition {
26
+ export interface CompiledQuery {
27
+ query: string;
28
+ parameters: unknown[];
29
+ }
30
+ export interface SelectionNode {
31
+ kind: 'selection';
32
+ selection: string;
33
+ }
34
+ export interface ValueNode {
35
+ kind: 'value';
36
+ value: unknown;
37
+ }
38
+ export type ConditionValueNode = ValueNode | ValueNode[] | ValueNode[][] | [ValueNode, ValueNode] | string;
39
+ export interface ConditionExprNode {
40
+ kind: 'condition';
27
41
  column: string;
28
42
  operator: FilterOperator;
29
- value: any;
30
- conjunction: 'AND' | 'OR';
31
- type?: 'condition' | 'group-start' | 'group-end';
43
+ value: ConditionValueNode;
44
+ }
45
+ export interface RawExprNode {
46
+ kind: 'raw';
47
+ expression: string;
48
+ parameters: ValueNode[];
49
+ }
50
+ export interface LogicalExprNode {
51
+ kind: 'logical';
52
+ operator: 'AND' | 'OR';
53
+ conditions: ExprNode[];
54
+ }
55
+ export interface SequenceExprNode {
56
+ kind: 'sequence';
57
+ items: Array<{
58
+ conjunction?: 'AND' | 'OR';
59
+ expression: ExprNode;
60
+ }>;
61
+ }
62
+ export interface GroupExprNode {
63
+ kind: 'group';
64
+ expression?: ExprNode;
65
+ }
66
+ export type ExprNode = ConditionExprNode | RawExprNode | LogicalExprNode | SequenceExprNode | GroupExprNode;
67
+ export interface TableSourceNode {
68
+ kind: 'table';
69
+ name: string;
70
+ final?: boolean;
32
71
  }
33
- export interface ExpressionWhereCondition {
34
- type: 'expression';
72
+ export type SourceNode = TableSourceNode;
73
+ export interface GroupByItemNode {
74
+ kind: 'group-by-item';
35
75
  expression: string;
36
- parameters: any[];
37
- conjunction: 'AND' | 'OR';
38
76
  }
39
- export type WhereCondition = StandardWhereCondition | ExpressionWhereCondition;
77
+ export interface ArrayJoinNode {
78
+ kind: 'array-join';
79
+ type: 'ARRAY' | 'LEFT ARRAY';
80
+ expression: string;
81
+ }
82
+ export interface HavingNode {
83
+ kind: 'having';
84
+ expression: string;
85
+ parameters?: ValueNode[];
86
+ }
40
87
  export type JoinType = 'INNER' | 'LEFT' | 'RIGHT' | 'FULL';
41
- export interface JoinClause {
88
+ export interface JoinNode {
89
+ kind: 'join';
42
90
  type: JoinType;
43
91
  table: string;
44
92
  leftColumn: string;
93
+ leftSource?: string;
45
94
  rightColumn: string;
46
95
  alias?: string;
47
96
  }
97
+ export interface OrderByItemNode {
98
+ kind: 'order-by-item';
99
+ column: string;
100
+ direction: OrderDirection;
101
+ }
102
+ export interface LimitByNode {
103
+ kind: 'limit-by';
104
+ limit: number;
105
+ by: string[];
106
+ }
107
+ export interface CteNode {
108
+ kind: 'cte';
109
+ expression: string;
110
+ }
111
+ export interface SelectQueryNode<T, Schema> extends QueryConfig<T, Schema> {
112
+ kind: 'select-query';
113
+ }
48
114
  export type AggregationType<T, Aggregations, Column, A extends string, Suffix extends string, HasSelect extends boolean> = HasSelect extends true ? {
49
115
  [K in keyof T | A]: K extends keyof T ? T[K] : string;
50
116
  } : Aggregations extends Record<string, string> ? Aggregations & Record<A extends undefined ? `${Column & string}_${Suffix}` : A, string> : Record<A extends undefined ? `${Column & string}_${Suffix}` : A, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/types/base.ts"],"names":[],"mappings":"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"}
@@ -18,10 +18,12 @@ export type FilterCondition<T> = {
18
18
  globalInSubquery: string;
19
19
  inTable: string;
20
20
  globalInTable: string;
21
- inTuple: [FilterValue<T>, FilterValue<T>][];
22
- globalInTuple: [FilterValue<T>, FilterValue<T>][];
21
+ inTuple: [FilterValue<T>][];
22
+ globalInTuple: [FilterValue<T>][];
23
+ isNull: never;
24
+ isNotNull: never;
23
25
  };
24
- export type FilterValueType<T, Op extends FilterOperator, Schema = any> = Op extends 'in' | 'notIn' | 'globalIn' | 'globalNotIn' ? T extends (infer U)[] ? U[] : T[] : Op extends 'between' ? [T, T] | [string, string] : Op extends 'inSubquery' | 'globalInSubquery' ? string : Op extends 'inTable' | 'globalInTable' ? keyof Schema : Op extends 'inTuple' | 'globalInTuple' ? [T, T][] : T;
26
+ export type FilterValueType<T, Op extends FilterOperator, Schema = any> = Op extends 'in' | 'notIn' | 'globalIn' | 'globalNotIn' ? T extends (infer U)[] ? U[] : T[] : Op extends 'between' ? [T, T] | [string, string] : Op extends 'inSubquery' | 'globalInSubquery' ? string : Op extends 'inTable' | 'globalInTable' ? keyof Schema : Op extends 'inTuple' | 'globalInTuple' ? [T][] : Op extends 'isNull' | 'isNotNull' ? never : T;
25
27
  export type OperatorValueMap<T, Schema = any> = {
26
28
  'eq': T | string;
27
29
  'neq': T | string;
@@ -40,8 +42,10 @@ export type OperatorValueMap<T, Schema = any> = {
40
42
  'globalInSubquery': string;
41
43
  'inTable': keyof Schema;
42
44
  'globalInTable': keyof Schema;
43
- 'inTuple': [T | string, T | string][];
44
- 'globalInTuple': [T | string, T | string][];
45
+ 'inTuple': [T | string][];
46
+ 'globalInTuple': [T | string][];
47
+ 'isNull': never;
48
+ 'isNotNull': never;
45
49
  };
46
50
  export type FilterOperator = keyof OperatorValueMap<any>;
47
51
  export interface FilterConditionInput<T = any, Schema extends Record<string, Record<string, any>> = any, OriginalT extends Record<string, any> = any> {
@@ -1 +1 @@
1
- {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/types/filters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/types/filters.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypequery/clickhouse",
3
- "version": "1.6.2",
3
+ "version": "2.0.0",
4
4
  "description": "ClickHouse typescript query builder",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -29,7 +29,7 @@
29
29
  "README-CLI.md"
30
30
  ],
31
31
  "dependencies": {
32
- "@clickhouse/client": "^1.11.2",
32
+ "@clickhouse/client": "^1.18.3",
33
33
  "dotenv": "^16.0.0"
34
34
  },
35
35
  "peerDependencies": {
@@ -41,9 +41,9 @@
41
41
  }
42
42
  },
43
43
  "devDependencies": {
44
- "@clickhouse/client": "^1.11.2",
45
- "@clickhouse/client-common": "^1.11.2",
46
- "@clickhouse/client-web": "^1.11.2",
44
+ "@clickhouse/client": "^1.18.3",
45
+ "@clickhouse/client-common": "^1.18.3",
46
+ "@clickhouse/client-web": "^1.18.3",
47
47
  "@types/node": "^18.19.80",
48
48
  "glob": "^11.0.3",
49
49
  "ts-node": "^10.9.0",
@@ -1,3 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1 +0,0 @@
1
- export { DEFAULT_MIGRATIONS_OUT_DIR, DEFAULT_MIGRATIONS_PREFIX, DEFAULT_MIGRATIONS_TABLE, defineConfig, resolveClickHouseConfig, } from './types.js';
@@ -1,45 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,28 +0,0 @@
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
- }
@@ -1,11 +0,0 @@
1
- import type { Snapshot } from '../snapshot/types.js';
2
- import type { SnapshotDiffResult } from './types.js';
3
- /**
4
- * Computes migration operations needed to move from one snapshot to another.
5
- *
6
- * The diff layer is deliberately SQL-free. It emits structured operations,
7
- * warnings for potentially expensive changes, and unsupported-change diagnostics
8
- * that the SQL renderer refuses to render automatically.
9
- */
10
- export declare function diffSnapshots(previousSnapshot: Snapshot, nextSnapshot: Snapshot): SnapshotDiffResult;
11
- //# sourceMappingURL=diff.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../src/migrations/diff/diff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EAIT,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAQV,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAEpB;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,gBAAgB,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,GAAG,kBAAkB,CAqCpG"}
@@ -1,240 +0,0 @@
1
- /**
2
- * Computes migration operations needed to move from one snapshot to another.
3
- *
4
- * The diff layer is deliberately SQL-free. It emits structured operations,
5
- * warnings for potentially expensive changes, and unsupported-change diagnostics
6
- * that the SQL renderer refuses to render automatically.
7
- */
8
- export function diffSnapshots(previousSnapshot, nextSnapshot) {
9
- const warnings = [];
10
- const unsupportedChanges = [];
11
- const previousTables = toNameMap(previousSnapshot.tables);
12
- const nextTables = toNameMap(nextSnapshot.tables);
13
- const previousViews = toNameMap(previousSnapshot.materializedViews);
14
- const nextViews = toNameMap(nextSnapshot.materializedViews);
15
- const dropMaterializedViewOperations = diffDroppedMaterializedViews(previousViews, nextViews);
16
- const dropTableOperations = diffDroppedTables(previousTables, nextTables);
17
- const tableOperations = diffTables(previousSnapshot, nextSnapshot, previousTables, nextTables, warnings, unsupportedChanges);
18
- const createTableOperations = diffCreatedTables(previousTables, nextTables);
19
- const recreateMaterializedViewOperations = diffChangedMaterializedViews(previousViews, nextViews);
20
- const createMaterializedViewOperations = diffCreatedMaterializedViews(previousViews, nextViews);
21
- return {
22
- previousSnapshot,
23
- nextSnapshot,
24
- operations: [
25
- ...dropMaterializedViewOperations,
26
- ...dropTableOperations,
27
- ...tableOperations,
28
- ...createTableOperations,
29
- ...recreateMaterializedViewOperations,
30
- ...createMaterializedViewOperations,
31
- ],
32
- warnings,
33
- unsupportedChanges,
34
- };
35
- }
36
- function diffDroppedMaterializedViews(previousViews, nextViews) {
37
- return [...previousViews.values()]
38
- .filter(view => !nextViews.has(view.name))
39
- .map(view => ({
40
- kind: 'DropMaterializedView',
41
- viewName: view.name,
42
- }));
43
- }
44
- function diffDroppedTables(previousTables, nextTables) {
45
- return [...previousTables.values()]
46
- .filter(table => !nextTables.has(table.name))
47
- .map(table => ({
48
- kind: 'DropTable',
49
- tableName: table.name,
50
- }));
51
- }
52
- function diffCreatedTables(previousTables, nextTables) {
53
- return [...nextTables.values()]
54
- .filter(table => !previousTables.has(table.name))
55
- .map(table => ({
56
- kind: 'CreateTable',
57
- table,
58
- }));
59
- }
60
- function diffCreatedMaterializedViews(previousViews, nextViews) {
61
- return [...nextViews.values()]
62
- .filter(view => !previousViews.has(view.name))
63
- .map(view => ({
64
- kind: 'CreateMaterializedView',
65
- view,
66
- }));
67
- }
68
- function diffChangedMaterializedViews(previousViews, nextViews) {
69
- const operations = [];
70
- for (const previousView of previousViews.values()) {
71
- const nextView = nextViews.get(previousView.name);
72
- if (!nextView) {
73
- continue;
74
- }
75
- if (!isSameMaterializedView(previousView, nextView)) {
76
- operations.push({
77
- kind: 'RecreateMaterializedView',
78
- previousView,
79
- nextView,
80
- });
81
- }
82
- }
83
- return operations;
84
- }
85
- function diffTables(previousSnapshot, nextSnapshot, previousTables, nextTables, warnings, unsupportedChanges) {
86
- const operations = [];
87
- for (const previousTable of previousTables.values()) {
88
- const nextTable = nextTables.get(previousTable.name);
89
- if (!nextTable) {
90
- continue;
91
- }
92
- if (!isSameTableEngine(previousTable.engine, nextTable.engine)) {
93
- unsupportedChanges.push({
94
- kind: 'TableEngineChanged',
95
- tableName: previousTable.name,
96
- message: `Table engine changed for "${previousTable.name}". Engine evolution is not auto-generated yet.`,
97
- });
98
- }
99
- if (!isSameSettings(previousTable.settings, nextTable.settings)) {
100
- unsupportedChanges.push({
101
- kind: 'TableSettingsChanged',
102
- tableName: previousTable.name,
103
- message: `Table settings changed for "${previousTable.name}". Settings diffs are not auto-generated yet.`,
104
- });
105
- }
106
- const tableMutations = diffColumns(previousTable, nextTable, warnings, unsupportedChanges);
107
- if (tableMutations.length === 0) {
108
- continue;
109
- }
110
- const dependentViewNames = getDependentViewNames(previousSnapshot, nextSnapshot, previousTable.name);
111
- if (dependentViewNames.length > 0) {
112
- operations.push({
113
- kind: 'AlterTableWithDependentViews',
114
- tableName: previousTable.name,
115
- dependentViewNames,
116
- operations: tableMutations,
117
- });
118
- continue;
119
- }
120
- operations.push(...tableMutations);
121
- }
122
- return operations;
123
- }
124
- function diffColumns(previousTable, nextTable, warnings, unsupportedChanges) {
125
- const operations = [];
126
- const previousColumns = toNameMap(previousTable.columns);
127
- const nextColumns = toNameMap(nextTable.columns);
128
- const droppedColumns = [...previousColumns.values()].filter(column => !nextColumns.has(column.name));
129
- const addedColumns = [...nextColumns.values()].filter(column => !previousColumns.has(column.name));
130
- detectPossibleRenames(previousTable.name, droppedColumns, addedColumns, unsupportedChanges);
131
- for (const column of droppedColumns) {
132
- operations.push({
133
- kind: 'DropColumn',
134
- tableName: previousTable.name,
135
- columnName: column.name,
136
- });
137
- }
138
- for (const column of addedColumns) {
139
- operations.push({
140
- kind: 'AddColumn',
141
- tableName: previousTable.name,
142
- column,
143
- });
144
- }
145
- for (const previousColumn of previousColumns.values()) {
146
- const nextColumn = nextColumns.get(previousColumn.name);
147
- if (!nextColumn) {
148
- continue;
149
- }
150
- if (previousColumn.type !== nextColumn.type) {
151
- operations.push({
152
- kind: 'ModifyColumnType',
153
- tableName: previousTable.name,
154
- columnName: previousColumn.name,
155
- previousType: previousColumn.type,
156
- nextType: nextColumn.type,
157
- });
158
- warnings.push({
159
- kind: 'ModifyColumnTypeRequiresConfirmation',
160
- tableName: previousTable.name,
161
- columnName: previousColumn.name,
162
- message: `Column type changed for "${previousTable.name}.${previousColumn.name}" ` +
163
- `from "${previousColumn.type}" to "${nextColumn.type}".`,
164
- });
165
- }
166
- if (!isSameColumnDefault(previousColumn.default, nextColumn.default)) {
167
- operations.push({
168
- kind: 'ModifyColumnDefault',
169
- tableName: previousTable.name,
170
- columnName: previousColumn.name,
171
- previousDefault: previousColumn.default,
172
- nextDefault: nextColumn.default,
173
- });
174
- }
175
- }
176
- return operations;
177
- }
178
- function isSameColumnDefault(left, right) {
179
- if (left === right) {
180
- return true;
181
- }
182
- if (left === undefined || right === undefined) {
183
- return false;
184
- }
185
- return left.kind === right.kind && left.value === right.value;
186
- }
187
- function detectPossibleRenames(tableName, droppedColumns, addedColumns, unsupportedChanges) {
188
- for (const droppedColumn of droppedColumns) {
189
- const renameCandidate = addedColumns.find(addedColumn => addedColumn.type === droppedColumn.type &&
190
- isSameColumnDefault(addedColumn.default, droppedColumn.default));
191
- if (!renameCandidate) {
192
- continue;
193
- }
194
- unsupportedChanges.push({
195
- kind: 'PossibleColumnRename',
196
- tableName,
197
- columnName: droppedColumn.name,
198
- message: `Possible column rename detected in "${tableName}": ` +
199
- `"${droppedColumn.name}" -> "${renameCandidate.name}". ` +
200
- `Rename inference is not supported in generated migrations.`,
201
- });
202
- }
203
- }
204
- function getDependentViewNames(previousSnapshot, nextSnapshot, tableName) {
205
- return [...new Set([
206
- ...previousSnapshot.dependencies
207
- .filter(edge => edge.kind === 'table_to_materialized_view' && edge.from === tableName)
208
- .map(edge => edge.to),
209
- ...nextSnapshot.dependencies
210
- .filter(edge => edge.kind === 'table_to_materialized_view' && edge.from === tableName)
211
- .map(edge => edge.to),
212
- ])].sort((left, right) => left.localeCompare(right));
213
- }
214
- function isSameTableEngine(left, right) {
215
- return left.type === right.type &&
216
- isSameStringArray(left.orderBy, right.orderBy) &&
217
- (left.partitionBy ?? null) === (right.partitionBy ?? null) &&
218
- isSameStringArray(left.primaryKey, right.primaryKey) &&
219
- (left.sampleBy ?? null) === (right.sampleBy ?? null);
220
- }
221
- function isSameSettings(left, right) {
222
- const leftEntries = Object.entries(left);
223
- const rightEntries = Object.entries(right);
224
- if (leftEntries.length !== rightEntries.length) {
225
- return false;
226
- }
227
- return leftEntries.every(([key, value]) => right[key] === value);
228
- }
229
- function isSameMaterializedView(left, right) {
230
- return left.name === right.name &&
231
- left.from === right.from &&
232
- (left.to ?? null) === (right.to ?? null) &&
233
- left.select === right.select;
234
- }
235
- function isSameStringArray(left, right) {
236
- return left.length === right.length && left.every((value, index) => value === right[index]);
237
- }
238
- function toNameMap(entries) {
239
- return new Map(entries.map(entry => [entry.name, entry]));
240
- }
@@ -1,3 +0,0 @@
1
- export { diffSnapshots } from './diff.js';
2
- export type { AddColumnOperation, AlterTableWithDependentViewsOperation, CreateMaterializedViewOperation, CreateTableOperation, DiffWarning, DropColumnOperation, DropMaterializedViewOperation, DropTableOperation, MigrationOperation, ModifyColumnDefaultOperation, ModifyColumnTypeOperation, RecreateMaterializedViewOperation, SnapshotDiffResult, TableMutationOperation, UnsupportedChange, } from './types.js';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrations/diff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,YAAY,EACV,kBAAkB,EAClB,qCAAqC,EACrC,+BAA+B,EAC/B,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,6BAA6B,EAC7B,kBAAkB,EAClB,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,iCAAiC,EACjC,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- export { diffSnapshots } from './diff.js';