@effect/sql-clickhouse 4.0.0-beta.8 → 4.0.0-beta.81

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.
@@ -1,30 +1,48 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * ClickHouse driver for Effect SQL, backed by `@clickhouse/client`.
3
+ *
4
+ * This module provides both the ClickHouse-specific {@link ClickhouseClient}
5
+ * service and the generic {@link Client.SqlClient} service. `make` creates a
6
+ * scoped client, checks the connection with `SELECT 1`, maps ClickHouse errors
7
+ * to `SqlError`, and aborts in-flight queries when interrupted. The
8
+ * ClickHouse-specific service adds typed parameters, command execution, insert
9
+ * queries, query id and settings helpers, a statement compiler, and direct or
10
+ * config-backed layers.
11
+ *
12
+ * @since 4.0.0
3
13
  */
4
14
  import * as Clickhouse from "@clickhouse/client";
5
15
  import * as Config from "effect/Config";
16
+ import * as Context from "effect/Context";
6
17
  import * as Effect from "effect/Effect";
7
18
  import * as Layer from "effect/Layer";
8
19
  import type * as Scope from "effect/Scope";
9
- import * as ServiceMap from "effect/ServiceMap";
10
20
  import * as Reactivity from "effect/unstable/reactivity/Reactivity";
11
21
  import * as Client from "effect/unstable/sql/SqlClient";
12
22
  import { SqlError } from "effect/unstable/sql/SqlError";
13
23
  import * as Statement from "effect/unstable/sql/Statement";
14
24
  import type { Readable } from "node:stream";
15
25
  /**
16
- * @category type ids
17
- * @since 1.0.0
26
+ * Unique runtime identifier used to tag `ClickhouseClient` values.
27
+ *
28
+ * @category type IDs
29
+ * @since 4.0.0
18
30
  */
19
31
  export declare const TypeId: TypeId;
20
32
  /**
21
- * @category type ids
22
- * @since 1.0.0
33
+ * Type-level literal for the `ClickhouseClient` runtime identifier.
34
+ *
35
+ * @category type IDs
36
+ * @since 4.0.0
23
37
  */
24
38
  export type TypeId = "~@effect/sql-clickhouse/ClickhouseClient";
25
39
  /**
40
+ * ClickHouse-specific `SqlClient` extension with access to its configuration,
41
+ * typed parameter fragments, command-mode execution, insert queries, and
42
+ * per-effect query ID and ClickHouse settings.
43
+ *
26
44
  * @category models
27
- * @since 1.0.0
45
+ * @since 4.0.0
28
46
  */
29
47
  export interface ClickhouseClient extends Client.SqlClient {
30
48
  readonly [TypeId]: TypeId;
@@ -46,13 +64,23 @@ export interface ClickhouseClient extends Client.SqlClient {
46
64
  };
47
65
  }
48
66
  /**
49
- * @category tags
50
- * @since 1.0.0
67
+ * Service tag for the active ClickHouse SQL client.
68
+ *
69
+ * **When to use**
70
+ *
71
+ * Use to access or provide a ClickHouse SQL client through the Effect context.
72
+ *
73
+ * @category services
74
+ * @since 4.0.0
51
75
  */
52
- export declare const ClickhouseClient: ServiceMap.Service<ClickhouseClient, ClickhouseClient>;
76
+ export declare const ClickhouseClient: Context.Service<ClickhouseClient, ClickhouseClient>;
53
77
  /**
78
+ * Configuration for creating a ClickHouse client, combining
79
+ * `@clickhouse/client` options with optional span attributes and query/result
80
+ * name transforms.
81
+ *
54
82
  * @category constructors
55
- * @since 1.0.0
83
+ * @since 4.0.0
56
84
  */
57
85
  export interface ClickhouseClientConfig extends Clickhouse.ClickHouseClientConfigOptions {
58
86
  readonly spanAttributes?: Record<string, unknown> | undefined;
@@ -60,48 +88,74 @@ export interface ClickhouseClientConfig extends Clickhouse.ClickHouseClientConfi
60
88
  readonly transformQueryNames?: ((str: string) => string) | undefined;
61
89
  }
62
90
  /**
91
+ * Creates a scoped `ClickhouseClient`, verifies connectivity with `SELECT 1`,
92
+ * closes the underlying client when the scope ends, maps ClickHouse failures
93
+ * to `SqlError`, and aborts plus kills in-flight queries when interrupted.
94
+ *
63
95
  * @category constructors
64
- * @since 1.0.0
96
+ * @since 4.0.0
65
97
  */
66
98
  export declare const make: (options: ClickhouseClientConfig) => Effect.Effect<ClickhouseClient, SqlError, Scope.Scope | Reactivity.Reactivity>;
67
99
  /**
68
- * @category References
69
- * @since 1.0.0
100
+ * Fiber reference read by the low-level ClickHouse connection to choose query
101
+ * or command execution for statements; defaults to `query`.
102
+ *
103
+ * @category references
104
+ * @since 4.0.0
70
105
  */
71
- export declare const ClientMethod: ServiceMap.Reference<"query" | "command" | "insert">;
106
+ export declare const ClientMethod: Context.Reference<"query" | "command" | "insert">;
72
107
  /**
73
- * @category References
74
- * @since 1.0.0
108
+ * Fiber reference for the ClickHouse `query_id` applied to queries and
109
+ * inserts; a random UUID is generated when no query ID is set.
110
+ *
111
+ * @category references
112
+ * @since 4.0.0
75
113
  */
76
- export declare const QueryId: ServiceMap.Reference<string | undefined>;
114
+ export declare const QueryId: Context.Reference<string | undefined>;
77
115
  /**
78
- * @category References
79
- * @since 1.0.0
116
+ * Fiber reference containing ClickHouse settings to attach to queries,
117
+ * commands, and inserts.
118
+ *
119
+ * @category references
120
+ * @since 4.0.0
80
121
  */
81
- export declare const ClickhouseSettings: ServiceMap.Reference<NonNullable<Clickhouse.BaseQueryParams["clickhouse_settings"]>>;
122
+ export declare const ClickhouseSettings: Context.Reference<NonNullable<Clickhouse.BaseQueryParams["clickhouse_settings"]>>;
82
123
  /**
124
+ * Provides both `ClickhouseClient` and generic `SqlClient` services from a
125
+ * `Config`-backed ClickHouse client configuration.
126
+ *
83
127
  * @category layers
84
- * @since 1.0.0
128
+ * @since 4.0.0
85
129
  */
86
130
  export declare const layerConfig: (config: Config.Wrap<ClickhouseClientConfig>) => Layer.Layer<ClickhouseClient | Client.SqlClient, Config.ConfigError | SqlError>;
87
131
  /**
132
+ * Provides both `ClickhouseClient` and generic `SqlClient` services from a
133
+ * ClickHouse client configuration.
134
+ *
88
135
  * @category layers
89
- * @since 1.0.0
136
+ * @since 4.0.0
90
137
  */
91
138
  export declare const layer: (config: ClickhouseClientConfig) => Layer.Layer<ClickhouseClient | Client.SqlClient, Config.ConfigError | SqlError>;
92
139
  /**
140
+ * Creates the SQL statement compiler for ClickHouse, emitting typed
141
+ * `{pN: Type}` placeholders and escaping identifiers with an optional query
142
+ * name transform.
143
+ *
93
144
  * @category compiler
94
- * @since 1.0.0
145
+ * @since 4.0.0
95
146
  */
96
147
  export declare const makeCompiler: (transform?: (_: string) => string) => Statement.Compiler;
97
148
  /**
149
+ * Custom SQL fragment type used for ClickHouse typed parameters created by
150
+ * `ClickhouseClient.param`.
151
+ *
98
152
  * @category custom types
99
- * @since 1.0.0
153
+ * @since 4.0.0
100
154
  */
101
155
  export type ClickhouseCustom = ClickhouseParam;
102
156
  /**
103
157
  * @category custom types
104
- * @since 1.0.0
158
+ * @since 4.0.0
105
159
  */
106
160
  interface ClickhouseParam extends Statement.Custom<"ClickhouseParam", string, unknown> {
107
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ClickhouseClient.d.ts","sourceRoot":"","sources":["../src/ClickhouseClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ClickhouseClient.d.ts","sourceRoot":"","sources":["../src/ClickhouseClient.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,96 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * ClickHouse driver for Effect SQL, backed by `@clickhouse/client`.
3
+ *
4
+ * This module provides both the ClickHouse-specific {@link ClickhouseClient}
5
+ * service and the generic {@link Client.SqlClient} service. `make` creates a
6
+ * scoped client, checks the connection with `SELECT 1`, maps ClickHouse errors
7
+ * to `SqlError`, and aborts in-flight queries when interrupted. The
8
+ * ClickHouse-specific service adds typed parameters, command execution, insert
9
+ * queries, query id and settings helpers, a statement compiler, and direct or
10
+ * config-backed layers.
11
+ *
12
+ * @since 4.0.0
3
13
  */
4
14
  import * as Clickhouse from "@clickhouse/client";
5
15
  import * as NodeStream from "@effect/platform-node/NodeStream";
6
16
  import * as Config from "effect/Config";
17
+ import * as Context from "effect/Context";
7
18
  import * as Duration from "effect/Duration";
8
19
  import * as Effect from "effect/Effect";
9
20
  import * as Fiber from "effect/Fiber";
10
21
  import { dual } from "effect/Function";
11
22
  import * as Layer from "effect/Layer";
12
- import * as ServiceMap from "effect/ServiceMap";
13
23
  import * as Stream from "effect/Stream";
14
24
  import * as Reactivity from "effect/unstable/reactivity/Reactivity";
15
25
  import * as Client from "effect/unstable/sql/SqlClient";
16
- import { SqlError } from "effect/unstable/sql/SqlError";
26
+ import { AuthenticationError, AuthorizationError, ConnectionError, SqlError, SqlSyntaxError, StatementTimeoutError, UnknownError } from "effect/unstable/sql/SqlError";
17
27
  import * as Statement from "effect/unstable/sql/Statement";
18
28
  import * as Crypto from "node:crypto";
19
29
  const ATTR_DB_SYSTEM_NAME = "db.system.name";
20
30
  const ATTR_DB_NAMESPACE = "db.namespace";
31
+ const clickhouseCodeFromCause = cause => {
32
+ if (typeof cause !== "object" || cause === null || !("code" in cause)) {
33
+ return undefined;
34
+ }
35
+ const code = cause.code;
36
+ if (typeof code === "number") {
37
+ return code;
38
+ }
39
+ if (typeof code === "string") {
40
+ const parsed = Number(code);
41
+ return Number.isNaN(parsed) ? undefined : parsed;
42
+ }
43
+ return undefined;
44
+ };
45
+ const clickhouseSyntaxErrorCodes = /*#__PURE__*/new Set([36, 60, 62, 242]);
46
+ const classifyError = (cause, message, operation, fallback = "unknown") => {
47
+ const props = {
48
+ cause,
49
+ message,
50
+ operation
51
+ };
52
+ const code = clickhouseCodeFromCause(cause);
53
+ if (code !== undefined) {
54
+ if (code === 516) {
55
+ return new AuthenticationError(props);
56
+ }
57
+ if (code === 497) {
58
+ return new AuthorizationError(props);
59
+ }
60
+ if (clickhouseSyntaxErrorCodes.has(code)) {
61
+ return new SqlSyntaxError(props);
62
+ }
63
+ if (code === 159 || code === 469) {
64
+ return new StatementTimeoutError(props);
65
+ }
66
+ }
67
+ return fallback === "connection" ? new ConnectionError(props) : new UnknownError(props);
68
+ };
21
69
  /**
22
- * @category type ids
23
- * @since 1.0.0
70
+ * Unique runtime identifier used to tag `ClickhouseClient` values.
71
+ *
72
+ * @category type IDs
73
+ * @since 4.0.0
24
74
  */
25
75
  export const TypeId = "~@effect/sql-clickhouse/ClickhouseClient";
26
76
  /**
27
- * @category tags
28
- * @since 1.0.0
77
+ * Service tag for the active ClickHouse SQL client.
78
+ *
79
+ * **When to use**
80
+ *
81
+ * Use to access or provide a ClickHouse SQL client through the Effect context.
82
+ *
83
+ * @category services
84
+ * @since 4.0.0
29
85
  */
30
- export const ClickhouseClient = /*#__PURE__*/ServiceMap.Service("@effect/sql-clickhouse/ClickhouseClient");
86
+ export const ClickhouseClient = /*#__PURE__*/Context.Service("@effect/sql-clickhouse/ClickhouseClient");
31
87
  /**
88
+ * Creates a scoped `ClickhouseClient`, verifies connectivity with `SELECT 1`,
89
+ * closes the underlying client when the scope ends, maps ClickHouse failures
90
+ * to `SqlError`, and aborts plus kills in-flight queries when interrupted.
91
+ *
32
92
  * @category constructors
33
- * @since 1.0.0
93
+ * @since 4.0.0
34
94
  */
35
95
  export const make = options => Effect.gen(function* () {
36
96
  const compiler = makeCompiler(options.transformQueryNames);
@@ -41,14 +101,16 @@ export const make = options => Effect.gen(function* () {
41
101
  query: "SELECT 1"
42
102
  }),
43
103
  catch: cause => new SqlError({
44
- cause,
45
- message: "ClickhouseClient: Failed to connect"
104
+ reason: classifyError(cause, "ClickhouseClient: Failed to connect", "connect", "connection")
46
105
  })
47
106
  }), () => Effect.promise(() => client.close())).pipe(Effect.timeoutOrElse({
48
107
  duration: Duration.seconds(5),
49
- onTimeout: () => Effect.fail(new SqlError({
50
- message: "ClickhouseClient: Connection timeout",
51
- cause: new Error("connection timeout")
108
+ orElse: () => Effect.fail(new SqlError({
109
+ reason: new ConnectionError({
110
+ message: "ClickhouseClient: Connection timeout",
111
+ cause: new Error("connection timeout"),
112
+ operation: "connect"
113
+ })
52
114
  }))
53
115
  }));
54
116
  class ConnectionImpl {
@@ -75,8 +137,7 @@ export const make = options => Effect.gen(function* () {
75
137
  query_id: queryId,
76
138
  clickhouse_settings: settings
77
139
  }).then(result => resume(Effect.succeed(result)), cause => resume(Effect.fail(new SqlError({
78
- cause,
79
- message: "Failed to execute statement"
140
+ reason: classifyError(cause, "Failed to execute statement", "execute")
80
141
  }))));
81
142
  } else {
82
143
  this.conn.query({
@@ -87,8 +148,7 @@ export const make = options => Effect.gen(function* () {
87
148
  clickhouse_settings: settings,
88
149
  format
89
150
  }).then(result => resume(Effect.succeed(result)), cause => resume(Effect.fail(new SqlError({
90
- cause,
91
- message: "Failed to execute statement"
151
+ reason: classifyError(cause, "Failed to execute statement", "execute")
92
152
  }))));
93
153
  }
94
154
  return Effect.suspend(() => {
@@ -128,8 +188,7 @@ export const make = options => Effect.gen(function* () {
128
188
  return NodeStream.fromReadable({
129
189
  evaluate: () => result.stream(),
130
190
  onError: cause => new SqlError({
131
- cause,
132
- message: "Failed to execute stream"
191
+ reason: classifyError(cause, "Failed to execute stream", "stream")
133
192
  })
134
193
  });
135
194
  }), Stream.unwrap, Stream.chunks, Stream.mapEffect(chunk => {
@@ -142,8 +201,7 @@ export const make = options => Effect.gen(function* () {
142
201
  return Effect.tryPromise({
143
202
  try: () => Promise.all(promises).then(rows => transformRows ? transformRows(rows) : rows),
144
203
  catch: cause => new SqlError({
145
- cause,
146
- message: "Failed to parse row"
204
+ reason: classifyError(cause, "Failed to parse row", "parseRow")
147
205
  })
148
206
  });
149
207
  }), Stream.flattenIterable);
@@ -178,8 +236,7 @@ export const make = options => Effect.gen(function* () {
178
236
  query_id: queryId,
179
237
  clickhouse_settings: settings
180
238
  }).then(result => resume(Effect.succeed(result)), cause => resume(Effect.fail(new SqlError({
181
- cause,
182
- message: "Failed to insert data"
239
+ reason: classifyError(cause, "Failed to insert data", "insert")
183
240
  }))));
184
241
  return Effect.suspend(() => {
185
242
  controller.abort();
@@ -194,36 +251,51 @@ export const make = options => Effect.gen(function* () {
194
251
  });
195
252
  });
196
253
  /**
197
- * @category References
198
- * @since 1.0.0
254
+ * Fiber reference read by the low-level ClickHouse connection to choose query
255
+ * or command execution for statements; defaults to `query`.
256
+ *
257
+ * @category references
258
+ * @since 4.0.0
199
259
  */
200
- export const ClientMethod = /*#__PURE__*/ServiceMap.Reference("@effect/sql-clickhouse/ClickhouseClient/ClientMethod", {
260
+ export const ClientMethod = /*#__PURE__*/Context.Reference("@effect/sql-clickhouse/ClickhouseClient/ClientMethod", {
201
261
  defaultValue: () => "query"
202
262
  });
203
263
  /**
204
- * @category References
205
- * @since 1.0.0
264
+ * Fiber reference for the ClickHouse `query_id` applied to queries and
265
+ * inserts; a random UUID is generated when no query ID is set.
266
+ *
267
+ * @category references
268
+ * @since 4.0.0
206
269
  */
207
- export const QueryId = /*#__PURE__*/ServiceMap.Reference("@effect/sql-clickhouse/ClickhouseClient/QueryId", {
270
+ export const QueryId = /*#__PURE__*/Context.Reference("@effect/sql-clickhouse/ClickhouseClient/QueryId", {
208
271
  defaultValue: () => undefined
209
272
  });
210
273
  /**
211
- * @category References
212
- * @since 1.0.0
274
+ * Fiber reference containing ClickHouse settings to attach to queries,
275
+ * commands, and inserts.
276
+ *
277
+ * @category references
278
+ * @since 4.0.0
213
279
  */
214
- export const ClickhouseSettings = /*#__PURE__*/ServiceMap.Reference("@effect/sql-clickhouse/ClickhouseClient/ClickhouseSettings", {
280
+ export const ClickhouseSettings = /*#__PURE__*/Context.Reference("@effect/sql-clickhouse/ClickhouseClient/ClickhouseSettings", {
215
281
  defaultValue: () => ({})
216
282
  });
217
283
  /**
284
+ * Provides both `ClickhouseClient` and generic `SqlClient` services from a
285
+ * `Config`-backed ClickHouse client configuration.
286
+ *
218
287
  * @category layers
219
- * @since 1.0.0
288
+ * @since 4.0.0
220
289
  */
221
- export const layerConfig = config => Layer.effectServices(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => ServiceMap.make(ClickhouseClient, client).pipe(ServiceMap.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
290
+ export const layerConfig = config => Layer.effectContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(ClickhouseClient, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
222
291
  /**
292
+ * Provides both `ClickhouseClient` and generic `SqlClient` services from a
293
+ * ClickHouse client configuration.
294
+ *
223
295
  * @category layers
224
- * @since 1.0.0
296
+ * @since 4.0.0
225
297
  */
226
- export const layer = config => Layer.effectServices(Effect.map(make(config), client => ServiceMap.make(ClickhouseClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
298
+ 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
299
  const typeFromUnknown = value => {
228
300
  if (Statement.isFragment(value)) {
229
301
  return typeFromUnknown(value.segments[0]);
@@ -249,8 +321,12 @@ const typeFromUnknown = value => {
249
321
  }
250
322
  };
251
323
  /**
324
+ * Creates the SQL statement compiler for ClickHouse, emitting typed
325
+ * `{pN: Type}` placeholders and escaping identifiers with an optional query
326
+ * name transform.
327
+ *
252
328
  * @category compiler
253
- * @since 1.0.0
329
+ * @since 4.0.0
254
330
  */
255
331
  export const makeCompiler = transform => Statement.makeCompiler({
256
332
  dialect: "sqlite",
@@ -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":"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","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","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":[]}
@@ -1,5 +1,13 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * ClickHouse adapter for the shared Effect SQL migration runner.
3
+ *
4
+ * This module re-exports the common `Migrator` loaders and error types, then
5
+ * provides `run` and `layer` helpers that apply ordered migrations through the
6
+ * current ClickHouse `SqlClient`. `run` returns the applied migration IDs and
7
+ * names, while `layer` runs the migrations during layer construction and
8
+ * provides no services.
9
+ *
10
+ * @since 4.0.0
3
11
  */
4
12
  import type * as Effect from "effect/Effect";
5
13
  import * as Layer from "effect/Layer";
@@ -7,17 +15,23 @@ import * as Migrator from "effect/unstable/sql/Migrator";
7
15
  import type * as Client from "effect/unstable/sql/SqlClient";
8
16
  import type { SqlError } from "effect/unstable/sql/SqlError";
9
17
  /**
10
- * @since 1.0.0
18
+ * @since 4.0.0
11
19
  */
12
20
  export * from "effect/unstable/sql/Migrator";
13
21
  /**
14
- * @category constructor
15
- * @since 1.0.0
22
+ * Runs SQL migrations for ClickHouse using the supplied migrator options and
23
+ * returns the applied migration IDs and names.
24
+ *
25
+ * @category constructors
26
+ * @since 4.0.0
16
27
  */
17
28
  export declare const run: <R2 = never>({ loader, schemaDirectory, table }: Migrator.MigratorOptions<R2>) => Effect.Effect<ReadonlyArray<readonly [id: number, name: string]>, Migrator.MigrationError | SqlError, Client.SqlClient | R2>;
18
29
  /**
30
+ * Creates a layer that runs the configured ClickHouse migrations during layer
31
+ * construction and provides no services.
32
+ *
19
33
  * @category layers
20
- * @since 1.0.0
34
+ * @since 4.0.0
21
35
  */
22
36
  export declare const layer: <R>(options: Migrator.MigratorOptions<R>) => Layer.Layer<never, Migrator.MigrationError | SqlError, Client.SqlClient | R>;
23
37
  //# sourceMappingURL=ClickhouseMigrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClickhouseMigrator.d.ts","sourceRoot":"","sources":["../src/ClickhouseMigrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAA;AACxD,OAAO,KAAK,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D;;GAEG;AACH,cAAc,8BAA8B,CAAA;AAE5C;;;GAGG;AACH,eAAO,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAC3B,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAC7D,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,MAAM,CAAC,SAAS,GAAG,EAAE,CACF,CAAA;AAErB;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,SAAS,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KACnC,KAAK,CAAC,KAAK,CACZ,KAAK,EACL,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,MAAM,CAAC,SAAS,GAAG,CAAC,CACgB,CAAA"}
1
+ {"version":3,"file":"ClickhouseMigrator.d.ts","sourceRoot":"","sources":["../src/ClickhouseMigrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAA;AACxD,OAAO,KAAK,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D;;GAEG;AACH,cAAc,8BAA8B,CAAA;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,EAC3B,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAC7D,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,MAAM,CAAC,SAAS,GAAG,EAAE,CACF,CAAA;AAErB;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,SAAS,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KACnC,KAAK,CAAC,KAAK,CACZ,KAAK,EACL,QAAQ,CAAC,cAAc,GAAG,QAAQ,EAClC,MAAM,CAAC,SAAS,GAAG,CAAC,CACgB,CAAA"}
@@ -1,17 +1,23 @@
1
1
  import * as Layer from "effect/Layer";
2
2
  import * as Migrator from "effect/unstable/sql/Migrator";
3
3
  /**
4
- * @since 1.0.0
4
+ * @since 4.0.0
5
5
  */
6
6
  export * from "effect/unstable/sql/Migrator";
7
7
  /**
8
- * @category constructor
9
- * @since 1.0.0
8
+ * Runs SQL migrations for ClickHouse using the supplied migrator options and
9
+ * returns the applied migration IDs and names.
10
+ *
11
+ * @category constructors
12
+ * @since 4.0.0
10
13
  */
11
14
  export const run = /*#__PURE__*/Migrator.make({});
12
15
  /**
16
+ * Creates a layer that runs the configured ClickHouse migrations during layer
17
+ * construction and provides no services.
18
+ *
13
19
  * @category layers
14
- * @since 1.0.0
20
+ * @since 4.0.0
15
21
  */
16
22
  export const layer = options => Layer.effectDiscard(run(options));
17
23
  //# sourceMappingURL=ClickhouseMigrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClickhouseMigrator.js","names":["Layer","Migrator","run","make","layer","options","effectDiscard"],"sources":["../src/ClickhouseMigrator.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,8BAA8B;AAIxD;;;AAGA,cAAc,8BAA8B;AAE5C;;;;AAIA,OAAO,MAAMC,GAAG,gBAMZD,QAAQ,CAACE,IAAI,CAAC,EAAE,CAAC;AAErB;;;;AAIA,OAAO,MAAMC,KAAK,GAChBC,OAAoC,IAKjCL,KAAK,CAACM,aAAa,CAACJ,GAAG,CAACG,OAAO,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"ClickhouseMigrator.js","names":["Layer","Migrator","run","make","layer","options","effectDiscard"],"sources":["../src/ClickhouseMigrator.ts"],"sourcesContent":[null],"mappings":"AAYA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,8BAA8B;AAIxD;;;AAGA,cAAc,8BAA8B;AAE5C;;;;;;;AAOA,OAAO,MAAMC,GAAG,gBAMZD,QAAQ,CAACE,IAAI,CAAC,EAAE,CAAC;AAErB;;;;;;;AAOA,OAAO,MAAMC,KAAK,GAChBC,OAAoC,IAKjCL,KAAK,CAACM,aAAa,CAACJ,GAAG,CAACG,OAAO,CAAC,CAAC","ignoreList":[]}
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * @since 4.0.0
3
3
  */
4
4
  /**
5
- * @since 1.0.0
5
+ * @since 4.0.0
6
6
  */
7
7
  export * as ClickhouseClient from "./ClickhouseClient.ts";
8
8
  /**
9
- * @since 1.0.0
9
+ * @since 4.0.0
10
10
  */
11
11
  export * as ClickhouseMigrator from "./ClickhouseMigrator.ts";
12
12
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * @since 4.0.0
3
3
  */
4
4
  // @barrel: Auto-generated exports. Do not edit manually.
5
5
  /**
6
- * @since 1.0.0
6
+ * @since 4.0.0
7
7
  */
8
8
  export * as ClickhouseClient from "./ClickhouseClient.js";
9
9
  /**
10
- * @since 1.0.0
10
+ * @since 4.0.0
11
11
  */
12
12
  export * as ClickhouseMigrator from "./ClickhouseMigrator.js";
13
13
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/sql-clickhouse",
3
- "version": "4.0.0-beta.8",
3
+ "version": "4.0.0-beta.81",
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.8",
47
- "effect": "^4.0.0-beta.8"
46
+ "@effect/platform-node": "^4.0.0-beta.81",
47
+ "effect": "^4.0.0-beta.81"
48
48
  },
49
49
  "peerDependencies": {
50
- "@effect/platform-node": "^4.0.0-beta.8",
51
- "effect": "^4.0.0-beta.8"
50
+ "@effect/platform-node": "^4.0.0-beta.81",
51
+ "effect": "^4.0.0-beta.81"
52
52
  },
53
53
  "dependencies": {
54
- "@clickhouse/client": "^1.16.0"
54
+ "@clickhouse/client": "^1.18.4"
55
55
  },
56
56
  "scripts": {
57
57
  "codegen": "effect-utils codegen",
@@ -1,21 +1,39 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * ClickHouse driver for Effect SQL, backed by `@clickhouse/client`.
3
+ *
4
+ * This module provides both the ClickHouse-specific {@link ClickhouseClient}
5
+ * service and the generic {@link Client.SqlClient} service. `make` creates a
6
+ * scoped client, checks the connection with `SELECT 1`, maps ClickHouse errors
7
+ * to `SqlError`, and aborts in-flight queries when interrupted. The
8
+ * ClickHouse-specific service adds typed parameters, command execution, insert
9
+ * queries, query id and settings helpers, a statement compiler, and direct or
10
+ * config-backed layers.
11
+ *
12
+ * @since 4.0.0
3
13
  */
4
14
  import * as Clickhouse from "@clickhouse/client"
5
15
  import * as NodeStream from "@effect/platform-node/NodeStream"
6
16
  import * as Config from "effect/Config"
17
+ import * as Context from "effect/Context"
7
18
  import * as Duration from "effect/Duration"
8
19
  import * as Effect from "effect/Effect"
9
20
  import * as Fiber from "effect/Fiber"
10
21
  import { dual } from "effect/Function"
11
22
  import * as Layer from "effect/Layer"
12
23
  import type * as Scope from "effect/Scope"
13
- import * as ServiceMap from "effect/ServiceMap"
14
24
  import * as Stream from "effect/Stream"
15
25
  import * as Reactivity from "effect/unstable/reactivity/Reactivity"
16
26
  import * as Client from "effect/unstable/sql/SqlClient"
17
27
  import type { Connection } from "effect/unstable/sql/SqlConnection"
18
- import { SqlError } from "effect/unstable/sql/SqlError"
28
+ import {
29
+ AuthenticationError,
30
+ AuthorizationError,
31
+ ConnectionError,
32
+ SqlError,
33
+ SqlSyntaxError,
34
+ StatementTimeoutError,
35
+ UnknownError
36
+ } from "effect/unstable/sql/SqlError"
19
37
  import * as Statement from "effect/unstable/sql/Statement"
20
38
  import * as Crypto from "node:crypto"
21
39
  import type { Readable } from "node:stream"
@@ -23,21 +41,71 @@ import type { Readable } from "node:stream"
23
41
  const ATTR_DB_SYSTEM_NAME = "db.system.name"
24
42
  const ATTR_DB_NAMESPACE = "db.namespace"
25
43
 
44
+ const clickhouseCodeFromCause = (cause: unknown): number | undefined => {
45
+ if (typeof cause !== "object" || cause === null || !("code" in cause)) {
46
+ return undefined
47
+ }
48
+ const code = cause.code
49
+ if (typeof code === "number") {
50
+ return code
51
+ }
52
+ if (typeof code === "string") {
53
+ const parsed = Number(code)
54
+ return Number.isNaN(parsed) ? undefined : parsed
55
+ }
56
+ return undefined
57
+ }
58
+
59
+ const clickhouseSyntaxErrorCodes = new Set([36, 60, 62, 242])
60
+
61
+ const classifyError = (
62
+ cause: unknown,
63
+ message: string,
64
+ operation: string,
65
+ fallback: "connection" | "unknown" = "unknown"
66
+ ) => {
67
+ const props = { cause, message, operation }
68
+ const code = clickhouseCodeFromCause(cause)
69
+ if (code !== undefined) {
70
+ if (code === 516) {
71
+ return new AuthenticationError(props)
72
+ }
73
+ if (code === 497) {
74
+ return new AuthorizationError(props)
75
+ }
76
+ if (clickhouseSyntaxErrorCodes.has(code)) {
77
+ return new SqlSyntaxError(props)
78
+ }
79
+ if (code === 159 || code === 469) {
80
+ return new StatementTimeoutError(props)
81
+ }
82
+ }
83
+ return fallback === "connection" ? new ConnectionError(props) : new UnknownError(props)
84
+ }
85
+
26
86
  /**
27
- * @category type ids
28
- * @since 1.0.0
87
+ * Unique runtime identifier used to tag `ClickhouseClient` values.
88
+ *
89
+ * @category type IDs
90
+ * @since 4.0.0
29
91
  */
30
92
  export const TypeId: TypeId = "~@effect/sql-clickhouse/ClickhouseClient"
31
93
 
32
94
  /**
33
- * @category type ids
34
- * @since 1.0.0
95
+ * Type-level literal for the `ClickhouseClient` runtime identifier.
96
+ *
97
+ * @category type IDs
98
+ * @since 4.0.0
35
99
  */
36
100
  export type TypeId = "~@effect/sql-clickhouse/ClickhouseClient"
37
101
 
38
102
  /**
103
+ * ClickHouse-specific `SqlClient` extension with access to its configuration,
104
+ * typed parameter fragments, command-mode execution, insert queries, and
105
+ * per-effect query ID and ClickHouse settings.
106
+ *
39
107
  * @category models
40
- * @since 1.0.0
108
+ * @since 4.0.0
41
109
  */
42
110
  export interface ClickhouseClient extends Client.SqlClient {
43
111
  readonly [TypeId]: TypeId
@@ -65,14 +133,24 @@ export interface ClickhouseClient extends Client.SqlClient {
65
133
  }
66
134
 
67
135
  /**
68
- * @category tags
69
- * @since 1.0.0
136
+ * Service tag for the active ClickHouse SQL client.
137
+ *
138
+ * **When to use**
139
+ *
140
+ * Use to access or provide a ClickHouse SQL client through the Effect context.
141
+ *
142
+ * @category services
143
+ * @since 4.0.0
70
144
  */
71
- export const ClickhouseClient = ServiceMap.Service<ClickhouseClient>("@effect/sql-clickhouse/ClickhouseClient")
145
+ export const ClickhouseClient = Context.Service<ClickhouseClient>("@effect/sql-clickhouse/ClickhouseClient")
72
146
 
73
147
  /**
148
+ * Configuration for creating a ClickHouse client, combining
149
+ * `@clickhouse/client` options with optional span attributes and query/result
150
+ * name transforms.
151
+ *
74
152
  * @category constructors
75
- * @since 1.0.0
153
+ * @since 4.0.0
76
154
  */
77
155
  export interface ClickhouseClientConfig extends Clickhouse.ClickHouseClientConfigOptions {
78
156
  readonly spanAttributes?: Record<string, unknown> | undefined
@@ -81,8 +159,12 @@ export interface ClickhouseClientConfig extends Clickhouse.ClickHouseClientConfi
81
159
  }
82
160
 
83
161
  /**
162
+ * Creates a scoped `ClickhouseClient`, verifies connectivity with `SELECT 1`,
163
+ * closes the underlying client when the scope ends, maps ClickHouse failures
164
+ * to `SqlError`, and aborts plus kills in-flight queries when interrupted.
165
+ *
84
166
  * @category constructors
85
- * @since 1.0.0
167
+ * @since 4.0.0
86
168
  */
87
169
  export const make = (
88
170
  options: ClickhouseClientConfig
@@ -98,17 +180,21 @@ export const make = (
98
180
  yield* Effect.acquireRelease(
99
181
  Effect.tryPromise({
100
182
  try: () => client.exec({ query: "SELECT 1" }),
101
- catch: (cause) => new SqlError({ cause, message: "ClickhouseClient: Failed to connect" })
183
+ catch: (cause) =>
184
+ new SqlError({ reason: classifyError(cause, "ClickhouseClient: Failed to connect", "connect", "connection") })
102
185
  }),
103
186
  () => Effect.promise(() => client.close())
104
187
  ).pipe(
105
188
  Effect.timeoutOrElse({
106
189
  duration: Duration.seconds(5),
107
- onTimeout: () =>
190
+ orElse: () =>
108
191
  Effect.fail(
109
192
  new SqlError({
110
- message: "ClickhouseClient: Connection timeout",
111
- cause: new Error("connection timeout")
193
+ reason: new ConnectionError({
194
+ message: "ClickhouseClient: Connection timeout",
195
+ cause: new Error("connection timeout"),
196
+ operation: "connect"
197
+ })
112
198
  })
113
199
  )
114
200
  })
@@ -140,7 +226,12 @@ export const make = (
140
226
  clickhouse_settings: settings
141
227
  }).then(
142
228
  (result) => resume(Effect.succeed(result)),
143
- (cause) => resume(Effect.fail(new SqlError({ cause, message: "Failed to execute statement" })))
229
+ (cause) =>
230
+ resume(
231
+ Effect.fail(
232
+ new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
233
+ )
234
+ )
144
235
  )
145
236
  } else {
146
237
  this.conn.query({
@@ -152,7 +243,12 @@ export const make = (
152
243
  format
153
244
  }).then(
154
245
  (result) => resume(Effect.succeed(result)),
155
- (cause) => resume(Effect.fail(new SqlError({ cause, message: "Failed to execute statement" })))
246
+ (cause) =>
247
+ resume(
248
+ Effect.fail(
249
+ new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
250
+ )
251
+ )
156
252
  )
157
253
  }
158
254
  return Effect.suspend(() => {
@@ -209,7 +305,7 @@ export const make = (
209
305
  }
210
306
  return NodeStream.fromReadable<ReadonlyArray<Clickhouse.Row<any, "JSONEachRow">>, SqlError>({
211
307
  evaluate: () => result.stream() as any,
212
- onError: (cause) => new SqlError({ cause, message: "Failed to execute stream" })
308
+ onError: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute stream", "stream") })
213
309
  })
214
310
  }),
215
311
  Stream.unwrap,
@@ -223,7 +319,7 @@ export const make = (
223
319
  }
224
320
  return Effect.tryPromise({
225
321
  try: () => Promise.all(promises).then((rows) => transformRows ? transformRows(rows) : rows),
226
- catch: (cause) => new SqlError({ cause, message: "Failed to parse row" })
322
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to parse row", "parseRow") })
227
323
  })
228
324
  }),
229
325
  Stream.flattenIterable
@@ -272,7 +368,8 @@ export const make = (
272
368
  clickhouse_settings: settings
273
369
  }).then(
274
370
  (result) => resume(Effect.succeed(result)),
275
- (cause) => resume(Effect.fail(new SqlError({ cause, message: "Failed to insert data" })))
371
+ (cause) =>
372
+ resume(Effect.fail(new SqlError({ reason: classifyError(cause, "Failed to insert data", "insert") })))
276
373
  )
277
374
  return Effect.suspend(() => {
278
375
  controller.abort()
@@ -280,25 +377,29 @@ export const make = (
280
377
  })
281
378
  })
282
379
  },
283
- withQueryId: dual(2, <A, E, R>(effect: Effect.Effect<A, E, R>, queryId: string) =>
284
- Effect.provideService(effect, QueryId, queryId)),
380
+ withQueryId: dual(
381
+ 2,
382
+ <A, E, R>(effect: Effect.Effect<A, E, R>, queryId: string) => Effect.provideService(effect, QueryId, queryId)
383
+ ),
285
384
  withClickhouseSettings: dual(
286
385
  2,
287
386
  <A, E, R>(
288
387
  effect: Effect.Effect<A, E, R>,
289
388
  settings: NonNullable<Clickhouse.BaseQueryParams["clickhouse_settings"]>
290
- ) =>
291
- Effect.provideService(effect, ClickhouseSettings, settings)
389
+ ) => Effect.provideService(effect, ClickhouseSettings, settings)
292
390
  )
293
391
  }
294
392
  )
295
393
  })
296
394
 
297
395
  /**
298
- * @category References
299
- * @since 1.0.0
396
+ * Fiber reference read by the low-level ClickHouse connection to choose query
397
+ * or command execution for statements; defaults to `query`.
398
+ *
399
+ * @category references
400
+ * @since 4.0.0
300
401
  */
301
- export const ClientMethod = ServiceMap.Reference<"query" | "command" | "insert">(
402
+ export const ClientMethod = Context.Reference<"query" | "command" | "insert">(
302
403
  "@effect/sql-clickhouse/ClickhouseClient/ClientMethod",
303
404
  {
304
405
  defaultValue: () => "query"
@@ -306,55 +407,67 @@ export const ClientMethod = ServiceMap.Reference<"query" | "command" | "insert">
306
407
  )
307
408
 
308
409
  /**
309
- * @category References
310
- * @since 1.0.0
410
+ * Fiber reference for the ClickHouse `query_id` applied to queries and
411
+ * inserts; a random UUID is generated when no query ID is set.
412
+ *
413
+ * @category references
414
+ * @since 4.0.0
311
415
  */
312
- export const QueryId = ServiceMap.Reference<string | undefined>(
416
+ export const QueryId = Context.Reference<string | undefined>(
313
417
  "@effect/sql-clickhouse/ClickhouseClient/QueryId",
314
418
  { defaultValue: () => undefined }
315
419
  )
316
420
 
317
421
  /**
318
- * @category References
319
- * @since 1.0.0
422
+ * Fiber reference containing ClickHouse settings to attach to queries,
423
+ * commands, and inserts.
424
+ *
425
+ * @category references
426
+ * @since 4.0.0
320
427
  */
321
- export const ClickhouseSettings: ServiceMap.Reference<
428
+ export const ClickhouseSettings: Context.Reference<
322
429
  NonNullable<Clickhouse.BaseQueryParams["clickhouse_settings"]>
323
- > = ServiceMap.Reference("@effect/sql-clickhouse/ClickhouseClient/ClickhouseSettings", {
430
+ > = Context.Reference("@effect/sql-clickhouse/ClickhouseClient/ClickhouseSettings", {
324
431
  defaultValue: () => ({})
325
432
  })
326
433
 
327
434
  /**
435
+ * Provides both `ClickhouseClient` and generic `SqlClient` services from a
436
+ * `Config`-backed ClickHouse client configuration.
437
+ *
328
438
  * @category layers
329
- * @since 1.0.0
439
+ * @since 4.0.0
330
440
  */
331
441
  export const layerConfig: (
332
442
  config: Config.Wrap<ClickhouseClientConfig>
333
443
  ) => Layer.Layer<ClickhouseClient | Client.SqlClient, Config.ConfigError | SqlError> = (
334
444
  config: Config.Wrap<ClickhouseClientConfig>
335
445
  ): Layer.Layer<ClickhouseClient | Client.SqlClient, Config.ConfigError | SqlError> =>
336
- Layer.effectServices(
337
- Config.unwrap(config).asEffect().pipe(
446
+ Layer.effectContext(
447
+ Config.unwrap(config).pipe(
338
448
  Effect.flatMap(make),
339
449
  Effect.map((client) =>
340
- ServiceMap.make(ClickhouseClient, client).pipe(
341
- ServiceMap.add(Client.SqlClient, client)
450
+ Context.make(ClickhouseClient, client).pipe(
451
+ Context.add(Client.SqlClient, client)
342
452
  )
343
453
  )
344
454
  )
345
455
  ).pipe(Layer.provide(Reactivity.layer))
346
456
 
347
457
  /**
458
+ * Provides both `ClickhouseClient` and generic `SqlClient` services from a
459
+ * ClickHouse client configuration.
460
+ *
348
461
  * @category layers
349
- * @since 1.0.0
462
+ * @since 4.0.0
350
463
  */
351
464
  export const layer = (
352
465
  config: ClickhouseClientConfig
353
466
  ): Layer.Layer<ClickhouseClient | Client.SqlClient, Config.ConfigError | SqlError> =>
354
- Layer.effectServices(
467
+ Layer.effectContext(
355
468
  Effect.map(make(config), (client) =>
356
- ServiceMap.make(ClickhouseClient, client).pipe(
357
- ServiceMap.add(Client.SqlClient, client)
469
+ Context.make(ClickhouseClient, client).pipe(
470
+ Context.add(Client.SqlClient, client)
358
471
  ))
359
472
  ).pipe(Layer.provide(Reactivity.layer))
360
473
 
@@ -384,8 +497,12 @@ const typeFromUnknown = (value: unknown): string => {
384
497
  }
385
498
 
386
499
  /**
500
+ * Creates the SQL statement compiler for ClickHouse, emitting typed
501
+ * `{pN: Type}` placeholders and escaping identifiers with an optional query
502
+ * name transform.
503
+ *
387
504
  * @category compiler
388
- * @since 1.0.0
505
+ * @since 4.0.0
389
506
  */
390
507
  export const makeCompiler = (transform?: (_: string) => string) =>
391
508
  Statement.makeCompiler<ClickhouseCustom>({
@@ -411,14 +528,17 @@ export const makeCompiler = (transform?: (_: string) => string) =>
411
528
  const escape = Statement.defaultEscape("\"")
412
529
 
413
530
  /**
531
+ * Custom SQL fragment type used for ClickHouse typed parameters created by
532
+ * `ClickhouseClient.param`.
533
+ *
414
534
  * @category custom types
415
- * @since 1.0.0
535
+ * @since 4.0.0
416
536
  */
417
537
  export type ClickhouseCustom = ClickhouseParam
418
538
 
419
539
  /**
420
540
  * @category custom types
421
- * @since 1.0.0
541
+ * @since 4.0.0
422
542
  */
423
543
  interface ClickhouseParam extends Statement.Custom<"ClickhouseParam", string, unknown> {}
424
544
 
@@ -1,5 +1,13 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * ClickHouse adapter for the shared Effect SQL migration runner.
3
+ *
4
+ * This module re-exports the common `Migrator` loaders and error types, then
5
+ * provides `run` and `layer` helpers that apply ordered migrations through the
6
+ * current ClickHouse `SqlClient`. `run` returns the applied migration IDs and
7
+ * names, while `layer` runs the migrations during layer construction and
8
+ * provides no services.
9
+ *
10
+ * @since 4.0.0
3
11
  */
4
12
  import type * as Effect from "effect/Effect"
5
13
  import * as Layer from "effect/Layer"
@@ -8,13 +16,16 @@ import type * as Client from "effect/unstable/sql/SqlClient"
8
16
  import type { SqlError } from "effect/unstable/sql/SqlError"
9
17
 
10
18
  /**
11
- * @since 1.0.0
19
+ * @since 4.0.0
12
20
  */
13
21
  export * from "effect/unstable/sql/Migrator"
14
22
 
15
23
  /**
16
- * @category constructor
17
- * @since 1.0.0
24
+ * Runs SQL migrations for ClickHouse using the supplied migrator options and
25
+ * returns the applied migration IDs and names.
26
+ *
27
+ * @category constructors
28
+ * @since 4.0.0
18
29
  */
19
30
  export const run: <R2 = never>(
20
31
  { loader, schemaDirectory, table }: Migrator.MigratorOptions<R2>
@@ -25,8 +36,11 @@ export const run: <R2 = never>(
25
36
  > = Migrator.make({})
26
37
 
27
38
  /**
39
+ * Creates a layer that runs the configured ClickHouse migrations during layer
40
+ * construction and provides no services.
41
+ *
28
42
  * @category layers
29
- * @since 1.0.0
43
+ * @since 4.0.0
30
44
  */
31
45
  export const layer = <R>(
32
46
  options: Migrator.MigratorOptions<R>
package/src/index.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * @since 4.0.0
3
3
  */
4
4
 
5
5
  // @barrel: Auto-generated exports. Do not edit manually.
6
6
 
7
7
  /**
8
- * @since 1.0.0
8
+ * @since 4.0.0
9
9
  */
10
10
  export * as ClickhouseClient from "./ClickhouseClient.ts"
11
11
 
12
12
  /**
13
- * @since 1.0.0
13
+ * @since 4.0.0
14
14
  */
15
15
  export * as ClickhouseMigrator from "./ClickhouseMigrator.ts"