@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.
@@ -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,9 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ export * as ClickhouseClient from "./ClickhouseClient.js";
5
+ /**
6
+ * @since 1.0.0
7
+ */
8
+ export * as ClickhouseMigrator from "./ClickhouseMigrator.js";
9
+ //# sourceMappingURL=index.js.map
@@ -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":[]}
@@ -0,0 +1,4 @@
1
+ {
2
+ "type": "module",
3
+ "sideEffects": []
4
+ }
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
+ }