@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.
- package/dist/MysqlClient.d.ts +3 -3
- package/dist/MysqlClient.d.ts.map +1 -1
- package/dist/MysqlClient.js +64 -19
- package/dist/MysqlClient.js.map +1 -1
- package/package.json +5 -5
- package/src/MysqlClient.ts +96 -21
package/dist/MysqlClient.d.ts
CHANGED
|
@@ -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:
|
|
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.
|
|
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":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"MysqlClient.d.ts","sourceRoot":"","sources":["../src/MysqlClient.ts"],"names":[],"mappings":"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"}
|
package/dist/MysqlClient.js
CHANGED
|
@@ -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__*/
|
|
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.
|
|
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.
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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.
|
|
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.
|
|
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);
|
package/dist/MysqlClient.js.map
CHANGED
|
@@ -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.
|
|
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.
|
|
47
|
-
"effect": "^4.0.0-beta.
|
|
46
|
+
"@testcontainers/mysql": "^11.14.0",
|
|
47
|
+
"effect": "^4.0.0-beta.62"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"effect": "^4.0.0-beta.
|
|
50
|
+
"effect": "^4.0.0-beta.62"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"mysql2": "^3.
|
|
53
|
+
"mysql2": "^3.22.0"
|
|
54
54
|
},
|
|
55
55
|
"scripts": {
|
|
56
56
|
"codegen": "effect-utils codegen",
|
package/src/MysqlClient.ts
CHANGED
|
@@ -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 {
|
|
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 =
|
|
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.
|
|
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(
|
|
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.
|
|
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.
|
|
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
|
-
|
|
279
|
+
orElse: () =>
|
|
218
280
|
Effect.fail(
|
|
219
281
|
new SqlError({
|
|
220
|
-
|
|
221
|
-
|
|
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(
|
|
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.
|
|
348
|
+
Layer.effectContext(
|
|
278
349
|
Config.unwrap(config).asEffect().pipe(
|
|
279
350
|
Effect.flatMap(make),
|
|
280
351
|
Effect.map((client) =>
|
|
281
|
-
|
|
282
|
-
|
|
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.
|
|
366
|
+
Layer.effectContext(
|
|
296
367
|
Effect.map(make(config), (client) =>
|
|
297
|
-
|
|
298
|
-
|
|
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(
|
|
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) {
|