@hypequery/clickhouse 1.2.2-beta.0 → 1.2.2-beta.2
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 +253 -0
- package/dist/core/connection.d.ts.map +1 -1
- package/dist/core/connection.js +7 -15
- package/dist/core/query-builder.d.ts +1 -8
- package/dist/core/query-builder.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/types/clickhouse-types.d.ts +3 -2
- package/dist/types/clickhouse-types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>@hypequery/clickhouse</h1>
|
|
3
|
+
<p>A typescript-first library for building type-safe dashboards with ClickHouse</p>
|
|
4
|
+
|
|
5
|
+
[](https://github.com/hypequery/hypequery/blob/main/LICENSE)
|
|
6
|
+
[](https://badge.fury.io/js/@hypequery%2Fclickhouse)
|
|
7
|
+
[](https://github.com/hypequery/hypequery/stargazers)
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
hypequery is a typescript-first query builder for ClickHouse designed specifically for building type-safe analytics dashboards. Unlike generic SQL query builders, hypequery understands your ClickHouse schema and provides full type checking, making it ideal for data-intensive applications.
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- 🎯 **Type-Safe**: Full TypeScript support with types from your ClickHouse schema
|
|
18
|
+
- 🚀 **Performant**: Built for real-time analytics with optimized query generation
|
|
19
|
+
- 🔍 **Cross Filtering**: Powerful cross-filtering capabilities for interactive dashboards
|
|
20
|
+
- 🛠️ **Developer Friendly**: Fluent API design for an intuitive development experience
|
|
21
|
+
- 📱 **Platform Agnostic**: Works in both Node.js and browser environments
|
|
22
|
+
- 🔄 **Schema Generation**: CLI tool to generate TypeScript types from your ClickHouse schema
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
This library requires one of the following ClickHouse clients as a peer dependency:
|
|
27
|
+
|
|
28
|
+
### For Node.js environments
|
|
29
|
+
```bash
|
|
30
|
+
npm install @hypequery/clickhouse
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### For browser/universal environments
|
|
34
|
+
```bash
|
|
35
|
+
npm install @hypequery/clickhouse @clickhouse/client-web
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Note**: The library supports multiple client selection strategies:
|
|
39
|
+
- **Manual injection**: Explicitly provide a client instance (required for browser environments)
|
|
40
|
+
- **Auto-detection**: Automatically selects the client for Node.js environments
|
|
41
|
+
|
|
42
|
+
## Quick Start
|
|
43
|
+
|
|
44
|
+
### Node.js Environments
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { createQueryBuilder } from '@hypequery/clickhouse';
|
|
48
|
+
import type { IntrospectedSchema } from './generated-schema';
|
|
49
|
+
|
|
50
|
+
// Initialize the query builder
|
|
51
|
+
const db = createQueryBuilder<IntrospectedSchema>({
|
|
52
|
+
host: 'your-clickhouse-host',
|
|
53
|
+
username: 'default',
|
|
54
|
+
password: 'your-password',
|
|
55
|
+
database: 'default'
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// Build and execute a query
|
|
59
|
+
const results = await db
|
|
60
|
+
.table('trips')
|
|
61
|
+
.select(['pickup_datetime', 'dropoff_datetime', 'total_amount'])
|
|
62
|
+
.where('total_amount', '>', 50)
|
|
63
|
+
.orderBy('pickup_datetime', 'DESC')
|
|
64
|
+
.limit(10)
|
|
65
|
+
.execute();
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Browser Environments
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
import { createQueryBuilder } from '@hypequery/clickhouse';
|
|
72
|
+
import { createClient } from '@clickhouse/client-web';
|
|
73
|
+
import type { IntrospectedSchema } from './generated-schema';
|
|
74
|
+
|
|
75
|
+
// Create the ClickHouse client explicitly
|
|
76
|
+
const client = createClient({
|
|
77
|
+
host: 'your-clickhouse-host',
|
|
78
|
+
username: 'default',
|
|
79
|
+
password: '',
|
|
80
|
+
database: 'default'
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// Initialize the query builder with the client
|
|
84
|
+
const db = createQueryBuilder<IntrospectedSchema>({
|
|
85
|
+
client // Explicitly provide the client
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// Build and execute a query
|
|
89
|
+
const results = await db
|
|
90
|
+
.table('trips')
|
|
91
|
+
.select(['pickup_datetime', 'dropoff_datetime', 'total_amount'])
|
|
92
|
+
.where('total_amount', '>', 50)
|
|
93
|
+
.orderBy('pickup_datetime', 'DESC')
|
|
94
|
+
.limit(10)
|
|
95
|
+
.execute();
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Schema Generation
|
|
99
|
+
|
|
100
|
+
hypequery provides a CLI tool to generate TypeScript types from your ClickHouse schema:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Install globally (optional)
|
|
104
|
+
npm install -g @hypequery/clickhouse
|
|
105
|
+
|
|
106
|
+
# Generate schema types
|
|
107
|
+
npx hypequery-generate-types --host your-clickhouse-host --database your-database
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
This creates a `generated-schema.ts` file that you can import in your application:
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
import { createQueryBuilder } from '@hypequery/clickhouse';
|
|
114
|
+
import type { IntrospectedSchema } from './generated-schema';
|
|
115
|
+
|
|
116
|
+
const db = createQueryBuilder<IntrospectedSchema>({
|
|
117
|
+
// connection details
|
|
118
|
+
});
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Core Features
|
|
122
|
+
|
|
123
|
+
### Type-Safe Queries
|
|
124
|
+
|
|
125
|
+
hypequery provides full TypeScript support, ensuring your queries are type-safe:
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
// Column names are type-checked
|
|
129
|
+
const query = db.table('trips')
|
|
130
|
+
.select(['pickup_datetime', 'total_amount'])
|
|
131
|
+
.where('total_amount', 'gt', 50)
|
|
132
|
+
.execute();
|
|
133
|
+
|
|
134
|
+
// Type error if column doesn't exist
|
|
135
|
+
db.table('trips').select(['non_existent_column']); // TypeScript error
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Cross Filtering
|
|
139
|
+
|
|
140
|
+
Implement interactive dashboards with cross-filtering support:
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
import { CrossFilter } from '@hypequery/clickhouse';
|
|
144
|
+
|
|
145
|
+
// Create a filter
|
|
146
|
+
const filter = new CrossFilter()
|
|
147
|
+
.add({
|
|
148
|
+
column: 'pickup_datetime',
|
|
149
|
+
operator: 'gte',
|
|
150
|
+
value: '2024-01-01'
|
|
151
|
+
})
|
|
152
|
+
.add({
|
|
153
|
+
column: 'total_amount',
|
|
154
|
+
operator: 'gt',
|
|
155
|
+
value: 20
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
// Apply to multiple queries
|
|
159
|
+
const query1 = db.table('trips')
|
|
160
|
+
.applyCrossFilters(filter)
|
|
161
|
+
.execute();
|
|
162
|
+
|
|
163
|
+
const query2 = db.table('drivers')
|
|
164
|
+
.applyCrossFilters(filter)
|
|
165
|
+
.execute();
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Advanced Queries
|
|
169
|
+
|
|
170
|
+
hypequery supports complex queries including joins, aggregations, and subqueries:
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
// Aggregations
|
|
174
|
+
const stats = await db.table('trips')
|
|
175
|
+
.avg('total_amount')
|
|
176
|
+
.max('trip_distance')
|
|
177
|
+
.count('trip_id')
|
|
178
|
+
.where('pickup_datetime', 'gte', '2024-01-01')
|
|
179
|
+
.execute();
|
|
180
|
+
|
|
181
|
+
// Joins
|
|
182
|
+
const tripsWithDrivers = await db.table('trips')
|
|
183
|
+
.select(['trips.trip_id', 'trips.total_amount', 'drivers.name'])
|
|
184
|
+
.join('drivers', 'trips.driver_id', 'drivers.id')
|
|
185
|
+
.execute();
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
**Benefits:**
|
|
191
|
+
- ✅ Works in all environments (Node.js, browser, bundlers)
|
|
192
|
+
- ✅ Explicit control over client configuration
|
|
193
|
+
- ✅ Required for browser environments (require() doesn't work in browsers)
|
|
194
|
+
- ✅ Synchronous API throughout
|
|
195
|
+
|
|
196
|
+
#### 2. Auto-Detection with Fallback (Node.js Environments Only)
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
const db = createQueryBuilder<IntrospectedSchema>({
|
|
200
|
+
host: 'your-clickhouse-host',
|
|
201
|
+
username: 'default',
|
|
202
|
+
password: '',
|
|
203
|
+
database: 'default'
|
|
204
|
+
});
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
## Versioning and Release Channels
|
|
209
|
+
|
|
210
|
+
hypequery follows semantic versioning and provides multiple release channels:
|
|
211
|
+
|
|
212
|
+
- **Latest**: Stable releases (`npm install @hypequery/clickhouse`)
|
|
213
|
+
- **Beta**: Pre-release versions (`npm install @hypequery/clickhouse@beta`)
|
|
214
|
+
|
|
215
|
+
## Documentation
|
|
216
|
+
|
|
217
|
+
For detailed documentation and examples, visit our [documentation site](https://hypequery.com/docs).
|
|
218
|
+
|
|
219
|
+
- [Getting Started](https://hypequery.com/docs/installation)
|
|
220
|
+
- [Query Building](https://hypequery.com/docs/guides/query-building)
|
|
221
|
+
- [Filtering](https://hypequery.com/docs/guides/filtering)
|
|
222
|
+
- [Pagination](https://hypequery.com/docs/features/pagination)
|
|
223
|
+
- [API Reference](https://hypequery.com/docs/reference/api)
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
## Troubleshooting
|
|
227
|
+
|
|
228
|
+
### Common Issues
|
|
229
|
+
|
|
230
|
+
- **Connection Errors**: Ensure your ClickHouse server is running and accessible
|
|
231
|
+
- **CORS Issues**: Use a proxy server for browser environments
|
|
232
|
+
- **Type Errors**: Make sure to regenerate your schema types after schema changes
|
|
233
|
+
- **Client Not Found**: Make sure you have installed at least one of the required peer dependencies:
|
|
234
|
+
- `@clickhouse/client` (for Node.js environments)
|
|
235
|
+
- `@clickhouse/client-web` (for browser/universal environments)
|
|
236
|
+
- **Browser Auto-Detection**: Auto-detection doesn't work in browsers because `require()` calls don't work. Use manual injection instead.
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
## License
|
|
240
|
+
|
|
241
|
+
This project is licensed under the Apache-2.0 License - see the [LICENSE](LICENSE) file for details.
|
|
242
|
+
|
|
243
|
+
## Support
|
|
244
|
+
|
|
245
|
+
- 📚 [Documentation](https://hypequery.com/docs)
|
|
246
|
+
- 🐛 [Issue Tracker](https://github.com/hypequery/hypequery/issues)
|
|
247
|
+
- 💬 [Discussions](https://github.com/hypequery/hypequery/discussions)
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
<div align="center">
|
|
252
|
+
<sub>Built with ❤️ by the hypequery team</sub>
|
|
253
|
+
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/core/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/core/connection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAEtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAIxD,KAAK,gBAAgB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAqCnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IACxD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAuC;IAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,oBAAoB;IAaxE;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,SAAS,IAAI,gBAAgB;IAOpC;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,IAAI,kBAAkB;CAGnD"}
|
package/dist/core/connection.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createClient as createNodeClient } from '@clickhouse/client';
|
|
1
2
|
import { isClientConfig } from './query-builder.js';
|
|
2
3
|
// Function to synchronously get the appropriate client
|
|
3
4
|
function getClickHouseClientSync() {
|
|
@@ -5,22 +6,13 @@ function getClickHouseClientSync() {
|
|
|
5
6
|
const isNode = typeof process !== 'undefined' && process.versions && process.versions.node;
|
|
6
7
|
// In Node.js environment, use Node.js client only
|
|
7
8
|
if (isNode) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const clientNode = require('@clickhouse/client');
|
|
11
|
-
if (isDev) {
|
|
12
|
-
console.log('hypequery: Using @clickhouse/client for Node.js environment');
|
|
13
|
-
}
|
|
14
|
-
return {
|
|
15
|
-
createClient: clientNode.createClient,
|
|
16
|
-
ClickHouseSettings: clientNode.ClickHouseSettings || {}
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
catch (error) {
|
|
20
|
-
throw new Error('@clickhouse/client is required for Node.js environments.\n\n' +
|
|
21
|
-
'Install with: npm install @clickhouse/client\n\n' +
|
|
22
|
-
'Alternatively, you can provide a client instance directly in the config.client option.');
|
|
9
|
+
if (isDev) {
|
|
10
|
+
console.log('hypequery: Using @clickhouse/client for Node.js environment');
|
|
23
11
|
}
|
|
12
|
+
return {
|
|
13
|
+
createClient: createNodeClient,
|
|
14
|
+
ClickHouseSettings: {}
|
|
15
|
+
};
|
|
24
16
|
}
|
|
25
17
|
// For browser environments, require() doesn't work, so we can't auto-detect
|
|
26
18
|
// Users must use manual injection in browser environments
|
|
@@ -7,13 +7,6 @@ import type { ClickHouseSettings, BaseClickHouseClientConfigOptions } from '@cli
|
|
|
7
7
|
import type { ClickHouseClient as NodeClickHouseClient } from '@clickhouse/client';
|
|
8
8
|
import type { ClickHouseClient as WebClickHouseClient } from '@clickhouse/client-web';
|
|
9
9
|
type ClickHouseClient = NodeClickHouseClient | WebClickHouseClient;
|
|
10
|
-
/**
|
|
11
|
-
* Configuration for host-based connections.
|
|
12
|
-
*/
|
|
13
|
-
export interface ClickHouseHostConfig extends BaseClickHouseClientConfigOptions {
|
|
14
|
-
/** The ClickHouse server host URL. */
|
|
15
|
-
host: string;
|
|
16
|
-
}
|
|
17
10
|
/**
|
|
18
11
|
* Configuration for client-based connections.
|
|
19
12
|
*/
|
|
@@ -25,7 +18,7 @@ export interface ClickHouseClientConfig extends BaseClickHouseClientConfigOption
|
|
|
25
18
|
* Configuration options for ClickHouse connections.
|
|
26
19
|
* Either provide a client instance OR connection details, but not both.
|
|
27
20
|
*/
|
|
28
|
-
export type ClickHouseConfig =
|
|
21
|
+
export type ClickHouseConfig = BaseClickHouseClientConfigOptions | ClickHouseClientConfig;
|
|
29
22
|
/**
|
|
30
23
|
* Type guard to check if a config is a client-based configuration.
|
|
31
24
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/core/query-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAS1D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,KAAK,EAAE,kBAAkB,EAAE,iCAAiC,EAAE,MAAM,2BAA2B,CAAC;AACvG,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGtF,KAAK,gBAAgB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/core/query-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { createQueryBuilder, QueryBuilder } from './core/query-builder';
|
|
2
2
|
export { ClickHouseConnection } from './core/connection';
|
|
3
3
|
export { JoinRelationships } from './core/join-relationships';
|
|
4
|
-
export type { ClickHouseConfig,
|
|
4
|
+
export type { ClickHouseConfig, ClickHouseClientConfig } from './core/query-builder';
|
|
5
5
|
export { isClientConfig } from './core/query-builder';
|
|
6
6
|
export type { TableSchema, QueryConfig, ColumnType, WhereExpression, GroupByExpression, TableRecord, DatabaseSchema, PaginatedResult, PageInfo, PaginationOptions } from './types/base';
|
|
7
7
|
export type { JoinPath, JoinPathOptions } from './core/join-relationships';
|
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,sBAAsB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,eAAe,EACf,QAAQ,EACR,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,GAAG,EACH,KAAK,EACL,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,qBAAqB,EACtB,MAAM,8BAA8B,CAAC;AACtC,YAAY,EACV,aAAa,EACb,iBAAiB,EAClB,MAAM,8BAA8B,CAAC"}
|
|
@@ -3,11 +3,12 @@ export type ClickHouseFloat = 'Float32' | 'Float64';
|
|
|
3
3
|
export type ClickHouseDecimal = 'Decimal32' | 'Decimal64' | 'Decimal128' | 'Decimal256' | `Decimal(${number}, ${number})`;
|
|
4
4
|
export type ClickHouseDateTime = 'Date' | 'Date32' | 'DateTime' | `DateTime('${string}')` | `DateTime64(${number})` | `DateTime64(${number}, '${string}')`;
|
|
5
5
|
export type ClickHouseString = 'String' | `FixedString(${number})` | 'UUID';
|
|
6
|
+
export type ClickHouseEnum = `Enum8(${string})` | `Enum16(${string})`;
|
|
6
7
|
export type ClickHouseArray = `Array(${ClickHouseBaseType})`;
|
|
7
8
|
export type ClickHouseNullable = `Nullable(${ClickHouseBaseType})`;
|
|
8
9
|
export type ClickHouseLowCardinality = `LowCardinality(${ClickHouseString})`;
|
|
9
10
|
export type ClickHouseMap = `Map(${ClickHouseBaseType}, ${ClickHouseBaseType})`;
|
|
10
|
-
export type ClickHouseBaseType = ClickHouseInteger | ClickHouseFloat | ClickHouseDecimal | ClickHouseDateTime | ClickHouseString;
|
|
11
|
+
export type ClickHouseBaseType = ClickHouseInteger | ClickHouseFloat | ClickHouseDecimal | ClickHouseDateTime | ClickHouseString | ClickHouseEnum;
|
|
11
12
|
export type ClickHouseType = ClickHouseBaseType | ClickHouseArray | ClickHouseNullable | ClickHouseLowCardinality | ClickHouseMap;
|
|
12
|
-
export type InferClickHouseType<T extends ClickHouseType> = T extends ClickHouseInteger ? number : T extends ClickHouseFloat ? number : T extends ClickHouseDecimal ? number : T extends ClickHouseDateTime ? Date : T extends ClickHouseString ? string : T extends `Array(${infer U extends ClickHouseBaseType})` ? Array<InferClickHouseType<U>> : T extends `Nullable(${infer U extends ClickHouseBaseType})` ? InferClickHouseType<U> | null : T extends `LowCardinality(${infer U extends ClickHouseString})` ? InferClickHouseType<U> : T extends `Map(${infer K extends ClickHouseBaseType}, ${infer V extends ClickHouseBaseType})` ? Map<InferClickHouseType<K>, InferClickHouseType<V>> : never;
|
|
13
|
+
export type InferClickHouseType<T extends ClickHouseType> = T extends ClickHouseInteger ? number : T extends ClickHouseFloat ? number : T extends ClickHouseDecimal ? number : T extends ClickHouseDateTime ? Date : T extends ClickHouseString ? string : T extends ClickHouseEnum ? string : T extends `Array(${infer U extends ClickHouseBaseType})` ? Array<InferClickHouseType<U>> : T extends `Nullable(${infer U extends ClickHouseBaseType})` ? InferClickHouseType<U> | null : T extends `LowCardinality(${infer U extends ClickHouseString})` ? InferClickHouseType<U> : T extends `Map(${infer K extends ClickHouseBaseType}, ${infer V extends ClickHouseBaseType})` ? Map<InferClickHouseType<K>, InferClickHouseType<V>> : never;
|
|
13
14
|
//# sourceMappingURL=clickhouse-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clickhouse-types.d.ts","sourceRoot":"","sources":["../../src/types/clickhouse-types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,iBAAiB,GACzB,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAC1D,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GACzB,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GACvD,WAAW,MAAM,KAAK,MAAM,GAAG,CAAC;AAGpC,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GAAG,QAAQ,GACjB,UAAU,GACV,aAAa,MAAM,IAAI,GACvB,cAAc,MAAM,GAAG,GACvB,cAAc,MAAM,MAAM,MAAM,IAAI,CAAC;AAGzC,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,eAAe,MAAM,GAAG,GACxB,MAAM,CAAC;AAGX,MAAM,MAAM,eAAe,GAAG,SAAS,kBAAkB,GAAG,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,YAAY,kBAAkB,GAAG,CAAC;AACnE,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,gBAAgB,GAAG,CAAC;AAC7E,MAAM,MAAM,aAAa,GAAG,OAAO,kBAAkB,KAAK,kBAAkB,GAAG,CAAC;AAGhF,MAAM,MAAM,kBAAkB,GAC1B,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"clickhouse-types.d.ts","sourceRoot":"","sources":["../../src/types/clickhouse-types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,iBAAiB,GACzB,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAC1D,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAErE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GACzB,WAAW,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GACvD,WAAW,MAAM,KAAK,MAAM,GAAG,CAAC;AAGpC,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GAAG,QAAQ,GACjB,UAAU,GACV,aAAa,MAAM,IAAI,GACvB,cAAc,MAAM,GAAG,GACvB,cAAc,MAAM,MAAM,MAAM,IAAI,CAAC;AAGzC,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,eAAe,MAAM,GAAG,GACxB,MAAM,CAAC;AAGX,MAAM,MAAM,cAAc,GACtB,SAAS,MAAM,GAAG,GAClB,UAAU,MAAM,GAAG,CAAC;AAGxB,MAAM,MAAM,eAAe,GAAG,SAAS,kBAAkB,GAAG,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,YAAY,kBAAkB,GAAG,CAAC;AACnE,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,gBAAgB,GAAG,CAAC;AAC7E,MAAM,MAAM,aAAa,GAAG,OAAO,kBAAkB,KAAK,kBAAkB,GAAG,CAAC;AAGhF,MAAM,MAAM,kBAAkB,GAC1B,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GACjB,kBAAkB,GAClB,gBAAgB,GAChB,cAAc,CAAC;AAGnB,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,eAAe,GACf,kBAAkB,GAClB,wBAAwB,GACxB,aAAa,CAAC;AAGlB,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,cAAc,IACtD,CAAC,SAAS,iBAAiB,GAAG,MAAM,GACpC,CAAC,SAAS,eAAe,GAAG,MAAM,GAClC,CAAC,SAAS,iBAAiB,GAAG,MAAM,GACpC,CAAC,SAAS,kBAAkB,GAAG,IAAI,GACnC,CAAC,SAAS,gBAAgB,GAAG,MAAM,GACnC,CAAC,SAAS,cAAc,GAAG,MAAM,GACjC,CAAC,SAAS,SAAS,MAAM,CAAC,SAAS,kBAAkB,GAAG,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GACxF,CAAC,SAAS,YAAY,MAAM,CAAC,SAAS,kBAAkB,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,IAAI,GAC3F,CAAC,SAAS,kBAAkB,MAAM,CAAC,SAAS,gBAAgB,GAAG,GAAG,mBAAmB,CAAC,CAAC,CAAC,GACxF,CAAC,SAAS,OAAO,MAAM,CAAC,SAAS,kBAAkB,KAAK,MAAM,CAAC,SAAS,kBAAkB,GAAG,GAC7F,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,GACnD,KAAK,CAAC"}
|