@effect/sql-clickhouse 4.0.0-beta.6 → 4.0.0-beta.62
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.
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import * as Clickhouse from "@clickhouse/client";
|
|
5
5
|
import * as Config from "effect/Config";
|
|
6
|
+
import * as Context from "effect/Context";
|
|
6
7
|
import * as Effect from "effect/Effect";
|
|
7
8
|
import * as Layer from "effect/Layer";
|
|
8
9
|
import type * as Scope from "effect/Scope";
|
|
9
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
10
10
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
11
11
|
import * as Client from "effect/unstable/sql/SqlClient";
|
|
12
12
|
import { SqlError } from "effect/unstable/sql/SqlError";
|
|
@@ -49,7 +49,7 @@ export interface ClickhouseClient extends Client.SqlClient {
|
|
|
49
49
|
* @category tags
|
|
50
50
|
* @since 1.0.0
|
|
51
51
|
*/
|
|
52
|
-
export declare const ClickhouseClient:
|
|
52
|
+
export declare const ClickhouseClient: Context.Service<ClickhouseClient, ClickhouseClient>;
|
|
53
53
|
/**
|
|
54
54
|
* @category constructors
|
|
55
55
|
* @since 1.0.0
|
|
@@ -68,17 +68,17 @@ export declare const make: (options: ClickhouseClientConfig) => Effect.Effect<Cl
|
|
|
68
68
|
* @category References
|
|
69
69
|
* @since 1.0.0
|
|
70
70
|
*/
|
|
71
|
-
export declare const ClientMethod:
|
|
71
|
+
export declare const ClientMethod: Context.Reference<"query" | "command" | "insert">;
|
|
72
72
|
/**
|
|
73
73
|
* @category References
|
|
74
74
|
* @since 1.0.0
|
|
75
75
|
*/
|
|
76
|
-
export declare const QueryId:
|
|
76
|
+
export declare const QueryId: Context.Reference<string | undefined>;
|
|
77
77
|
/**
|
|
78
78
|
* @category References
|
|
79
79
|
* @since 1.0.0
|
|
80
80
|
*/
|
|
81
|
-
export declare const ClickhouseSettings:
|
|
81
|
+
export declare const ClickhouseSettings: Context.Reference<NonNullable<Clickhouse.BaseQueryParams["clickhouse_settings"]>>;
|
|
82
82
|
/**
|
|
83
83
|
* @category layers
|
|
84
84
|
* @since 1.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClickhouseClient.d.ts","sourceRoot":"","sources":["../src/ClickhouseClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"ClickhouseClient.d.ts","sourceRoot":"","sources":["../src/ClickhouseClient.ts"],"names":[],"mappings":"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"}
|
package/dist/ClickhouseClient.js
CHANGED
|
@@ -4,20 +4,58 @@
|
|
|
4
4
|
import * as Clickhouse from "@clickhouse/client";
|
|
5
5
|
import * as NodeStream from "@effect/platform-node/NodeStream";
|
|
6
6
|
import * as Config from "effect/Config";
|
|
7
|
+
import * as Context from "effect/Context";
|
|
7
8
|
import * as Duration from "effect/Duration";
|
|
8
9
|
import * as Effect from "effect/Effect";
|
|
9
10
|
import * as Fiber from "effect/Fiber";
|
|
10
11
|
import { dual } from "effect/Function";
|
|
11
12
|
import * as Layer from "effect/Layer";
|
|
12
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
13
13
|
import * as Stream from "effect/Stream";
|
|
14
14
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
15
15
|
import * as Client from "effect/unstable/sql/SqlClient";
|
|
16
|
-
import { SqlError } from "effect/unstable/sql/SqlError";
|
|
16
|
+
import { AuthenticationError, AuthorizationError, ConnectionError, SqlError, SqlSyntaxError, StatementTimeoutError, UnknownError } from "effect/unstable/sql/SqlError";
|
|
17
17
|
import * as Statement from "effect/unstable/sql/Statement";
|
|
18
18
|
import * as Crypto from "node:crypto";
|
|
19
19
|
const ATTR_DB_SYSTEM_NAME = "db.system.name";
|
|
20
20
|
const ATTR_DB_NAMESPACE = "db.namespace";
|
|
21
|
+
const clickhouseCodeFromCause = cause => {
|
|
22
|
+
if (typeof cause !== "object" || cause === null || !("code" in cause)) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
const code = cause.code;
|
|
26
|
+
if (typeof code === "number") {
|
|
27
|
+
return code;
|
|
28
|
+
}
|
|
29
|
+
if (typeof code === "string") {
|
|
30
|
+
const parsed = Number(code);
|
|
31
|
+
return Number.isNaN(parsed) ? undefined : parsed;
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
};
|
|
35
|
+
const clickhouseSyntaxErrorCodes = /*#__PURE__*/new Set([36, 60, 62, 242]);
|
|
36
|
+
const classifyError = (cause, message, operation, fallback = "unknown") => {
|
|
37
|
+
const props = {
|
|
38
|
+
cause,
|
|
39
|
+
message,
|
|
40
|
+
operation
|
|
41
|
+
};
|
|
42
|
+
const code = clickhouseCodeFromCause(cause);
|
|
43
|
+
if (code !== undefined) {
|
|
44
|
+
if (code === 516) {
|
|
45
|
+
return new AuthenticationError(props);
|
|
46
|
+
}
|
|
47
|
+
if (code === 497) {
|
|
48
|
+
return new AuthorizationError(props);
|
|
49
|
+
}
|
|
50
|
+
if (clickhouseSyntaxErrorCodes.has(code)) {
|
|
51
|
+
return new SqlSyntaxError(props);
|
|
52
|
+
}
|
|
53
|
+
if (code === 159 || code === 469) {
|
|
54
|
+
return new StatementTimeoutError(props);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return fallback === "connection" ? new ConnectionError(props) : new UnknownError(props);
|
|
58
|
+
};
|
|
21
59
|
/**
|
|
22
60
|
* @category type ids
|
|
23
61
|
* @since 1.0.0
|
|
@@ -27,7 +65,7 @@ export const TypeId = "~@effect/sql-clickhouse/ClickhouseClient";
|
|
|
27
65
|
* @category tags
|
|
28
66
|
* @since 1.0.0
|
|
29
67
|
*/
|
|
30
|
-
export const ClickhouseClient = /*#__PURE__*/
|
|
68
|
+
export const ClickhouseClient = /*#__PURE__*/Context.Service("@effect/sql-clickhouse/ClickhouseClient");
|
|
31
69
|
/**
|
|
32
70
|
* @category constructors
|
|
33
71
|
* @since 1.0.0
|
|
@@ -41,14 +79,16 @@ export const make = options => Effect.gen(function* () {
|
|
|
41
79
|
query: "SELECT 1"
|
|
42
80
|
}),
|
|
43
81
|
catch: cause => new SqlError({
|
|
44
|
-
cause,
|
|
45
|
-
message: "ClickhouseClient: Failed to connect"
|
|
82
|
+
reason: classifyError(cause, "ClickhouseClient: Failed to connect", "connect", "connection")
|
|
46
83
|
})
|
|
47
84
|
}), () => Effect.promise(() => client.close())).pipe(Effect.timeoutOrElse({
|
|
48
85
|
duration: Duration.seconds(5),
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
86
|
+
orElse: () => Effect.fail(new SqlError({
|
|
87
|
+
reason: new ConnectionError({
|
|
88
|
+
message: "ClickhouseClient: Connection timeout",
|
|
89
|
+
cause: new Error("connection timeout"),
|
|
90
|
+
operation: "connect"
|
|
91
|
+
})
|
|
52
92
|
}))
|
|
53
93
|
}));
|
|
54
94
|
class ConnectionImpl {
|
|
@@ -75,8 +115,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
75
115
|
query_id: queryId,
|
|
76
116
|
clickhouse_settings: settings
|
|
77
117
|
}).then(result => resume(Effect.succeed(result)), cause => resume(Effect.fail(new SqlError({
|
|
78
|
-
cause,
|
|
79
|
-
message: "Failed to execute statement"
|
|
118
|
+
reason: classifyError(cause, "Failed to execute statement", "execute")
|
|
80
119
|
}))));
|
|
81
120
|
} else {
|
|
82
121
|
this.conn.query({
|
|
@@ -87,8 +126,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
87
126
|
clickhouse_settings: settings,
|
|
88
127
|
format
|
|
89
128
|
}).then(result => resume(Effect.succeed(result)), cause => resume(Effect.fail(new SqlError({
|
|
90
|
-
cause,
|
|
91
|
-
message: "Failed to execute statement"
|
|
129
|
+
reason: classifyError(cause, "Failed to execute statement", "execute")
|
|
92
130
|
}))));
|
|
93
131
|
}
|
|
94
132
|
return Effect.suspend(() => {
|
|
@@ -128,8 +166,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
128
166
|
return NodeStream.fromReadable({
|
|
129
167
|
evaluate: () => result.stream(),
|
|
130
168
|
onError: cause => new SqlError({
|
|
131
|
-
cause,
|
|
132
|
-
message: "Failed to execute stream"
|
|
169
|
+
reason: classifyError(cause, "Failed to execute stream", "stream")
|
|
133
170
|
})
|
|
134
171
|
});
|
|
135
172
|
}), Stream.unwrap, Stream.chunks, Stream.mapEffect(chunk => {
|
|
@@ -142,8 +179,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
142
179
|
return Effect.tryPromise({
|
|
143
180
|
try: () => Promise.all(promises).then(rows => transformRows ? transformRows(rows) : rows),
|
|
144
181
|
catch: cause => new SqlError({
|
|
145
|
-
cause,
|
|
146
|
-
message: "Failed to parse row"
|
|
182
|
+
reason: classifyError(cause, "Failed to parse row", "parseRow")
|
|
147
183
|
})
|
|
148
184
|
});
|
|
149
185
|
}), Stream.flattenIterable);
|
|
@@ -178,8 +214,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
178
214
|
query_id: queryId,
|
|
179
215
|
clickhouse_settings: settings
|
|
180
216
|
}).then(result => resume(Effect.succeed(result)), cause => resume(Effect.fail(new SqlError({
|
|
181
|
-
cause,
|
|
182
|
-
message: "Failed to insert data"
|
|
217
|
+
reason: classifyError(cause, "Failed to insert data", "insert")
|
|
183
218
|
}))));
|
|
184
219
|
return Effect.suspend(() => {
|
|
185
220
|
controller.abort();
|
|
@@ -197,33 +232,33 @@ export const make = options => Effect.gen(function* () {
|
|
|
197
232
|
* @category References
|
|
198
233
|
* @since 1.0.0
|
|
199
234
|
*/
|
|
200
|
-
export const ClientMethod = /*#__PURE__*/
|
|
235
|
+
export const ClientMethod = /*#__PURE__*/Context.Reference("@effect/sql-clickhouse/ClickhouseClient/ClientMethod", {
|
|
201
236
|
defaultValue: () => "query"
|
|
202
237
|
});
|
|
203
238
|
/**
|
|
204
239
|
* @category References
|
|
205
240
|
* @since 1.0.0
|
|
206
241
|
*/
|
|
207
|
-
export const QueryId = /*#__PURE__*/
|
|
242
|
+
export const QueryId = /*#__PURE__*/Context.Reference("@effect/sql-clickhouse/ClickhouseClient/QueryId", {
|
|
208
243
|
defaultValue: () => undefined
|
|
209
244
|
});
|
|
210
245
|
/**
|
|
211
246
|
* @category References
|
|
212
247
|
* @since 1.0.0
|
|
213
248
|
*/
|
|
214
|
-
export const ClickhouseSettings = /*#__PURE__*/
|
|
249
|
+
export const ClickhouseSettings = /*#__PURE__*/Context.Reference("@effect/sql-clickhouse/ClickhouseClient/ClickhouseSettings", {
|
|
215
250
|
defaultValue: () => ({})
|
|
216
251
|
});
|
|
217
252
|
/**
|
|
218
253
|
* @category layers
|
|
219
254
|
* @since 1.0.0
|
|
220
255
|
*/
|
|
221
|
-
export const layerConfig = config => Layer.
|
|
256
|
+
export const layerConfig = config => Layer.effectContext(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => Context.make(ClickhouseClient, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
|
|
222
257
|
/**
|
|
223
258
|
* @category layers
|
|
224
259
|
* @since 1.0.0
|
|
225
260
|
*/
|
|
226
|
-
export const layer = config => Layer.
|
|
261
|
+
export const layer = config => Layer.effectContext(Effect.map(make(config), client => Context.make(ClickhouseClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
|
|
227
262
|
const typeFromUnknown = value => {
|
|
228
263
|
if (Statement.isFragment(value)) {
|
|
229
264
|
return typeFromUnknown(value.segments[0]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClickhouseClient.js","names":["Clickhouse","NodeStream","Config","Duration","Effect","Fiber","dual","Layer","ServiceMap","Stream","Reactivity","Client","SqlError","Statement","Crypto","ATTR_DB_SYSTEM_NAME","ATTR_DB_NAMESPACE","TypeId","ClickhouseClient","Service","make","options","gen","compiler","makeCompiler","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","client","createClient","acquireRelease","tryPromise","try","exec","query","catch","cause","message","promise","close","pipe","timeoutOrElse","duration","seconds","onTimeout","fail","Error","ConnectionImpl","conn","constructor","runRaw","sql","params","format","paramsObj","i","length","withFiber","fiber","method","getRef","ClientMethod","callback","resume","queryId","QueryId","randomUUID","settings","ClickhouseSettings","controller","AbortController","command","query_params","abort_signal","signal","query_id","clickhouse_settings","then","result","succeed","suspend","abort","run","flatMap","json","data","execute","map","executeRaw","executeValues","executeUnprepared","executeStream","empty","fromReadable","evaluate","stream","onError","unwrap","chunks","mapEffect","chunk","promises","rows","row","push","Promise","all","flattenIterable","connection","Object","assign","acquirer","spanAttributes","entries","database","beginTransaction","config","param","dataType","value","fragment","clickhouseParam","asCommand","effect","provideService","insertQuery","getCurrent","insert","withQueryId","withClickhouseSettings","Reference","defaultValue","layerConfig","effectServices","asEffect","add","SqlClient","provide","layer","typeFromUnknown","isFragment","segments","isClickhouseParam","paramA","Array","isArray","Date","transform","dialect","placeholder","u","onIdentifier","withoutTransform","escape","onRecordUpdate","onCustom","type","paramB","defaultEscape","custom","isCustom"],"sources":["../src/ClickhouseClient.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,UAAU,MAAM,oBAAoB;AAChD,OAAO,KAAKC,UAAU,MAAM,kCAAkC;AAC9D,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,OAAO,KAAKC,UAAU,MAAM,mBAAmB;AAC/C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,UAAU,MAAM,uCAAuC;AACnE,OAAO,KAAKC,MAAM,MAAM,+BAA+B;AAEvD,SAASC,QAAQ,QAAQ,8BAA8B;AACvD,OAAO,KAAKC,SAAS,MAAM,+BAA+B;AAC1D,OAAO,KAAKC,MAAM,MAAM,aAAa;AAGrC,MAAMC,mBAAmB,GAAG,gBAAgB;AAC5C,MAAMC,iBAAiB,GAAG,cAAc;AAExC;;;;AAIA,OAAO,MAAMC,MAAM,GAAW,0CAA0C;AAqCxE;;;;AAIA,OAAO,MAAMC,gBAAgB,gBAAGV,UAAU,CAACW,OAAO,CAAmB,yCAAyC,CAAC;AAY/G;;;;AAIA,OAAO,MAAMC,IAAI,GACfC,OAA+B,IAE/BjB,MAAM,CAACkB,GAAG,CAAC,aAAS;EAClB,MAAMC,QAAQ,GAAGC,YAAY,CAACH,OAAO,CAACI,mBAAmB,CAAC;EAC1D,MAAMC,aAAa,GAAGL,OAAO,CAACM,oBAAoB,GAC9Cd,SAAS,CAACe,iBAAiB,CAACP,OAAO,CAACM,oBAAoB,CAAC,CAACE,KAAK,GAC/DC,SAAS;EAEb,MAAMC,MAAM,GAAG/B,UAAU,CAACgC,YAAY,CAACX,OAAO,CAAC;EAE/C,OAAOjB,MAAM,CAAC6B,cAAc,CAC1B7B,MAAM,CAAC8B,UAAU,CAAC;IAChBC,GAAG,EAAEA,CAAA,KAAMJ,MAAM,CAACK,IAAI,CAAC;MAAEC,KAAK,EAAE;IAAU,CAAE,CAAC;IAC7CC,KAAK,EAAGC,KAAK,IAAK,IAAI3B,QAAQ,CAAC;MAAE2B,KAAK;MAAEC,OAAO,EAAE;IAAqC,CAAE;GACzF,CAAC,EACF,MAAMpC,MAAM,CAACqC,OAAO,CAAC,MAAMV,MAAM,CAACW,KAAK,EAAE,CAAC,CAC3C,CAACC,IAAI,CACJvC,MAAM,CAACwC,aAAa,CAAC;IACnBC,QAAQ,EAAE1C,QAAQ,CAAC2C,OAAO,CAAC,CAAC,CAAC;IAC7BC,SAAS,EAAEA,CAAA,KACT3C,MAAM,CAAC4C,IAAI,CACT,IAAIpC,QAAQ,CAAC;MACX4B,OAAO,EAAE,sCAAsC;MAC/CD,KAAK,EAAE,IAAIU,KAAK,CAAC,oBAAoB;KACtC,CAAC;GAEP,CAAC,CACH;EAED,MAAMC,cAAc;IACVC,IAAI;IACZC,YAAYD,IAAiC;MAC3C,IAAI,CAACA,IAAI,GAAGA,IAAI;IAClB;IAEQE,MAAMA,CAACC,GAAW,EAAEC,MAA8B,EAAEC,MAAA,GAAgC,MAAM;MAChG,MAAMC,SAAS,GAA4B,EAAE;MAC7C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,MAAM,CAACI,MAAM,EAAED,CAAC,EAAE,EAAE;QACtCD,SAAS,CAAC,IAAIC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAGH,MAAM,CAACG,CAAC,CAAC;MACpC;MACA,OAAOtD,MAAM,CAACwD,SAAS,CAAqEC,KAAK,IAAI;QACnG,MAAMC,MAAM,GAAGD,KAAK,CAACE,MAAM,CAACC,YAAY,CAAC;QACzC,OAAO5D,MAAM,CAAC6D,QAAQ,CAAqEC,MAAM,IAAI;UACnG,MAAMC,OAAO,GAAGN,KAAK,CAACE,MAAM,CAACK,OAAO,CAAC,IAAItD,MAAM,CAACuD,UAAU,EAAE;UAC5D,MAAMC,QAAQ,GAAGT,KAAK,CAACE,MAAM,CAACQ,kBAAkB,CAAC;UACjD,MAAMC,UAAU,GAAG,IAAIC,eAAe,EAAE;UACxC,IAAIX,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,CAACX,IAAI,CAACuB,OAAO,CAAC;cAChBrC,KAAK,EAAEiB,GAAG;cACVqB,YAAY,EAAElB,SAAS;cACvBmB,YAAY,EAAEJ,UAAU,CAACK,MAAM;cAC/BC,QAAQ,EAAEX,OAAO;cACjBY,mBAAmB,EAAET;aACtB,CAAC,CAACU,IAAI,CACJC,MAAM,IAAKf,MAAM,CAAC9D,MAAM,CAAC8E,OAAO,CAACD,MAAM,CAAC,CAAC,EACzC1C,KAAK,IAAK2B,MAAM,CAAC9D,MAAM,CAAC4C,IAAI,CAAC,IAAIpC,QAAQ,CAAC;cAAE2B,KAAK;cAAEC,OAAO,EAAE;YAA6B,CAAE,CAAC,CAAC,CAAC,CAChG;UACH,CAAC,MAAM;YACL,IAAI,CAACW,IAAI,CAACd,KAAK,CAAC;cACdA,KAAK,EAAEiB,GAAG;cACVqB,YAAY,EAAElB,SAAS;cACvBmB,YAAY,EAAEJ,UAAU,CAACK,MAAM;cAC/BC,QAAQ,EAAEX,OAAO;cACjBY,mBAAmB,EAAET,QAAQ;cAC7Bd;aACD,CAAC,CAACwB,IAAI,CACJC,MAAM,IAAKf,MAAM,CAAC9D,MAAM,CAAC8E,OAAO,CAACD,MAAM,CAAC,CAAC,EACzC1C,KAAK,IAAK2B,MAAM,CAAC9D,MAAM,CAAC4C,IAAI,CAAC,IAAIpC,QAAQ,CAAC;cAAE2B,KAAK;cAAEC,OAAO,EAAE;YAA6B,CAAE,CAAC,CAAC,CAAC,CAChG;UACH;UACA,OAAOpC,MAAM,CAAC+E,OAAO,CAAC,MAAK;YACzBX,UAAU,CAACY,KAAK,EAAE;YAClB,OAAOhF,MAAM,CAACqC,OAAO,CAAC,MAAM,IAAI,CAACU,IAAI,CAACuB,OAAO,CAAC;cAAErC,KAAK,EAAE,gCAAgC8B,OAAO;YAAG,CAAE,CAAC,CAAC;UACvG,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IAEQkB,GAAGA,CAAC/B,GAAW,EAAEC,MAA8B,EAAEC,MAA8B;MACrF,OAAO,IAAI,CAACH,MAAM,CAACC,GAAG,EAAEC,MAAM,EAAEC,MAAM,CAAC,CAACb,IAAI,CAC1CvC,MAAM,CAACkF,OAAO,CAAEL,MAAM,IAAI;QACxB,IAAI,MAAM,IAAIA,MAAM,EAAE;UACpB,OAAO7E,MAAM,CAACqC,OAAO,CAAC,MACpBwC,MAAM,CAACM,IAAI,EAAE,CAACP,IAAI,CACfC,MAAM,IAAK,MAAM,IAAIA,MAAM,GAAGA,MAAM,CAACO,IAAI,GAAGP,MAAa,EAC1D,MAAM,EAAE,CACT,CACF;QACH;QACA,OAAO7E,MAAM,CAAC8E,OAAO,CAAC,EAAE,CAAC;MAC3B,CAAC,CAAC,CACH;IACH;IAEAO,OAAOA,CACLnC,GAAW,EACXC,MAA8B,EAC9B7B,aAA0F;MAE1F,OAAOA,aAAa,GAChBtB,MAAM,CAACsF,GAAG,CAAC,IAAI,CAACL,GAAG,CAAC/B,GAAG,EAAEC,MAAM,CAAC,EAAE7B,aAAa,CAAC,GAChD,IAAI,CAAC2D,GAAG,CAAC/B,GAAG,EAAEC,MAAM,CAAC;IAC3B;IACAoC,UAAUA,CAACrC,GAAW,EAAEC,MAA8B;MACpD,OAAO,IAAI,CAACF,MAAM,CAACC,GAAG,EAAEC,MAAM,CAAC;IACjC;IACAqC,aAAaA,CAACtC,GAAW,EAAEC,MAA8B;MACvD,OAAO,IAAI,CAAC8B,GAAG,CAAC/B,GAAG,EAAEC,MAAM,EAAE,aAAa,CAAC;IAC7C;IACAsC,iBAAiBA,CAACvC,GAAW,EAAEC,MAA8B,EAAE7B,aAAmB;MAChF,OAAO,IAAI,CAAC+D,OAAO,CAACnC,GAAG,EAAEC,MAAM,EAAE7B,aAAa,CAAC;IACjD;IACAoE,aAAaA,CACXxC,GAAW,EACXC,MAA8B,EAC9B7B,aAA0F;MAE1F,OAAO,IAAI,CAAC2B,MAAM,CAACC,GAAG,EAAEC,MAAM,EAAE,aAAa,CAAC,CAACZ,IAAI,CACjDvC,MAAM,CAACsF,GAAG,CAAET,MAAM,IAAI;QACpB,IAAI,EAAE,QAAQ,IAAIA,MAAM,CAAC,EAAE;UACzB,OAAOxE,MAAM,CAACsF,KAAK;QACrB;QACA,OAAO9F,UAAU,CAAC+F,YAAY,CAA8D;UAC1FC,QAAQ,EAAEA,CAAA,KAAMhB,MAAM,CAACiB,MAAM,EAAS;UACtCC,OAAO,EAAG5D,KAAK,IAAK,IAAI3B,QAAQ,CAAC;YAAE2B,KAAK;YAAEC,OAAO,EAAE;UAA0B,CAAE;SAChF,CAAC;MACJ,CAAC,CAAC,EACF/B,MAAM,CAAC2F,MAAM,EACb3F,MAAM,CAAC4F,MAAM,EACb5F,MAAM,CAAC6F,SAAS,CAAEC,KAAK,IAAI;QACzB,MAAMC,QAAQ,GAAwB,EAAE;QACxC,KAAK,MAAMC,IAAI,IAAIF,KAAK,EAAE;UACxB,KAAK,MAAMG,GAAG,IAAID,IAAI,EAAE;YACtBD,QAAQ,CAACG,IAAI,CAACD,GAAG,CAACnB,IAAI,EAAE,CAAC;UAC3B;QACF;QACA,OAAOnF,MAAM,CAAC8B,UAAU,CAAC;UACvBC,GAAG,EAAEA,CAAA,KAAMyE,OAAO,CAACC,GAAG,CAACL,QAAQ,CAAC,CAACxB,IAAI,CAAEyB,IAAI,IAAK/E,aAAa,GAAGA,aAAa,CAAC+E,IAAI,CAAC,GAAGA,IAAI,CAAC;UAC3FnE,KAAK,EAAGC,KAAK,IAAK,IAAI3B,QAAQ,CAAC;YAAE2B,KAAK;YAAEC,OAAO,EAAE;UAAqB,CAAE;SACzE,CAAC;MACJ,CAAC,CAAC,EACF/B,MAAM,CAACqG,eAAe,CACvB;IACH;;EAGF,MAAMC,UAAU,GAAG,IAAI7D,cAAc,CAACnB,MAAM,CAAC;EAE7C,OAAOiF,MAAM,CAACC,MAAM,CAClB,OAAOtG,MAAM,CAACS,IAAI,CAAC;IACjB8F,QAAQ,EAAE9G,MAAM,CAAC8E,OAAO,CAAC6B,UAAU,CAAC;IACpCxF,QAAQ;IACR4F,cAAc,EAAE,CACd,IAAI9F,OAAO,CAAC8F,cAAc,GAAGH,MAAM,CAACI,OAAO,CAAC/F,OAAO,CAAC8F,cAAc,CAAC,GAAG,EAAE,CAAC,EACzE,CAACpG,mBAAmB,EAAE,YAAY,CAAC,EACnC,CAACC,iBAAiB,EAAEK,OAAO,CAACgG,QAAQ,IAAI,SAAS,CAAC,CACnD;IACDC,gBAAgB,EAAE,mBAAmB;IACrC5F;GACD,CAAC,EACF;IACE,CAACT,MAAM,GAAGA,MAAgB;IAC1BsG,MAAM,EAAElG,OAAO;IACfmG,KAAKA,CAACC,QAAgB,EAAEC,KAAc;MACpC,OAAO7G,SAAS,CAAC8G,QAAQ,CAAC,CAACC,eAAe,CAACH,QAAQ,EAAEC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC;IACDG,SAASA,CAAUC,MAA8B;MAC/C,OAAO1H,MAAM,CAAC2H,cAAc,CAACD,MAAM,EAAE9D,YAAY,EAAE,SAAS,CAAC;IAC/D,CAAC;IACDgE,WAAWA,CAAc3G,OAIxB;MACC,OAAOjB,MAAM,CAAC6D,QAAQ,CAAqCC,MAAM,IAAI;QACnE,MAAML,KAAK,GAAGxD,KAAK,CAAC4H,UAAU,EAAG;QACjC,MAAM9D,OAAO,GAAGN,KAAK,CAACE,MAAM,CAACK,OAAO,CAAC,IAAItD,MAAM,CAACuD,UAAU,EAAE;QAC5D,MAAMC,QAAQ,GAAGT,KAAK,CAACE,MAAM,CAACQ,kBAAkB,CAAC;QACjD,MAAMC,UAAU,GAAG,IAAIC,eAAe,EAAE;QACxC1C,MAAM,CAACmG,MAAM,CAAC;UACZ1E,MAAM,EAAE,aAAa;UACrB,GAAGnC,OAAO;UACVuD,YAAY,EAAEJ,UAAU,CAACK,MAAM;UAC/BC,QAAQ,EAAEX,OAAO;UACjBY,mBAAmB,EAAET;SACtB,CAAC,CAACU,IAAI,CACJC,MAAM,IAAKf,MAAM,CAAC9D,MAAM,CAAC8E,OAAO,CAACD,MAAM,CAAC,CAAC,EACzC1C,KAAK,IAAK2B,MAAM,CAAC9D,MAAM,CAAC4C,IAAI,CAAC,IAAIpC,QAAQ,CAAC;UAAE2B,KAAK;UAAEC,OAAO,EAAE;QAAuB,CAAE,CAAC,CAAC,CAAC,CAC1F;QACD,OAAOpC,MAAM,CAAC+E,OAAO,CAAC,MAAK;UACzBX,UAAU,CAACY,KAAK,EAAE;UAClB,OAAOhF,MAAM,CAACqC,OAAO,CAAC,MAAMV,MAAM,CAAC2C,OAAO,CAAC;YAAErC,KAAK,EAAE,gCAAgC8B,OAAO;UAAG,CAAE,CAAC,CAAC;QACpG,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC;IACDgE,WAAW,EAAE7H,IAAI,CAAC,CAAC,EAAE,CAAUwH,MAA8B,EAAE3D,OAAe,KAC5E/D,MAAM,CAAC2H,cAAc,CAACD,MAAM,EAAE1D,OAAO,EAAED,OAAO,CAAC,CAAC;IAClDiE,sBAAsB,EAAE9H,IAAI,CAC1B,CAAC,EACD,CACEwH,MAA8B,EAC9BxD,QAAwE,KAExElE,MAAM,CAAC2H,cAAc,CAACD,MAAM,EAAEvD,kBAAkB,EAAED,QAAQ,CAAC;GAEhE,CACF;AACH,CAAC,CAAC;AAEJ;;;;AAIA,OAAO,MAAMN,YAAY,gBAAGxD,UAAU,CAAC6H,SAAS,CAC9C,sDAAsD,EACtD;EACEC,YAAY,EAAEA,CAAA,KAAM;CACrB,CACF;AAED;;;;AAIA,OAAO,MAAMlE,OAAO,gBAAG5D,UAAU,CAAC6H,SAAS,CACzC,iDAAiD,EACjD;EAAEC,YAAY,EAAEA,CAAA,KAAMxG;AAAS,CAAE,CAClC;AAED;;;;AAIA,OAAO,MAAMyC,kBAAkB,gBAE3B/D,UAAU,CAAC6H,SAAS,CAAC,4DAA4D,EAAE;EACrFC,YAAY,EAAEA,CAAA,MAAO,EAAE;CACxB,CAAC;AAEF;;;;AAIA,OAAO,MAAMC,WAAW,GAGtBhB,MAA2C,IAE3ChH,KAAK,CAACiI,cAAc,CAClBtI,MAAM,CAACkG,MAAM,CAACmB,MAAM,CAAC,CAACkB,QAAQ,EAAE,CAAC9F,IAAI,CACnCvC,MAAM,CAACkF,OAAO,CAAClE,IAAI,CAAC,EACpBhB,MAAM,CAACsF,GAAG,CAAE3D,MAAM,IAChBvB,UAAU,CAACY,IAAI,CAACF,gBAAgB,EAAEa,MAAM,CAAC,CAACY,IAAI,CAC5CnC,UAAU,CAACkI,GAAG,CAAC/H,MAAM,CAACgI,SAAS,EAAE5G,MAAM,CAAC,CACzC,CACF,CACF,CACF,CAACY,IAAI,CAACpC,KAAK,CAACqI,OAAO,CAAClI,UAAU,CAACmI,KAAK,CAAC,CAAC;AAEzC;;;;AAIA,OAAO,MAAMA,KAAK,GAChBtB,MAA8B,IAE9BhH,KAAK,CAACiI,cAAc,CAClBpI,MAAM,CAACsF,GAAG,CAACtE,IAAI,CAACmG,MAAM,CAAC,EAAGxF,MAAM,IAC9BvB,UAAU,CAACY,IAAI,CAACF,gBAAgB,EAAEa,MAAM,CAAC,CAACY,IAAI,CAC5CnC,UAAU,CAACkI,GAAG,CAAC/H,MAAM,CAACgI,SAAS,EAAE5G,MAAM,CAAC,CACzC,CAAC,CACL,CAACY,IAAI,CAACpC,KAAK,CAACqI,OAAO,CAAClI,UAAU,CAACmI,KAAK,CAAC,CAAC;AAEzC,MAAMC,eAAe,GAAIpB,KAAc,IAAY;EACjD,IAAI7G,SAAS,CAACkI,UAAU,CAACrB,KAAK,CAAC,EAAE;IAC/B,OAAOoB,eAAe,CAACpB,KAAK,CAACsB,QAAQ,CAAC,CAAC,CAAC,CAAC;EAC3C,CAAC,MAAM,IAAIC,iBAAiB,CAACvB,KAAK,CAAC,EAAE;IACnC,OAAOA,KAAK,CAACwB,MAAM;EACrB,CAAC,MAAM,IAAIC,KAAK,CAACC,OAAO,CAAC1B,KAAK,CAAC,EAAE;IAC/B,OAAO,SAASoB,eAAe,CAACpB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;EAC9C;EACA,QAAQ,OAAOA,KAAK;IAClB,KAAK,QAAQ;MACX,OAAO,SAAS;IAClB,KAAK,QAAQ;MACX,OAAO,OAAO;IAChB,KAAK,SAAS;MACZ,OAAO,MAAM;IACf,KAAK,QAAQ;MACX,IAAIA,KAAK,YAAY2B,IAAI,EAAE;QACzB,OAAO,YAAY;MACrB;MACA,OAAO,QAAQ;IACjB;MACE,OAAO,QAAQ;EACnB;AACF,CAAC;AAED;;;;AAIA,OAAO,MAAM7H,YAAY,GAAI8H,SAAiC,IAC5DzI,SAAS,CAACW,YAAY,CAAmB;EACvC+H,OAAO,EAAE,QAAQ;EACjBC,WAAWA,CAAC9F,CAAC,EAAE+F,CAAC;IACd,OAAO,KAAK/F,CAAC,KAAKoF,eAAe,CAACW,CAAC,CAAC,GAAG;EACzC,CAAC;EACDC,YAAY,EAAEJ,SAAS,GACrB,UAAS5B,KAAK,EAAEiC,gBAAgB;IAC9B,OAAOA,gBAAgB,GAAGC,MAAM,CAAClC,KAAK,CAAC,GAAGkC,MAAM,CAACN,SAAS,CAAC5B,KAAK,CAAC,CAAC;EACpE,CAAC,GACDkC,MAAM;EACRC,cAAcA,CAAA;IACZ,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC;EACjB,CAAC;EACDC,QAAQA,CAACC,IAAI,EAAEP,WAAW;IACxB,OAAO,CAACA,WAAW,CAACO,IAAI,CAAC,EAAE,CAACA,IAAI,CAACC,MAAM,CAAC,CAAC;EAC3C;CACD,CAAC;AAEJ;AAEA,MAAMJ,MAAM,gBAAG/I,SAAS,CAACoJ,aAAa,CAAC,IAAI,CAAC;AAc5C,MAAMrC,eAAe,gBAAG/G,SAAS,CAACqJ,MAAM,CAAkB,iBAAiB,CAAC;AAC5E,MAAMjB,iBAAiB,gBAAGpI,SAAS,CAACsJ,QAAQ,CAAkB,iBAAiB,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ClickhouseClient.js","names":["Clickhouse","NodeStream","Config","Context","Duration","Effect","Fiber","dual","Layer","Stream","Reactivity","Client","AuthenticationError","AuthorizationError","ConnectionError","SqlError","SqlSyntaxError","StatementTimeoutError","UnknownError","Statement","Crypto","ATTR_DB_SYSTEM_NAME","ATTR_DB_NAMESPACE","clickhouseCodeFromCause","cause","undefined","code","parsed","Number","isNaN","clickhouseSyntaxErrorCodes","Set","classifyError","message","operation","fallback","props","has","TypeId","ClickhouseClient","Service","make","options","gen","compiler","makeCompiler","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","client","createClient","acquireRelease","tryPromise","try","exec","query","catch","reason","promise","close","pipe","timeoutOrElse","duration","seconds","orElse","fail","Error","ConnectionImpl","conn","constructor","runRaw","sql","params","format","paramsObj","i","length","withFiber","fiber","method","getRef","ClientMethod","callback","resume","queryId","QueryId","randomUUID","settings","ClickhouseSettings","controller","AbortController","command","query_params","abort_signal","signal","query_id","clickhouse_settings","then","result","succeed","suspend","abort","run","flatMap","json","data","execute","map","executeRaw","executeValues","executeUnprepared","executeStream","empty","fromReadable","evaluate","stream","onError","unwrap","chunks","mapEffect","chunk","promises","rows","row","push","Promise","all","flattenIterable","connection","Object","assign","acquirer","spanAttributes","entries","database","beginTransaction","config","param","dataType","value","fragment","clickhouseParam","asCommand","effect","provideService","insertQuery","getCurrent","insert","withQueryId","withClickhouseSettings","Reference","defaultValue","layerConfig","effectContext","asEffect","add","SqlClient","provide","layer","typeFromUnknown","isFragment","segments","isClickhouseParam","paramA","Array","isArray","Date","transform","dialect","placeholder","u","onIdentifier","withoutTransform","escape","onRecordUpdate","onCustom","type","paramB","defaultEscape","custom","isCustom"],"sources":["../src/ClickhouseClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/sql-clickhouse",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.62",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "A Clickhouse toolkit for Effect",
|
|
@@ -43,15 +43,15 @@
|
|
|
43
43
|
"provenance": true
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@effect/platform-node": "^4.0.0-beta.
|
|
47
|
-
"effect": "^4.0.0-beta.
|
|
46
|
+
"@effect/platform-node": "^4.0.0-beta.62",
|
|
47
|
+
"effect": "^4.0.0-beta.62"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@effect/platform-node": "^4.0.0-beta.
|
|
51
|
-
"effect": "^4.0.0-beta.
|
|
50
|
+
"@effect/platform-node": "^4.0.0-beta.62",
|
|
51
|
+
"effect": "^4.0.0-beta.62"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@clickhouse/client": "^1.
|
|
54
|
+
"@clickhouse/client": "^1.18.2"
|
|
55
55
|
},
|
|
56
56
|
"scripts": {
|
|
57
57
|
"codegen": "effect-utils codegen",
|
package/src/ClickhouseClient.ts
CHANGED
|
@@ -4,18 +4,26 @@
|
|
|
4
4
|
import * as Clickhouse from "@clickhouse/client"
|
|
5
5
|
import * as NodeStream from "@effect/platform-node/NodeStream"
|
|
6
6
|
import * as Config from "effect/Config"
|
|
7
|
+
import * as Context from "effect/Context"
|
|
7
8
|
import * as Duration from "effect/Duration"
|
|
8
9
|
import * as Effect from "effect/Effect"
|
|
9
10
|
import * as Fiber from "effect/Fiber"
|
|
10
11
|
import { dual } from "effect/Function"
|
|
11
12
|
import * as Layer from "effect/Layer"
|
|
12
13
|
import type * as Scope from "effect/Scope"
|
|
13
|
-
import * as ServiceMap from "effect/ServiceMap"
|
|
14
14
|
import * as Stream from "effect/Stream"
|
|
15
15
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity"
|
|
16
16
|
import * as Client from "effect/unstable/sql/SqlClient"
|
|
17
17
|
import type { Connection } from "effect/unstable/sql/SqlConnection"
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
AuthenticationError,
|
|
20
|
+
AuthorizationError,
|
|
21
|
+
ConnectionError,
|
|
22
|
+
SqlError,
|
|
23
|
+
SqlSyntaxError,
|
|
24
|
+
StatementTimeoutError,
|
|
25
|
+
UnknownError
|
|
26
|
+
} from "effect/unstable/sql/SqlError"
|
|
19
27
|
import * as Statement from "effect/unstable/sql/Statement"
|
|
20
28
|
import * as Crypto from "node:crypto"
|
|
21
29
|
import type { Readable } from "node:stream"
|
|
@@ -23,6 +31,48 @@ import type { Readable } from "node:stream"
|
|
|
23
31
|
const ATTR_DB_SYSTEM_NAME = "db.system.name"
|
|
24
32
|
const ATTR_DB_NAMESPACE = "db.namespace"
|
|
25
33
|
|
|
34
|
+
const clickhouseCodeFromCause = (cause: unknown): number | undefined => {
|
|
35
|
+
if (typeof cause !== "object" || cause === null || !("code" in cause)) {
|
|
36
|
+
return undefined
|
|
37
|
+
}
|
|
38
|
+
const code = cause.code
|
|
39
|
+
if (typeof code === "number") {
|
|
40
|
+
return code
|
|
41
|
+
}
|
|
42
|
+
if (typeof code === "string") {
|
|
43
|
+
const parsed = Number(code)
|
|
44
|
+
return Number.isNaN(parsed) ? undefined : parsed
|
|
45
|
+
}
|
|
46
|
+
return undefined
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const clickhouseSyntaxErrorCodes = new Set([36, 60, 62, 242])
|
|
50
|
+
|
|
51
|
+
const classifyError = (
|
|
52
|
+
cause: unknown,
|
|
53
|
+
message: string,
|
|
54
|
+
operation: string,
|
|
55
|
+
fallback: "connection" | "unknown" = "unknown"
|
|
56
|
+
) => {
|
|
57
|
+
const props = { cause, message, operation }
|
|
58
|
+
const code = clickhouseCodeFromCause(cause)
|
|
59
|
+
if (code !== undefined) {
|
|
60
|
+
if (code === 516) {
|
|
61
|
+
return new AuthenticationError(props)
|
|
62
|
+
}
|
|
63
|
+
if (code === 497) {
|
|
64
|
+
return new AuthorizationError(props)
|
|
65
|
+
}
|
|
66
|
+
if (clickhouseSyntaxErrorCodes.has(code)) {
|
|
67
|
+
return new SqlSyntaxError(props)
|
|
68
|
+
}
|
|
69
|
+
if (code === 159 || code === 469) {
|
|
70
|
+
return new StatementTimeoutError(props)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return fallback === "connection" ? new ConnectionError(props) : new UnknownError(props)
|
|
74
|
+
}
|
|
75
|
+
|
|
26
76
|
/**
|
|
27
77
|
* @category type ids
|
|
28
78
|
* @since 1.0.0
|
|
@@ -68,7 +118,7 @@ export interface ClickhouseClient extends Client.SqlClient {
|
|
|
68
118
|
* @category tags
|
|
69
119
|
* @since 1.0.0
|
|
70
120
|
*/
|
|
71
|
-
export const ClickhouseClient =
|
|
121
|
+
export const ClickhouseClient = Context.Service<ClickhouseClient>("@effect/sql-clickhouse/ClickhouseClient")
|
|
72
122
|
|
|
73
123
|
/**
|
|
74
124
|
* @category constructors
|
|
@@ -98,17 +148,21 @@ export const make = (
|
|
|
98
148
|
yield* Effect.acquireRelease(
|
|
99
149
|
Effect.tryPromise({
|
|
100
150
|
try: () => client.exec({ query: "SELECT 1" }),
|
|
101
|
-
catch: (cause) =>
|
|
151
|
+
catch: (cause) =>
|
|
152
|
+
new SqlError({ reason: classifyError(cause, "ClickhouseClient: Failed to connect", "connect", "connection") })
|
|
102
153
|
}),
|
|
103
154
|
() => Effect.promise(() => client.close())
|
|
104
155
|
).pipe(
|
|
105
156
|
Effect.timeoutOrElse({
|
|
106
157
|
duration: Duration.seconds(5),
|
|
107
|
-
|
|
158
|
+
orElse: () =>
|
|
108
159
|
Effect.fail(
|
|
109
160
|
new SqlError({
|
|
110
|
-
|
|
111
|
-
|
|
161
|
+
reason: new ConnectionError({
|
|
162
|
+
message: "ClickhouseClient: Connection timeout",
|
|
163
|
+
cause: new Error("connection timeout"),
|
|
164
|
+
operation: "connect"
|
|
165
|
+
})
|
|
112
166
|
})
|
|
113
167
|
)
|
|
114
168
|
})
|
|
@@ -140,7 +194,12 @@ export const make = (
|
|
|
140
194
|
clickhouse_settings: settings
|
|
141
195
|
}).then(
|
|
142
196
|
(result) => resume(Effect.succeed(result)),
|
|
143
|
-
(cause) =>
|
|
197
|
+
(cause) =>
|
|
198
|
+
resume(
|
|
199
|
+
Effect.fail(
|
|
200
|
+
new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
|
|
201
|
+
)
|
|
202
|
+
)
|
|
144
203
|
)
|
|
145
204
|
} else {
|
|
146
205
|
this.conn.query({
|
|
@@ -152,7 +211,12 @@ export const make = (
|
|
|
152
211
|
format
|
|
153
212
|
}).then(
|
|
154
213
|
(result) => resume(Effect.succeed(result)),
|
|
155
|
-
(cause) =>
|
|
214
|
+
(cause) =>
|
|
215
|
+
resume(
|
|
216
|
+
Effect.fail(
|
|
217
|
+
new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
|
|
218
|
+
)
|
|
219
|
+
)
|
|
156
220
|
)
|
|
157
221
|
}
|
|
158
222
|
return Effect.suspend(() => {
|
|
@@ -209,7 +273,7 @@ export const make = (
|
|
|
209
273
|
}
|
|
210
274
|
return NodeStream.fromReadable<ReadonlyArray<Clickhouse.Row<any, "JSONEachRow">>, SqlError>({
|
|
211
275
|
evaluate: () => result.stream() as any,
|
|
212
|
-
onError: (cause) => new SqlError({ cause,
|
|
276
|
+
onError: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute stream", "stream") })
|
|
213
277
|
})
|
|
214
278
|
}),
|
|
215
279
|
Stream.unwrap,
|
|
@@ -223,7 +287,7 @@ export const make = (
|
|
|
223
287
|
}
|
|
224
288
|
return Effect.tryPromise({
|
|
225
289
|
try: () => Promise.all(promises).then((rows) => transformRows ? transformRows(rows) : rows),
|
|
226
|
-
catch: (cause) => new SqlError({ cause,
|
|
290
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to parse row", "parseRow") })
|
|
227
291
|
})
|
|
228
292
|
}),
|
|
229
293
|
Stream.flattenIterable
|
|
@@ -272,7 +336,8 @@ export const make = (
|
|
|
272
336
|
clickhouse_settings: settings
|
|
273
337
|
}).then(
|
|
274
338
|
(result) => resume(Effect.succeed(result)),
|
|
275
|
-
(cause) =>
|
|
339
|
+
(cause) =>
|
|
340
|
+
resume(Effect.fail(new SqlError({ reason: classifyError(cause, "Failed to insert data", "insert") })))
|
|
276
341
|
)
|
|
277
342
|
return Effect.suspend(() => {
|
|
278
343
|
controller.abort()
|
|
@@ -280,15 +345,16 @@ export const make = (
|
|
|
280
345
|
})
|
|
281
346
|
})
|
|
282
347
|
},
|
|
283
|
-
withQueryId: dual(
|
|
284
|
-
|
|
348
|
+
withQueryId: dual(
|
|
349
|
+
2,
|
|
350
|
+
<A, E, R>(effect: Effect.Effect<A, E, R>, queryId: string) => Effect.provideService(effect, QueryId, queryId)
|
|
351
|
+
),
|
|
285
352
|
withClickhouseSettings: dual(
|
|
286
353
|
2,
|
|
287
354
|
<A, E, R>(
|
|
288
355
|
effect: Effect.Effect<A, E, R>,
|
|
289
356
|
settings: NonNullable<Clickhouse.BaseQueryParams["clickhouse_settings"]>
|
|
290
|
-
) =>
|
|
291
|
-
Effect.provideService(effect, ClickhouseSettings, settings)
|
|
357
|
+
) => Effect.provideService(effect, ClickhouseSettings, settings)
|
|
292
358
|
)
|
|
293
359
|
}
|
|
294
360
|
)
|
|
@@ -298,7 +364,7 @@ export const make = (
|
|
|
298
364
|
* @category References
|
|
299
365
|
* @since 1.0.0
|
|
300
366
|
*/
|
|
301
|
-
export const ClientMethod =
|
|
367
|
+
export const ClientMethod = Context.Reference<"query" | "command" | "insert">(
|
|
302
368
|
"@effect/sql-clickhouse/ClickhouseClient/ClientMethod",
|
|
303
369
|
{
|
|
304
370
|
defaultValue: () => "query"
|
|
@@ -309,7 +375,7 @@ export const ClientMethod = ServiceMap.Reference<"query" | "command" | "insert">
|
|
|
309
375
|
* @category References
|
|
310
376
|
* @since 1.0.0
|
|
311
377
|
*/
|
|
312
|
-
export const QueryId =
|
|
378
|
+
export const QueryId = Context.Reference<string | undefined>(
|
|
313
379
|
"@effect/sql-clickhouse/ClickhouseClient/QueryId",
|
|
314
380
|
{ defaultValue: () => undefined }
|
|
315
381
|
)
|
|
@@ -318,9 +384,9 @@ export const QueryId = ServiceMap.Reference<string | undefined>(
|
|
|
318
384
|
* @category References
|
|
319
385
|
* @since 1.0.0
|
|
320
386
|
*/
|
|
321
|
-
export const ClickhouseSettings:
|
|
387
|
+
export const ClickhouseSettings: Context.Reference<
|
|
322
388
|
NonNullable<Clickhouse.BaseQueryParams["clickhouse_settings"]>
|
|
323
|
-
> =
|
|
389
|
+
> = Context.Reference("@effect/sql-clickhouse/ClickhouseClient/ClickhouseSettings", {
|
|
324
390
|
defaultValue: () => ({})
|
|
325
391
|
})
|
|
326
392
|
|
|
@@ -333,12 +399,12 @@ export const layerConfig: (
|
|
|
333
399
|
) => Layer.Layer<ClickhouseClient | Client.SqlClient, Config.ConfigError | SqlError> = (
|
|
334
400
|
config: Config.Wrap<ClickhouseClientConfig>
|
|
335
401
|
): Layer.Layer<ClickhouseClient | Client.SqlClient, Config.ConfigError | SqlError> =>
|
|
336
|
-
Layer.
|
|
402
|
+
Layer.effectContext(
|
|
337
403
|
Config.unwrap(config).asEffect().pipe(
|
|
338
404
|
Effect.flatMap(make),
|
|
339
405
|
Effect.map((client) =>
|
|
340
|
-
|
|
341
|
-
|
|
406
|
+
Context.make(ClickhouseClient, client).pipe(
|
|
407
|
+
Context.add(Client.SqlClient, client)
|
|
342
408
|
)
|
|
343
409
|
)
|
|
344
410
|
)
|
|
@@ -351,10 +417,10 @@ export const layerConfig: (
|
|
|
351
417
|
export const layer = (
|
|
352
418
|
config: ClickhouseClientConfig
|
|
353
419
|
): Layer.Layer<ClickhouseClient | Client.SqlClient, Config.ConfigError | SqlError> =>
|
|
354
|
-
Layer.
|
|
420
|
+
Layer.effectContext(
|
|
355
421
|
Effect.map(make(config), (client) =>
|
|
356
|
-
|
|
357
|
-
|
|
422
|
+
Context.make(ClickhouseClient, client).pipe(
|
|
423
|
+
Context.add(Client.SqlClient, client)
|
|
358
424
|
))
|
|
359
425
|
).pipe(Layer.provide(Reactivity.layer))
|
|
360
426
|
|