@effect/sql-mysql2 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.
@@ -2,12 +2,12 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import * as Config from "effect/Config";
5
+ import * as Context from "effect/Context";
5
6
  import * as Duration from "effect/Duration";
6
7
  import * as Effect from "effect/Effect";
7
8
  import * as Layer from "effect/Layer";
8
9
  import * as Redacted from "effect/Redacted";
9
10
  import type { Scope } from "effect/Scope";
10
- import * as ServiceMap from "effect/ServiceMap";
11
11
  import * as Reactivity from "effect/unstable/reactivity/Reactivity";
12
12
  import * as Client from "effect/unstable/sql/SqlClient";
13
13
  import { SqlError } from "effect/unstable/sql/SqlError";
@@ -35,7 +35,7 @@ export interface MysqlClient extends Client.SqlClient {
35
35
  * @category tags
36
36
  * @since 1.0.0
37
37
  */
38
- export declare const MysqlClient: ServiceMap.Service<MysqlClient, MysqlClient>;
38
+ export declare const MysqlClient: Context.Service<MysqlClient, MysqlClient>;
39
39
  /**
40
40
  * @category models
41
41
  * @since 1.0.0
@@ -51,7 +51,7 @@ export interface MysqlClientConfig {
51
51
  readonly username?: string | undefined;
52
52
  readonly password?: Redacted.Redacted | undefined;
53
53
  readonly maxConnections?: number | undefined;
54
- readonly connectionTTL?: Duration.DurationInput | undefined;
54
+ readonly connectionTTL?: Duration.Input | undefined;
55
55
  readonly poolConfig?: Mysql.PoolOptions | undefined;
56
56
  readonly spanAttributes?: Record<string, unknown> | undefined;
57
57
  readonly transformResultNames?: ((str: string) => string) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"MysqlClient.d.ts","sourceRoot":"","sources":["../src/MysqlClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MysqlClient.d.ts","sourceRoot":"","sources":["../src/MysqlClient.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,15 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import * as Config from "effect/Config";
5
+ import * as Context from "effect/Context";
5
6
  import * as Duration from "effect/Duration";
6
7
  import * as Effect from "effect/Effect";
7
8
  import * as Layer from "effect/Layer";
8
9
  import * as Redacted from "effect/Redacted";
9
- import * as ServiceMap from "effect/ServiceMap";
10
10
  import * as Stream from "effect/Stream";
11
11
  import * as Reactivity from "effect/unstable/reactivity/Reactivity";
12
12
  import * as Client from "effect/unstable/sql/SqlClient";
13
- import { SqlError } from "effect/unstable/sql/SqlError";
13
+ import { AuthenticationError, AuthorizationError, ConnectionError, ConstraintError, DeadlockError, LockTimeoutError, SqlError, SqlSyntaxError, StatementTimeoutError, UnknownError } from "effect/unstable/sql/SqlError";
14
14
  import { asyncPauseResume } from "effect/unstable/sql/SqlStream";
15
15
  import * as Statement from "effect/unstable/sql/Statement";
16
16
  import * as Mysql from "mysql2";
@@ -18,6 +18,52 @@ const ATTR_DB_SYSTEM_NAME = "db.system.name";
18
18
  const ATTR_DB_NAMESPACE = "db.namespace";
19
19
  const ATTR_SERVER_ADDRESS = "server.address";
20
20
  const ATTR_SERVER_PORT = "server.port";
21
+ const mysqlErrnoFromCause = cause => {
22
+ if (typeof cause !== "object" || cause === null || !("errno" in cause)) {
23
+ return undefined;
24
+ }
25
+ const errno = cause.errno;
26
+ return typeof errno === "number" ? errno : undefined;
27
+ };
28
+ const mysqlConnectionErrorCodes = /*#__PURE__*/new Set([1040, 1042, 1043, 1129, 1130, 1203]);
29
+ const mysqlAuthorizationErrorCodes = /*#__PURE__*/new Set([1044, 1142, 1143, 1227]);
30
+ const mysqlSyntaxErrorCodes = /*#__PURE__*/new Set([1054, 1064, 1146]);
31
+ const mysqlConstraintErrorCodes = /*#__PURE__*/new Set([1022, 1048, 1062, 1169, 1216, 1217, 1451, 1452, 1557]);
32
+ const classifyError = (cause, message, operation) => {
33
+ const props = {
34
+ cause,
35
+ message,
36
+ operation
37
+ };
38
+ const errno = mysqlErrnoFromCause(cause);
39
+ if (errno !== undefined) {
40
+ if (mysqlConnectionErrorCodes.has(errno)) {
41
+ return new ConnectionError(props);
42
+ }
43
+ if (errno === 1045) {
44
+ return new AuthenticationError(props);
45
+ }
46
+ if (mysqlAuthorizationErrorCodes.has(errno)) {
47
+ return new AuthorizationError(props);
48
+ }
49
+ if (mysqlSyntaxErrorCodes.has(errno)) {
50
+ return new SqlSyntaxError(props);
51
+ }
52
+ if (mysqlConstraintErrorCodes.has(errno)) {
53
+ return new ConstraintError(props);
54
+ }
55
+ if (errno === 1213) {
56
+ return new DeadlockError(props);
57
+ }
58
+ if (errno === 1205) {
59
+ return new LockTimeoutError(props);
60
+ }
61
+ if (errno === 3024) {
62
+ return new StatementTimeoutError(props);
63
+ }
64
+ }
65
+ return new UnknownError(props);
66
+ };
21
67
  /**
22
68
  * @category type ids
23
69
  * @since 1.0.0
@@ -27,7 +73,7 @@ export const TypeId = "~@effect/sql-mysql2/MysqlClient";
27
73
  * @category tags
28
74
  * @since 1.0.0
29
75
  */
30
- export const MysqlClient = /*#__PURE__*/ServiceMap.Service("@effect/sql-mysql2/MysqlClient");
76
+ export const MysqlClient = /*#__PURE__*/Context.Service("@effect/sql-mysql2/MysqlClient");
31
77
  /**
32
78
  * @category constructors
33
79
  * @since 1.0.0
@@ -42,7 +88,7 @@ export const make = options => Effect.gen(function* () {
42
88
  }
43
89
  runRaw(sql, values, rowsAsArray = false, method = "execute") {
44
90
  return Effect.callback(resume => {
45
- ;
91
+ const operation = method === "query" ? "executeUnprepared" : "execute";
46
92
  this.conn[method]({
47
93
  sql,
48
94
  values,
@@ -50,8 +96,7 @@ export const make = options => Effect.gen(function* () {
50
96
  }, (cause, results, _fields) => {
51
97
  if (cause) {
52
98
  resume(Effect.fail(new SqlError({
53
- cause,
54
- message: "Failed to execute statement"
99
+ reason: classifyError(cause, "Failed to execute statement", operation)
55
100
  })));
56
101
  } else {
57
102
  resume(Effect.succeed(results));
@@ -84,7 +129,7 @@ export const make = options => Effect.gen(function* () {
84
129
  multipleStatements: true,
85
130
  supportBigNumbers: true,
86
131
  connectionLimit: options.maxConnections,
87
- idleTimeout: options.connectionTTL ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.connectionTTL)) : undefined
132
+ idleTimeout: options.connectionTTL ? Duration.toMillis(Duration.fromInputUnsafe(options.connectionTTL)) : undefined
88
133
  }) : Mysql.createPool({
89
134
  ...options.poolConfig,
90
135
  host: options.host,
@@ -95,15 +140,14 @@ export const make = options => Effect.gen(function* () {
95
140
  multipleStatements: true,
96
141
  supportBigNumbers: true,
97
142
  connectionLimit: options.maxConnections,
98
- idleTimeout: options.connectionTTL ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.connectionTTL)) : undefined
143
+ idleTimeout: options.connectionTTL ? Duration.toMillis(Duration.fromInputUnsafe(options.connectionTTL)) : undefined
99
144
  });
100
145
  yield* Effect.acquireRelease(Effect.callback(resume => {
101
146
  ;
102
147
  pool.query("SELECT 1", cause => {
103
148
  if (cause) {
104
149
  resume(Effect.fail(new SqlError({
105
- cause,
106
- message: "MysqlClient: Failed to connect"
150
+ reason: classifyError(cause, "MysqlClient: Failed to connect", "connect")
107
151
  })));
108
152
  } else {
109
153
  resume(Effect.void);
@@ -113,9 +157,12 @@ export const make = options => Effect.gen(function* () {
113
157
  pool.end(() => resume(Effect.void));
114
158
  })).pipe(Effect.timeoutOrElse({
115
159
  duration: Duration.seconds(5),
116
- onTimeout: () => Effect.fail(new SqlError({
117
- message: "MysqlClient: Connection timeout",
118
- cause: new Error("connection timeout")
160
+ orElse: () => Effect.fail(new SqlError({
161
+ reason: new ConnectionError({
162
+ message: "MysqlClient: Connection timeout",
163
+ cause: new Error("connection timeout"),
164
+ operation: "connect"
165
+ })
119
166
  }))
120
167
  }));
121
168
  const poolConnection = new ConnectionImpl(pool);
@@ -123,8 +170,7 @@ export const make = options => Effect.gen(function* () {
123
170
  pool.getConnection((cause, conn) => {
124
171
  if (cause) {
125
172
  resume(Effect.fail(new SqlError({
126
- cause,
127
- message: "Failed to acquire connection"
173
+ reason: classifyError(cause, "Failed to acquire connection", "acquireConnection")
128
174
  })));
129
175
  } else {
130
176
  resume(Effect.succeed(conn));
@@ -151,12 +197,12 @@ export const make = options => Effect.gen(function* () {
151
197
  * @category layers
152
198
  * @since 1.0.0
153
199
  */
154
- export const layerConfig = config => Layer.effectServices(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => ServiceMap.make(MysqlClient, client).pipe(ServiceMap.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
200
+ export const layerConfig = config => Layer.effectContext(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => Context.make(MysqlClient, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
155
201
  /**
156
202
  * @category layers
157
203
  * @since 1.0.0
158
204
  */
159
- export const layer = config => Layer.effectServices(Effect.map(make(config), client => ServiceMap.make(MysqlClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
205
+ export const layer = config => Layer.effectContext(Effect.map(make(config), client => Context.make(MysqlClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
160
206
  /**
161
207
  * @category compiler
162
208
  * @since 1.0.0
@@ -184,8 +230,7 @@ function queryStream(conn, sql, params) {
184
230
  let buffer = [];
185
231
  let taskPending = false;
186
232
  query.on("error", cause => emit.fail(new SqlError({
187
- cause,
188
- message: "Failed to stream statement"
233
+ reason: classifyError(cause, "Failed to stream statement", "stream")
189
234
  })));
190
235
  query.on("data", row => {
191
236
  buffer.push(row);
@@ -1 +1 @@
1
- {"version":3,"file":"MysqlClient.js","names":["Config","Duration","Effect","Layer","Redacted","ServiceMap","Stream","Reactivity","Client","SqlError","asyncPauseResume","Statement","Mysql","ATTR_DB_SYSTEM_NAME","ATTR_DB_NAMESPACE","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","TypeId","MysqlClient","Service","make","options","gen","compiler","makeCompiler","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","ConnectionImpl","conn","constructor","runRaw","sql","values","rowsAsArray","method","callback","resume","cause","results","_fields","fail","message","succeed","run","pipe","map","Array","isArray","execute","params","executeRaw","executeValues","executeUnprepared","executeStream","stream","queryStream","mapArray","_","pool","url","createPool","uri","value","multipleStatements","supportBigNumbers","connectionLimit","maxConnections","idleTimeout","connectionTTL","toMillis","fromDurationInputUnsafe","poolConfig","host","port","database","user","username","password","acquireRelease","query","void","end","timeoutOrElse","duration","seconds","onTimeout","Error","poolConnection","acquireConn","getConnection","sync","release","transactionAcquirer","spanAttributes","Object","entries","push","assign","acquirer","config","layerConfig","effectServices","unwrap","asEffect","flatMap","client","add","SqlClient","provide","layer","transform","dialect","placeholder","onIdentifier","withoutTransform","escape","onCustom","onRecordUpdate","defaultEscape","fnUntraced","emit","addFinalizer","destroy","buffer","taskPending","on","row","queueMicrotask","items","length","onPause","pause","onResume"],"sources":["../src/MysqlClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MysqlClient.js","names":["Config","Context","Duration","Effect","Layer","Redacted","Stream","Reactivity","Client","AuthenticationError","AuthorizationError","ConnectionError","ConstraintError","DeadlockError","LockTimeoutError","SqlError","SqlSyntaxError","StatementTimeoutError","UnknownError","asyncPauseResume","Statement","Mysql","ATTR_DB_SYSTEM_NAME","ATTR_DB_NAMESPACE","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","mysqlErrnoFromCause","cause","undefined","errno","mysqlConnectionErrorCodes","Set","mysqlAuthorizationErrorCodes","mysqlSyntaxErrorCodes","mysqlConstraintErrorCodes","classifyError","message","operation","props","has","TypeId","MysqlClient","Service","make","options","gen","compiler","makeCompiler","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","ConnectionImpl","conn","constructor","runRaw","sql","values","rowsAsArray","method","callback","resume","results","_fields","fail","reason","succeed","run","pipe","map","Array","isArray","execute","params","executeRaw","executeValues","executeUnprepared","executeStream","stream","queryStream","mapArray","_","pool","url","createPool","uri","value","multipleStatements","supportBigNumbers","connectionLimit","maxConnections","idleTimeout","connectionTTL","toMillis","fromInputUnsafe","poolConfig","host","port","database","user","username","password","acquireRelease","query","void","end","timeoutOrElse","duration","seconds","orElse","Error","poolConnection","acquireConn","getConnection","sync","release","transactionAcquirer","spanAttributes","Object","entries","push","assign","acquirer","config","layerConfig","effectContext","unwrap","asEffect","flatMap","client","add","SqlClient","provide","layer","transform","dialect","placeholder","onIdentifier","withoutTransform","escape","onCustom","onRecordUpdate","defaultEscape","fnUntraced","emit","addFinalizer","destroy","buffer","taskPending","on","row","queueMicrotask","items","length","onPause","pause","onResume"],"sources":["../src/MysqlClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/sql-mysql2",
3
- "version": "4.0.0-beta.6",
3
+ "version": "4.0.0-beta.62",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "A MySQL toolkit for Effect",
@@ -43,14 +43,14 @@
43
43
  "provenance": true
44
44
  },
45
45
  "devDependencies": {
46
- "@testcontainers/mysql": "^11.11.0",
47
- "effect": "^4.0.0-beta.6"
46
+ "@testcontainers/mysql": "^11.14.0",
47
+ "effect": "^4.0.0-beta.62"
48
48
  },
49
49
  "peerDependencies": {
50
- "effect": "^4.0.0-beta.6"
50
+ "effect": "^4.0.0-beta.62"
51
51
  },
52
52
  "dependencies": {
53
- "mysql2": "^3.16.2"
53
+ "mysql2": "^3.22.0"
54
54
  },
55
55
  "scripts": {
56
56
  "codegen": "effect-utils codegen",
@@ -2,17 +2,28 @@
2
2
  * @since 1.0.0
3
3
  */
4
4
  import * as Config from "effect/Config"
5
+ import * as Context from "effect/Context"
5
6
  import * as Duration from "effect/Duration"
6
7
  import * as Effect from "effect/Effect"
7
8
  import * as Layer from "effect/Layer"
8
9
  import * as Redacted from "effect/Redacted"
9
10
  import type { Scope } from "effect/Scope"
10
- import * as ServiceMap from "effect/ServiceMap"
11
11
  import * as Stream from "effect/Stream"
12
12
  import * as Reactivity from "effect/unstable/reactivity/Reactivity"
13
13
  import * as Client from "effect/unstable/sql/SqlClient"
14
14
  import type { Connection } from "effect/unstable/sql/SqlConnection"
15
- import { SqlError } from "effect/unstable/sql/SqlError"
15
+ import {
16
+ AuthenticationError,
17
+ AuthorizationError,
18
+ ConnectionError,
19
+ ConstraintError,
20
+ DeadlockError,
21
+ LockTimeoutError,
22
+ SqlError,
23
+ SqlSyntaxError,
24
+ StatementTimeoutError,
25
+ UnknownError
26
+ } from "effect/unstable/sql/SqlError"
16
27
  import { asyncPauseResume } from "effect/unstable/sql/SqlStream"
17
28
  import * as Statement from "effect/unstable/sql/Statement"
18
29
  import * as Mysql from "mysql2"
@@ -22,6 +33,55 @@ const ATTR_DB_NAMESPACE = "db.namespace"
22
33
  const ATTR_SERVER_ADDRESS = "server.address"
23
34
  const ATTR_SERVER_PORT = "server.port"
24
35
 
36
+ const mysqlErrnoFromCause = (cause: unknown): number | undefined => {
37
+ if (typeof cause !== "object" || cause === null || !("errno" in cause)) {
38
+ return undefined
39
+ }
40
+ const errno = cause.errno
41
+ return typeof errno === "number" ? errno : undefined
42
+ }
43
+
44
+ const mysqlConnectionErrorCodes = new Set([1040, 1042, 1043, 1129, 1130, 1203])
45
+ const mysqlAuthorizationErrorCodes = new Set([1044, 1142, 1143, 1227])
46
+ const mysqlSyntaxErrorCodes = new Set([1054, 1064, 1146])
47
+ const mysqlConstraintErrorCodes = new Set([1022, 1048, 1062, 1169, 1216, 1217, 1451, 1452, 1557])
48
+
49
+ const classifyError = (
50
+ cause: unknown,
51
+ message: string,
52
+ operation: string
53
+ ) => {
54
+ const props = { cause, message, operation }
55
+ const errno = mysqlErrnoFromCause(cause)
56
+ if (errno !== undefined) {
57
+ if (mysqlConnectionErrorCodes.has(errno)) {
58
+ return new ConnectionError(props)
59
+ }
60
+ if (errno === 1045) {
61
+ return new AuthenticationError(props)
62
+ }
63
+ if (mysqlAuthorizationErrorCodes.has(errno)) {
64
+ return new AuthorizationError(props)
65
+ }
66
+ if (mysqlSyntaxErrorCodes.has(errno)) {
67
+ return new SqlSyntaxError(props)
68
+ }
69
+ if (mysqlConstraintErrorCodes.has(errno)) {
70
+ return new ConstraintError(props)
71
+ }
72
+ if (errno === 1213) {
73
+ return new DeadlockError(props)
74
+ }
75
+ if (errno === 1205) {
76
+ return new LockTimeoutError(props)
77
+ }
78
+ if (errno === 3024) {
79
+ return new StatementTimeoutError(props)
80
+ }
81
+ }
82
+ return new UnknownError(props)
83
+ }
84
+
25
85
  /**
26
86
  * @category type ids
27
87
  * @since 1.0.0
@@ -47,7 +107,7 @@ export interface MysqlClient extends Client.SqlClient {
47
107
  * @category tags
48
108
  * @since 1.0.0
49
109
  */
50
- export const MysqlClient = ServiceMap.Service<MysqlClient>("@effect/sql-mysql2/MysqlClient")
110
+ export const MysqlClient = Context.Service<MysqlClient>("@effect/sql-mysql2/MysqlClient")
51
111
 
52
112
  /**
53
113
  * @category models
@@ -66,7 +126,7 @@ export interface MysqlClientConfig {
66
126
  readonly password?: Redacted.Redacted | undefined
67
127
 
68
128
  readonly maxConnections?: number | undefined
69
- readonly connectionTTL?: Duration.DurationInput | undefined
129
+ readonly connectionTTL?: Duration.Input | undefined
70
130
 
71
131
  readonly poolConfig?: Mysql.PoolOptions | undefined
72
132
 
@@ -104,13 +164,16 @@ export const make = (
104
164
  method: "execute" | "query" = "execute"
105
165
  ) {
106
166
  return Effect.callback<unknown, SqlError>((resume) => {
167
+ const operation = method === "query" ? "executeUnprepared" : "execute"
107
168
  ;(this.conn as any)[method]({
108
169
  sql,
109
170
  values,
110
171
  rowsAsArray
111
172
  }, (cause: unknown | null, results: unknown, _fields: any) => {
112
173
  if (cause) {
113
- resume(Effect.fail(new SqlError({ cause, message: "Failed to execute statement" })))
174
+ resume(
175
+ Effect.fail(new SqlError({ reason: classifyError(cause, "Failed to execute statement", operation) }))
176
+ )
114
177
  } else {
115
178
  resume(Effect.succeed(results))
116
179
  }
@@ -172,7 +235,7 @@ export const make = (
172
235
  supportBigNumbers: true,
173
236
  connectionLimit: options.maxConnections!,
174
237
  idleTimeout: options.connectionTTL
175
- ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.connectionTTL))
238
+ ? Duration.toMillis(Duration.fromInputUnsafe(options.connectionTTL))
176
239
  : undefined as any
177
240
  })
178
241
  : Mysql.createPool({
@@ -188,7 +251,7 @@ export const make = (
188
251
  supportBigNumbers: true,
189
252
  connectionLimit: options.maxConnections,
190
253
  idleTimeout: options.connectionTTL
191
- ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.connectionTTL))
254
+ ? Duration.toMillis(Duration.fromInputUnsafe(options.connectionTTL))
192
255
  : undefined
193
256
  } as Mysql.PoolOptions)
194
257
 
@@ -198,8 +261,7 @@ export const make = (
198
261
  if (cause) {
199
262
  resume(Effect.fail(
200
263
  new SqlError({
201
- cause,
202
- message: "MysqlClient: Failed to connect"
264
+ reason: classifyError(cause, "MysqlClient: Failed to connect", "connect")
203
265
  })
204
266
  ))
205
267
  } else {
@@ -214,11 +276,14 @@ export const make = (
214
276
  ).pipe(
215
277
  Effect.timeoutOrElse({
216
278
  duration: Duration.seconds(5),
217
- onTimeout: () =>
279
+ orElse: () =>
218
280
  Effect.fail(
219
281
  new SqlError({
220
- message: "MysqlClient: Connection timeout",
221
- cause: new Error("connection timeout")
282
+ reason: new ConnectionError({
283
+ message: "MysqlClient: Connection timeout",
284
+ cause: new Error("connection timeout"),
285
+ operation: "connect"
286
+ })
222
287
  })
223
288
  )
224
289
  })
@@ -230,7 +295,13 @@ export const make = (
230
295
  Effect.callback<Mysql.PoolConnection, SqlError>((resume) => {
231
296
  pool.getConnection((cause, conn) => {
232
297
  if (cause) {
233
- resume(Effect.fail(new SqlError({ cause, message: "Failed to acquire connection" })))
298
+ resume(
299
+ Effect.fail(
300
+ new SqlError({
301
+ reason: classifyError(cause, "Failed to acquire connection", "acquireConnection")
302
+ })
303
+ )
304
+ )
234
305
  } else {
235
306
  resume(Effect.succeed(conn))
236
307
  }
@@ -274,12 +345,12 @@ export const make = (
274
345
  export const layerConfig = (
275
346
  config: Config.Wrap<MysqlClientConfig>
276
347
  ): Layer.Layer<MysqlClient | Client.SqlClient, Config.ConfigError | SqlError> =>
277
- Layer.effectServices(
348
+ Layer.effectContext(
278
349
  Config.unwrap(config).asEffect().pipe(
279
350
  Effect.flatMap(make),
280
351
  Effect.map((client) =>
281
- ServiceMap.make(MysqlClient, client).pipe(
282
- ServiceMap.add(Client.SqlClient, client)
352
+ Context.make(MysqlClient, client).pipe(
353
+ Context.add(Client.SqlClient, client)
283
354
  )
284
355
  )
285
356
  )
@@ -292,10 +363,10 @@ export const layerConfig = (
292
363
  export const layer = (
293
364
  config: MysqlClientConfig
294
365
  ): Layer.Layer<MysqlClient | Client.SqlClient, Config.ConfigError | SqlError> =>
295
- Layer.effectServices(
366
+ Layer.effectContext(
296
367
  Effect.map(make(config), (client) =>
297
- ServiceMap.make(MysqlClient, client).pipe(
298
- ServiceMap.add(Client.SqlClient, client)
368
+ Context.make(MysqlClient, client).pipe(
369
+ Context.add(Client.SqlClient, client)
299
370
  ))
300
371
  ).pipe(Layer.provide(Reactivity.layer))
301
372
 
@@ -331,11 +402,15 @@ function queryStream(
331
402
  ) {
332
403
  return asyncPauseResume<any, SqlError>(Effect.fnUntraced(function*(emit) {
333
404
  const query = (conn as any).query(sql, params).stream()
334
- yield* Effect.addFinalizer(() => Effect.sync(() => query.destroy()))
405
+ yield* Effect.addFinalizer(() => Effect.sync(() => query.destroy() as void))
335
406
 
336
407
  let buffer: Array<any> = []
337
408
  let taskPending = false
338
- query.on("error", (cause: unknown) => emit.fail(new SqlError({ cause, message: "Failed to stream statement" })))
409
+ query.on(
410
+ "error",
411
+ (cause: unknown) =>
412
+ emit.fail(new SqlError({ reason: classifyError(cause, "Failed to stream statement", "stream") }))
413
+ )
339
414
  query.on("data", (row: any) => {
340
415
  buffer.push(row)
341
416
  if (!taskPending) {