@effect/sql-clickhouse 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ClickhouseClient/package.json +6 -0
- package/ClickhouseMigrator/package.json +6 -0
- package/LICENSE +21 -0
- package/README.md +5 -0
- package/dist/cjs/ClickhouseClient.js +258 -0
- package/dist/cjs/ClickhouseClient.js.map +1 -0
- package/dist/cjs/ClickhouseMigrator.js +61 -0
- package/dist/cjs/ClickhouseMigrator.js.map +1 -0
- package/dist/cjs/index.js +13 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/dts/ClickhouseClient.d.ts +96 -0
- package/dist/dts/ClickhouseClient.d.ts.map +1 -0
- package/dist/dts/ClickhouseMigrator.d.ts +27 -0
- package/dist/dts/ClickhouseMigrator.d.ts.map +1 -0
- package/dist/dts/index.d.ts +9 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/esm/ClickhouseClient.js +246 -0
- package/dist/esm/ClickhouseClient.js.map +1 -0
- package/dist/esm/ClickhouseMigrator.js +24 -0
- package/dist/esm/ClickhouseMigrator.js.map +1 -0
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +56 -0
- package/src/ClickhouseClient.ts +361 -0
- package/src/ClickhouseMigrator.ts +42 -0
- package/src/index.ts +9 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Clickhouse from "@clickhouse/client";
|
|
5
|
+
import * as NodeStream from "@effect/platform-node/NodeStream";
|
|
6
|
+
import * as Client from "@effect/sql/SqlClient";
|
|
7
|
+
import { SqlError } from "@effect/sql/SqlError";
|
|
8
|
+
import * as Statement from "@effect/sql/Statement";
|
|
9
|
+
import * as Otel from "@opentelemetry/semantic-conventions";
|
|
10
|
+
import * as Chunk from "effect/Chunk";
|
|
11
|
+
import * as Config from "effect/Config";
|
|
12
|
+
import * as Context from "effect/Context";
|
|
13
|
+
import * as Effect from "effect/Effect";
|
|
14
|
+
import * as FiberRef from "effect/FiberRef";
|
|
15
|
+
import { dual, identity } from "effect/Function";
|
|
16
|
+
import { globalValue } from "effect/GlobalValue";
|
|
17
|
+
import * as Layer from "effect/Layer";
|
|
18
|
+
import * as Stream from "effect/Stream";
|
|
19
|
+
import * as Crypto from "node:crypto";
|
|
20
|
+
/**
|
|
21
|
+
* @category type ids
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
*/
|
|
24
|
+
export const TypeId = /*#__PURE__*/Symbol.for("@effect/sql-clickhouse/ClickhouseClient");
|
|
25
|
+
/**
|
|
26
|
+
* @category tags
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
*/
|
|
29
|
+
export const ClickhouseClient = /*#__PURE__*/Context.GenericTag("@effect/sql-clickhouse/ClickhouseClient");
|
|
30
|
+
/**
|
|
31
|
+
* @category constructors
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
*/
|
|
34
|
+
export const make = options => Effect.gen(function* (_) {
|
|
35
|
+
const compiler = makeCompiler(options.transformQueryNames);
|
|
36
|
+
const transformRows = options.transformResultNames ? Statement.defaultTransforms(options.transformResultNames).array : identity;
|
|
37
|
+
const client = Clickhouse.createClient(options);
|
|
38
|
+
yield* Effect.acquireRelease(Effect.tryPromise({
|
|
39
|
+
try: () => client.exec({
|
|
40
|
+
query: "SELECT 1"
|
|
41
|
+
}),
|
|
42
|
+
catch: cause => new SqlError({
|
|
43
|
+
cause,
|
|
44
|
+
message: "ClickhouseClient: Failed to connect"
|
|
45
|
+
})
|
|
46
|
+
}), () => Effect.promise(() => client.close()));
|
|
47
|
+
class ConnectionImpl {
|
|
48
|
+
conn;
|
|
49
|
+
constructor(conn) {
|
|
50
|
+
this.conn = conn;
|
|
51
|
+
}
|
|
52
|
+
runRaw(sql, params, format = "JSON") {
|
|
53
|
+
const paramsObj = {};
|
|
54
|
+
for (let i = 0; i < params.length; i++) {
|
|
55
|
+
paramsObj[`p${i + 1}`] = params[i];
|
|
56
|
+
}
|
|
57
|
+
return Effect.withFiberRuntime(fiber => {
|
|
58
|
+
const method = fiber.getFiberRef(currentClientMethod);
|
|
59
|
+
return Effect.async(resume => {
|
|
60
|
+
const queryId = fiber.getFiberRef(currentQueryId) ?? Crypto.randomUUID();
|
|
61
|
+
const controller = new AbortController();
|
|
62
|
+
if (method === "command") {
|
|
63
|
+
this.conn.command({
|
|
64
|
+
query: sql,
|
|
65
|
+
query_params: paramsObj,
|
|
66
|
+
abort_signal: controller.signal,
|
|
67
|
+
query_id: queryId
|
|
68
|
+
}).then(result => resume(Effect.succeed(result)), cause => resume(Effect.fail(new SqlError({
|
|
69
|
+
cause,
|
|
70
|
+
message: "Failed to execute statement"
|
|
71
|
+
}))));
|
|
72
|
+
} else {
|
|
73
|
+
this.conn.query({
|
|
74
|
+
query: sql,
|
|
75
|
+
query_params: paramsObj,
|
|
76
|
+
abort_signal: controller.signal,
|
|
77
|
+
query_id: queryId,
|
|
78
|
+
format
|
|
79
|
+
}).then(result => resume(Effect.succeed(result)), cause => resume(Effect.fail(new SqlError({
|
|
80
|
+
cause,
|
|
81
|
+
message: "Failed to execute statement"
|
|
82
|
+
}))));
|
|
83
|
+
}
|
|
84
|
+
return Effect.suspend(() => {
|
|
85
|
+
controller.abort();
|
|
86
|
+
return Effect.promise(() => this.conn.command({
|
|
87
|
+
query: `KILL QUERY WHERE query_id = '${queryId}'`
|
|
88
|
+
}));
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
run(sql, params, format) {
|
|
94
|
+
return this.runRaw(sql, params, format).pipe(Effect.flatMap(result => {
|
|
95
|
+
if ("json" in result) {
|
|
96
|
+
return Effect.promise(() => result.json().then(result => "data" in result ? result.data : result, () => []));
|
|
97
|
+
}
|
|
98
|
+
return Effect.succeed([]);
|
|
99
|
+
}));
|
|
100
|
+
}
|
|
101
|
+
runTransform(sql, params) {
|
|
102
|
+
return options.transformResultNames ? Effect.map(this.run(sql, params), transformRows) : this.run(sql, params);
|
|
103
|
+
}
|
|
104
|
+
execute(sql, params) {
|
|
105
|
+
return this.runTransform(sql, params);
|
|
106
|
+
}
|
|
107
|
+
executeRaw(sql, params) {
|
|
108
|
+
return this.runRaw(sql, params);
|
|
109
|
+
}
|
|
110
|
+
executeWithoutTransform(sql, params) {
|
|
111
|
+
return this.run(sql, params);
|
|
112
|
+
}
|
|
113
|
+
executeValues(sql, params) {
|
|
114
|
+
return this.run(sql, params, "JSONCompact");
|
|
115
|
+
}
|
|
116
|
+
executeUnprepared(sql, params) {
|
|
117
|
+
return this.runTransform(sql, params ?? []);
|
|
118
|
+
}
|
|
119
|
+
executeStream(sql, params) {
|
|
120
|
+
return this.runRaw(sql, params, "JSONEachRow").pipe(Effect.map(result => {
|
|
121
|
+
if (!("stream" in result)) {
|
|
122
|
+
return Stream.empty;
|
|
123
|
+
}
|
|
124
|
+
return NodeStream.fromReadable(() => result.stream(), cause => new SqlError({
|
|
125
|
+
cause,
|
|
126
|
+
message: "Failed to execute stream"
|
|
127
|
+
}));
|
|
128
|
+
}), Stream.unwrap, Stream.chunks, Stream.mapEffect(chunk => {
|
|
129
|
+
const promises = [];
|
|
130
|
+
for (const rows of chunk) {
|
|
131
|
+
for (const row of rows) {
|
|
132
|
+
promises.push(row.json());
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return Effect.tryPromise({
|
|
136
|
+
try: () => Promise.all(promises).then(rows => Chunk.unsafeFromArray(transformRows(rows))),
|
|
137
|
+
catch: cause => new SqlError({
|
|
138
|
+
cause,
|
|
139
|
+
message: "Failed to parse row"
|
|
140
|
+
})
|
|
141
|
+
});
|
|
142
|
+
}), Stream.flattenChunks);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const connection = new ConnectionImpl(client);
|
|
146
|
+
return Object.assign(Client.make({
|
|
147
|
+
acquirer: Effect.succeed(connection),
|
|
148
|
+
compiler,
|
|
149
|
+
spanAttributes: [...(options.spanAttributes ? Object.entries(options.spanAttributes) : []), [Otel.SEMATTRS_DB_SYSTEM, "clickhouse"], [Otel.SEMATTRS_DB_NAME, options.database ?? "default"]],
|
|
150
|
+
beginTransaction: "BEGIN TRANSACTION"
|
|
151
|
+
}), {
|
|
152
|
+
[TypeId]: TypeId,
|
|
153
|
+
config: options,
|
|
154
|
+
param(dataType, value) {
|
|
155
|
+
return clickhouseParam(dataType, value);
|
|
156
|
+
},
|
|
157
|
+
asCommand(effect) {
|
|
158
|
+
return Effect.locally(effect, currentClientMethod, "command");
|
|
159
|
+
},
|
|
160
|
+
insertQuery(options) {
|
|
161
|
+
return FiberRef.getWith(currentQueryId, queryId_ => Effect.async(resume => {
|
|
162
|
+
const queryId = queryId_ ?? Crypto.randomUUID();
|
|
163
|
+
const controller = new AbortController();
|
|
164
|
+
client.insert({
|
|
165
|
+
format: "JSONEachRow",
|
|
166
|
+
...options,
|
|
167
|
+
abort_signal: controller.signal,
|
|
168
|
+
query_id: queryId
|
|
169
|
+
}).then(result => resume(Effect.succeed(result)), cause => resume(Effect.fail(new SqlError({
|
|
170
|
+
cause,
|
|
171
|
+
message: "Failed to insert data"
|
|
172
|
+
}))));
|
|
173
|
+
return Effect.suspend(() => {
|
|
174
|
+
controller.abort();
|
|
175
|
+
return Effect.promise(() => client.command({
|
|
176
|
+
query: `KILL QUERY WHERE query_id = '${queryId}'`
|
|
177
|
+
}));
|
|
178
|
+
});
|
|
179
|
+
}));
|
|
180
|
+
},
|
|
181
|
+
withQueryId: dual(2, (effect, queryId) => Effect.locally(effect, currentQueryId, queryId))
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
/**
|
|
185
|
+
* @category fiber refs
|
|
186
|
+
* @since 1.0.0
|
|
187
|
+
*/
|
|
188
|
+
export const currentClientMethod = /*#__PURE__*/globalValue("@effect/sql-clickhouse/ClickhouseClient/currentClientMethod", () => FiberRef.unsafeMake("query"));
|
|
189
|
+
/**
|
|
190
|
+
* @category fiber refs
|
|
191
|
+
* @since 1.0.0
|
|
192
|
+
*/
|
|
193
|
+
export const currentQueryId = /*#__PURE__*/globalValue("@effect/sql-clickhouse/ClickhouseClient/currentQueryId", () => FiberRef.unsafeMake(undefined));
|
|
194
|
+
/**
|
|
195
|
+
* @category constructor
|
|
196
|
+
* @since 1.0.0
|
|
197
|
+
*/
|
|
198
|
+
export const layer = config => Layer.scopedContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(ClickhouseClient, client).pipe(Context.add(Client.SqlClient, client)))));
|
|
199
|
+
const typeFromUnknown = value => {
|
|
200
|
+
if (Statement.isFragment(value)) {
|
|
201
|
+
return typeFromUnknown(value.segments[0]);
|
|
202
|
+
} else if (isClickhouseParam(value)) {
|
|
203
|
+
return value.i0;
|
|
204
|
+
} else if (Array.isArray(value)) {
|
|
205
|
+
return `Array(${typeFromUnknown(value[0])})`;
|
|
206
|
+
}
|
|
207
|
+
switch (typeof value) {
|
|
208
|
+
case "number":
|
|
209
|
+
return "Decimal";
|
|
210
|
+
case "bigint":
|
|
211
|
+
return "Int64";
|
|
212
|
+
case "boolean":
|
|
213
|
+
return "Bool";
|
|
214
|
+
case "object":
|
|
215
|
+
if (value instanceof Date) {
|
|
216
|
+
return "DateTime()";
|
|
217
|
+
}
|
|
218
|
+
return "String";
|
|
219
|
+
default:
|
|
220
|
+
return "String";
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
/**
|
|
224
|
+
* @category compiler
|
|
225
|
+
* @since 1.0.0
|
|
226
|
+
*/
|
|
227
|
+
export const makeCompiler = transform => Statement.makeCompiler({
|
|
228
|
+
dialect: "sqlite",
|
|
229
|
+
placeholder(i, u) {
|
|
230
|
+
return `{p${i}: ${typeFromUnknown(u)}}`;
|
|
231
|
+
},
|
|
232
|
+
onIdentifier: transform ? function (value, withoutTransform) {
|
|
233
|
+
return withoutTransform ? escape(value) : escape(transform(value));
|
|
234
|
+
} : escape,
|
|
235
|
+
onRecordUpdate() {
|
|
236
|
+
return ["", []];
|
|
237
|
+
},
|
|
238
|
+
onCustom(type, placeholder) {
|
|
239
|
+
return [placeholder(type), [type.i1]];
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
// compiler helpers
|
|
243
|
+
const escape = /*#__PURE__*/Statement.defaultEscape("\"");
|
|
244
|
+
const clickhouseParam = /*#__PURE__*/Statement.custom("ClickhouseParam");
|
|
245
|
+
const isClickhouseParam = /*#__PURE__*/Statement.isCustom("ClickhouseParam");
|
|
246
|
+
//# sourceMappingURL=ClickhouseClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClickhouseClient.js","names":["Clickhouse","NodeStream","Client","SqlError","Statement","Otel","Chunk","Config","Context","Effect","FiberRef","dual","identity","globalValue","Layer","Stream","Crypto","TypeId","Symbol","for","ClickhouseClient","GenericTag","make","options","gen","_","compiler","makeCompiler","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","client","createClient","acquireRelease","tryPromise","try","exec","query","catch","cause","message","promise","close","ConnectionImpl","conn","constructor","runRaw","sql","params","format","paramsObj","i","length","withFiberRuntime","fiber","method","getFiberRef","currentClientMethod","async","resume","queryId","currentQueryId","randomUUID","controller","AbortController","command","query_params","abort_signal","signal","query_id","then","result","succeed","fail","suspend","abort","run","pipe","flatMap","json","data","runTransform","map","execute","executeRaw","executeWithoutTransform","executeValues","executeUnprepared","executeStream","empty","fromReadable","stream","unwrap","chunks","mapEffect","chunk","promises","rows","row","push","Promise","all","unsafeFromArray","flattenChunks","connection","Object","assign","acquirer","spanAttributes","entries","SEMATTRS_DB_SYSTEM","SEMATTRS_DB_NAME","database","beginTransaction","config","param","dataType","value","clickhouseParam","asCommand","effect","locally","insertQuery","getWith","queryId_","insert","withQueryId","unsafeMake","undefined","layer","scopedContext","add","SqlClient","typeFromUnknown","isFragment","segments","isClickhouseParam","i0","Array","isArray","Date","transform","dialect","placeholder","u","onIdentifier","withoutTransform","escape","onRecordUpdate","onCustom","type","i1","defaultEscape","custom","isCustom"],"sources":["../../src/ClickhouseClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Migrator from "@effect/sql/Migrator";
|
|
5
|
+
import * as Layer from "effect/Layer";
|
|
6
|
+
/**
|
|
7
|
+
* @since 1.0.0
|
|
8
|
+
*/
|
|
9
|
+
export * from "@effect/sql/Migrator";
|
|
10
|
+
/**
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
*/
|
|
13
|
+
export * from "@effect/sql/Migrator/FileSystem";
|
|
14
|
+
/**
|
|
15
|
+
* @category constructor
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
*/
|
|
18
|
+
export const run = /*#__PURE__*/Migrator.make({});
|
|
19
|
+
/**
|
|
20
|
+
* @category layers
|
|
21
|
+
* @since 1.0.0
|
|
22
|
+
*/
|
|
23
|
+
export const layer = options => Layer.effectDiscard(run(options));
|
|
24
|
+
//# sourceMappingURL=ClickhouseMigrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClickhouseMigrator.js","names":["Migrator","Layer","run","make","layer","options","effectDiscard"],"sources":["../../src/ClickhouseMigrator.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,QAAQ,MAAM,sBAAsB;AAIhD,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC;;;AAGA,cAAc,sBAAsB;AAEpC;;;AAGA,cAAc,iCAAiC;AAE/C;;;;AAIA,OAAO,MAAMC,GAAG,gBAMZF,QAAQ,CAACG,IAAI,CAAC,EAAE,CAAC;AAErB;;;;AAIA,OAAO,MAAMC,KAAK,GAChBC,OAAoC,IAKjCJ,KAAK,CAACK,aAAa,CAACJ,GAAG,CAACG,OAAO,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["ClickhouseClient","ClickhouseMigrator"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,gBAAgB,MAAM,uBAAuB;AAEzD;;;AAGA,OAAO,KAAKC,kBAAkB,MAAM,yBAAyB","ignoreList":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@effect/sql-clickhouse",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A Clickhouse toolkit for Effect",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/Effect-TS/effect.git",
|
|
9
|
+
"directory": "packages/sql-clickhouse"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": [],
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@clickhouse/client": "^1.6.0",
|
|
14
|
+
"@opentelemetry/semantic-conventions": "^1.25.1"
|
|
15
|
+
},
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"@effect/platform-node": "^0.63.6",
|
|
18
|
+
"@effect/platform": "^0.68.6",
|
|
19
|
+
"@effect/sql": "^0.17.0",
|
|
20
|
+
"effect": "^3.9.2"
|
|
21
|
+
},
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"provenance": true
|
|
24
|
+
},
|
|
25
|
+
"main": "./dist/cjs/index.js",
|
|
26
|
+
"module": "./dist/esm/index.js",
|
|
27
|
+
"types": "./dist/dts/index.d.ts",
|
|
28
|
+
"exports": {
|
|
29
|
+
"./package.json": "./package.json",
|
|
30
|
+
".": {
|
|
31
|
+
"types": "./dist/dts/index.d.ts",
|
|
32
|
+
"import": "./dist/esm/index.js",
|
|
33
|
+
"default": "./dist/cjs/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./ClickhouseClient": {
|
|
36
|
+
"types": "./dist/dts/ClickhouseClient.d.ts",
|
|
37
|
+
"import": "./dist/esm/ClickhouseClient.js",
|
|
38
|
+
"default": "./dist/cjs/ClickhouseClient.js"
|
|
39
|
+
},
|
|
40
|
+
"./ClickhouseMigrator": {
|
|
41
|
+
"types": "./dist/dts/ClickhouseMigrator.d.ts",
|
|
42
|
+
"import": "./dist/esm/ClickhouseMigrator.js",
|
|
43
|
+
"default": "./dist/cjs/ClickhouseMigrator.js"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"typesVersions": {
|
|
47
|
+
"*": {
|
|
48
|
+
"ClickhouseClient": [
|
|
49
|
+
"./dist/dts/ClickhouseClient.d.ts"
|
|
50
|
+
],
|
|
51
|
+
"ClickhouseMigrator": [
|
|
52
|
+
"./dist/dts/ClickhouseMigrator.d.ts"
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|