@effect/sql-mssql 4.0.0-beta.6 → 4.0.0-beta.60

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 * as 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";
@@ -40,7 +40,7 @@ export interface MssqlClient extends Client.SqlClient {
40
40
  * @category tags
41
41
  * @since 1.0.0
42
42
  */
43
- export declare const MssqlClient: ServiceMap.Service<MssqlClient, MssqlClient>;
43
+ export declare const MssqlClient: Context.Service<MssqlClient, MssqlClient>;
44
44
  /**
45
45
  * @category models
46
46
  * @since 1.0.0
@@ -56,10 +56,10 @@ export interface MssqlClientConfig {
56
56
  readonly database?: string | undefined;
57
57
  readonly username?: string | undefined;
58
58
  readonly password?: Redacted.Redacted | undefined;
59
- readonly connectTimeout?: Duration.DurationInput | undefined;
59
+ readonly connectTimeout?: Duration.Input | undefined;
60
60
  readonly minConnections?: number | undefined;
61
61
  readonly maxConnections?: number | undefined;
62
- readonly connectionTTL?: Duration.DurationInput | undefined;
62
+ readonly connectionTTL?: Duration.Input | undefined;
63
63
  readonly parameterTypes?: Record<Statement.PrimitiveKind, DataType> | undefined;
64
64
  readonly spanAttributes?: Record<string, unknown> | undefined;
65
65
  readonly transformResultNames?: ((str: string) => string) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"MssqlClient.d.ts","sourceRoot":"","sources":["../src/MssqlClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MssqlClient.d.ts","sourceRoot":"","sources":["../src/MssqlClient.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
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 { identity } from "effect/Function";
@@ -9,17 +10,63 @@ import * as Layer from "effect/Layer";
9
10
  import * as Pool from "effect/Pool";
10
11
  import * as Redacted from "effect/Redacted";
11
12
  import * as Scope from "effect/Scope";
12
- import * as ServiceMap from "effect/ServiceMap";
13
13
  import * as Stream from "effect/Stream";
14
14
  import * as Reactivity from "effect/unstable/reactivity/Reactivity";
15
15
  import * as Client from "effect/unstable/sql/SqlClient";
16
- import { SqlError } from "effect/unstable/sql/SqlError";
16
+ import { AuthenticationError, AuthorizationError, ConnectionError, ConstraintError, DeadlockError, LockTimeoutError, SerializationError, SqlError, SqlSyntaxError, UnknownError } from "effect/unstable/sql/SqlError";
17
17
  import * as Statement from "effect/unstable/sql/Statement";
18
18
  import * as Tedious from "tedious";
19
19
  const ATTR_DB_SYSTEM_NAME = "db.system.name";
20
20
  const ATTR_DB_NAMESPACE = "db.namespace";
21
21
  const ATTR_SERVER_ADDRESS = "server.address";
22
22
  const ATTR_SERVER_PORT = "server.port";
23
+ const mssqlNumberFromCause = cause => {
24
+ if (typeof cause !== "object" || cause === null || !("number" in cause)) {
25
+ return undefined;
26
+ }
27
+ const number = cause.number;
28
+ return typeof number === "number" ? number : undefined;
29
+ };
30
+ const mssqlConnectionErrorCodes = /*#__PURE__*/new Set([233, 10054]);
31
+ const mssqlAuthenticationErrorCodes = /*#__PURE__*/new Set([4060, 18452, 18456]);
32
+ const mssqlAuthorizationErrorCodes = /*#__PURE__*/new Set([229, 230, 262, 297, 300]);
33
+ const mssqlSyntaxErrorCodes = /*#__PURE__*/new Set([102, 207, 208, 2714]);
34
+ const mssqlConstraintErrorCodes = /*#__PURE__*/new Set([515, 547, 2601, 2627]);
35
+ const classifyError = (cause, message, operation, fallback = "unknown") => {
36
+ const props = {
37
+ cause,
38
+ message,
39
+ operation
40
+ };
41
+ const number = mssqlNumberFromCause(cause);
42
+ if (number !== undefined) {
43
+ if (mssqlConnectionErrorCodes.has(number)) {
44
+ return new ConnectionError(props);
45
+ }
46
+ if (mssqlAuthenticationErrorCodes.has(number)) {
47
+ return new AuthenticationError(props);
48
+ }
49
+ if (mssqlAuthorizationErrorCodes.has(number)) {
50
+ return new AuthorizationError(props);
51
+ }
52
+ if (mssqlSyntaxErrorCodes.has(number)) {
53
+ return new SqlSyntaxError(props);
54
+ }
55
+ if (mssqlConstraintErrorCodes.has(number)) {
56
+ return new ConstraintError(props);
57
+ }
58
+ if (number === 1205) {
59
+ return new DeadlockError(props);
60
+ }
61
+ if (number === 3960) {
62
+ return new SerializationError(props);
63
+ }
64
+ if (number === 1222) {
65
+ return new LockTimeoutError(props);
66
+ }
67
+ }
68
+ return fallback === "connection" ? new ConnectionError(props) : new UnknownError(props);
69
+ };
23
70
  /**
24
71
  * @category type ids
25
72
  * @since 1.0.0
@@ -29,8 +76,9 @@ export const TypeId = /*#__PURE__*/Symbol.for("@effect/sql-mssql/MssqlClient");
29
76
  * @category tags
30
77
  * @since 1.0.0
31
78
  */
32
- export const MssqlClient = /*#__PURE__*/ServiceMap.Service("@effect/sql-mssql/MssqlClient");
79
+ export const MssqlClient = /*#__PURE__*/Context.Service("@effect/sql-mssql/MssqlClient");
33
80
  const TransactionConnection = Client.TransactionConnection;
81
+ let clientIdCounter = 0;
34
82
  /**
35
83
  * @category constructors
36
84
  * @since 1.0.0
@@ -48,7 +96,7 @@ export const make = options => Effect.gen(function* () {
48
96
  port: options.port,
49
97
  database: options.database,
50
98
  trustServerCertificate: options.trustServer ?? true,
51
- connectTimeout: options.connectTimeout ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.connectTimeout)) : undefined,
99
+ connectTimeout: options.connectTimeout ? Duration.toMillis(Duration.fromInputUnsafe(options.connectTimeout)) : undefined,
52
100
  rowCollectionOnRequestCompletion: true,
53
101
  useColumnNames: false,
54
102
  instanceName: options.instanceName,
@@ -68,8 +116,7 @@ export const make = options => Effect.gen(function* () {
68
116
  conn.connect(cause => {
69
117
  if (cause) {
70
118
  resume(Effect.fail(new SqlError({
71
- cause,
72
- message: "Failed to connect"
119
+ reason: classifyError(cause, "Failed to connect", "connect", "connection")
73
120
  })));
74
121
  } else {
75
122
  resume(Effect.void);
@@ -80,8 +127,7 @@ export const make = options => Effect.gen(function* () {
80
127
  const req = new Tedious.Request(sql, (cause, _rowCount, result) => {
81
128
  if (cause) {
82
129
  resume(Effect.fail(new SqlError({
83
- cause,
84
- message: "Failed to execute statement"
130
+ reason: classifyError(cause, "Failed to execute statement", "execute")
85
131
  })));
86
132
  return;
87
133
  }
@@ -113,8 +159,7 @@ export const make = options => Effect.gen(function* () {
113
159
  const req = new Tedious.Request(escape(procedure.name), (cause, _, rows) => {
114
160
  if (cause) {
115
161
  resume(Effect.fail(new SqlError({
116
- cause,
117
- message: "Failed to execute statement"
162
+ reason: classifyError(cause, "Failed to execute statement", "execute")
118
163
  })));
119
164
  } else {
120
165
  rows = rowsToObjects(rows);
@@ -165,8 +210,7 @@ export const make = options => Effect.gen(function* () {
165
210
  conn.beginTransaction(cause => {
166
211
  if (cause) {
167
212
  resume(Effect.fail(new SqlError({
168
- cause,
169
- message: "Failed to begin transaction"
213
+ reason: classifyError(cause, "Failed to begin transaction", "beginTransaction")
170
214
  })));
171
215
  } else {
172
216
  resume(Effect.void);
@@ -177,8 +221,7 @@ export const make = options => Effect.gen(function* () {
177
221
  conn.commitTransaction(cause => {
178
222
  if (cause) {
179
223
  resume(Effect.fail(new SqlError({
180
- cause,
181
- message: "Failed to commit transaction"
224
+ reason: classifyError(cause, "Failed to commit transaction", "commitTransaction")
182
225
  })));
183
226
  } else {
184
227
  resume(Effect.void);
@@ -189,8 +232,7 @@ export const make = options => Effect.gen(function* () {
189
232
  conn.saveTransaction(cause => {
190
233
  if (cause) {
191
234
  resume(Effect.fail(new SqlError({
192
- cause,
193
- message: "Failed to create savepoint"
235
+ reason: classifyError(cause, "Failed to create savepoint", "createSavepoint")
194
236
  })));
195
237
  } else {
196
238
  resume(Effect.void);
@@ -201,8 +243,7 @@ export const make = options => Effect.gen(function* () {
201
243
  conn.rollbackTransaction(cause => {
202
244
  if (cause) {
203
245
  resume(Effect.fail(new SqlError({
204
- cause,
205
- message: "Failed to rollback transaction"
246
+ reason: classifyError(cause, "Failed to rollback transaction", "rollbackTransaction")
206
247
  })));
207
248
  } else {
208
249
  resume(Effect.void);
@@ -222,20 +263,21 @@ export const make = options => Effect.gen(function* () {
222
263
  timeToLive: options.connectionTTL ?? Duration.minutes(45),
223
264
  timeToLiveStrategy: "creation"
224
265
  });
225
- yield* Pool.get(pool).pipe(Effect.tap(connection => connection.executeUnprepared("SELECT 1", [], undefined)), Effect.mapError(({
226
- cause
227
- }) => new SqlError({
228
- cause,
229
- message: "MssqlClient: Failed to connect"
266
+ yield* Pool.get(pool).pipe(Effect.tap(connection => connection.executeUnprepared("SELECT 1", [], undefined)), Effect.mapError(cause => new SqlError({
267
+ reason: classifyError(cause, "MssqlClient: Failed to connect", "connect", "connection")
230
268
  })), Effect.scoped, Effect.timeoutOrElse({
231
269
  duration: options.connectTimeout ?? Duration.seconds(5),
232
- onTimeout: () => Effect.fail(new SqlError({
233
- message: "MssqlClient: Connection timeout",
234
- cause: new Error("connection timeout")
270
+ orElse: () => Effect.fail(new SqlError({
271
+ reason: new ConnectionError({
272
+ message: "MssqlClient: Connection timeout",
273
+ cause: new Error("connection timeout"),
274
+ operation: "connect"
275
+ })
235
276
  }))
236
277
  }));
278
+ const transactionService = TransactionConnection(clientIdCounter++);
237
279
  const withTransaction = Client.makeWithTransaction({
238
- transactionService: TransactionConnection,
280
+ transactionService,
239
281
  spanAttributes,
240
282
  acquireConnection: Effect.gen(function* () {
241
283
  const scope = Scope.makeUnsafe();
@@ -251,6 +293,7 @@ export const make = options => Effect.gen(function* () {
251
293
  return identity(Object.assign(yield* Client.make({
252
294
  acquirer: Pool.get(pool),
253
295
  compiler,
296
+ transactionService: transactionService,
254
297
  spanAttributes,
255
298
  transformRows
256
299
  }), {
@@ -274,12 +317,12 @@ export const make = options => Effect.gen(function* () {
274
317
  * @category layers
275
318
  * @since 1.0.0
276
319
  */
277
- export const layerConfig = config => Layer.effectServices(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => ServiceMap.make(MssqlClient, client).pipe(ServiceMap.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
320
+ export const layerConfig = config => Layer.effectContext(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => Context.make(MssqlClient, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
278
321
  /**
279
322
  * @category layers
280
323
  * @since 1.0.0
281
324
  */
282
- export const layer = config => Layer.effectServices(Effect.map(make(config), client => ServiceMap.make(MssqlClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
325
+ export const layer = config => Layer.effectContext(Effect.map(make(config), client => Context.make(MssqlClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
283
326
  /**
284
327
  * @category compiler
285
328
  * @since 1.0.0
@@ -1 +1 @@
1
- {"version":3,"file":"MssqlClient.js","names":["Config","Duration","Effect","identity","Layer","Pool","Redacted","Scope","ServiceMap","Stream","Reactivity","Client","SqlError","Statement","Tedious","ATTR_DB_SYSTEM_NAME","ATTR_DB_NAMESPACE","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","TypeId","Symbol","for","MssqlClient","Service","TransactionConnection","make","options","gen","parameterTypes","defaultParameterTypes","compiler","makeCompiler","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","spanAttributes","Object","entries","database","server","port","pool","makeConnection","conn","Connection","trustServerCertificate","trustServer","connectTimeout","toMillis","fromDurationInputUnsafe","rowCollectionOnRequestCompletion","useColumnNames","instanceName","encrypt","authentication","type","authType","userName","username","password","value","addFinalizer","sync","close","callback","resume","connect","cause","fail","message","void","run","sql","values","rowsAsArray","req","Request","_rowCount","result","map","row","_","rowsToObjects","succeed","i","len","length","name","numberToParamName","isMssqlParam","addParameter","paramA","paramB","paramC","kind","primitiveKind","cancel","execSql","runProcedure","procedure","escape","rows","params","param","outputParams","addOutputParameter","on","callProcedure","connection","execute","executeRaw","executeValues","executeUnprepared","executeStream","die","call","begin","beginTransaction","commit","commitTransaction","savepoint","saveTransaction","rollback","rollbackTransaction","pipe","catch","invalidate","interruptible","forkScoped","makeWithTTL","acquire","min","minConnections","max","maxConnections","timeToLive","connectionTTL","minutes","timeToLiveStrategy","get","tap","mapError","scoped","timeoutOrElse","duration","seconds","onTimeout","Error","withTransaction","makeWithTransaction","transactionService","acquireConnection","scope","makeUnsafe","provide","id","rollbackSavepoint","assign","acquirer","config","fragment","mssqlParam","flatMap","withoutTransforms","statement","withoutTransform","client","safe","layerConfig","effectServices","unwrap","asEffect","add","SqlClient","layer","transform","dialect","placeholder","onIdentifier","onRecordUpdate","placeholders","valueAlias","valueColumns","returning","returningSql","concat","flat","onCustom","onInsert","columns","join","str","replace","n","Math","ceil","string","TYPES","VarChar","number","Int","bigint","BigInt","boolean","Bit","Date","DateTime","Uint8Array","VarBinary","Int8Array","null","custom","isCustom","newRows","Array","newRow","j","columnLen","column","metadata","colName"],"sources":["../src/MssqlClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MssqlClient.js","names":["Config","Context","Duration","Effect","identity","Layer","Pool","Redacted","Scope","Stream","Reactivity","Client","AuthenticationError","AuthorizationError","ConnectionError","ConstraintError","DeadlockError","LockTimeoutError","SerializationError","SqlError","SqlSyntaxError","UnknownError","Statement","Tedious","ATTR_DB_SYSTEM_NAME","ATTR_DB_NAMESPACE","ATTR_SERVER_ADDRESS","ATTR_SERVER_PORT","mssqlNumberFromCause","cause","undefined","number","mssqlConnectionErrorCodes","Set","mssqlAuthenticationErrorCodes","mssqlAuthorizationErrorCodes","mssqlSyntaxErrorCodes","mssqlConstraintErrorCodes","classifyError","message","operation","fallback","props","has","TypeId","Symbol","for","MssqlClient","Service","TransactionConnection","clientIdCounter","make","options","gen","parameterTypes","defaultParameterTypes","compiler","makeCompiler","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","spanAttributes","Object","entries","database","server","port","pool","makeConnection","conn","Connection","trustServerCertificate","trustServer","connectTimeout","toMillis","fromInputUnsafe","rowCollectionOnRequestCompletion","useColumnNames","instanceName","encrypt","authentication","type","authType","userName","username","password","value","addFinalizer","sync","close","callback","resume","connect","fail","reason","void","run","sql","values","rowsAsArray","req","Request","_rowCount","result","map","row","_","rowsToObjects","succeed","i","len","length","name","numberToParamName","isMssqlParam","addParameter","paramA","paramB","paramC","kind","primitiveKind","cancel","execSql","runProcedure","procedure","escape","rows","params","param","outputParams","addOutputParameter","on","callProcedure","connection","execute","executeRaw","executeValues","executeUnprepared","executeStream","die","call","begin","beginTransaction","commit","commitTransaction","savepoint","saveTransaction","rollback","rollbackTransaction","pipe","catch","invalidate","interruptible","forkScoped","makeWithTTL","acquire","min","minConnections","max","maxConnections","timeToLive","connectionTTL","minutes","timeToLiveStrategy","get","tap","mapError","scoped","timeoutOrElse","duration","seconds","orElse","Error","transactionService","withTransaction","makeWithTransaction","acquireConnection","scope","makeUnsafe","provide","id","rollbackSavepoint","assign","acquirer","config","fragment","mssqlParam","flatMap","withoutTransforms","statement","withoutTransform","client","safe","layerConfig","effectContext","unwrap","asEffect","add","SqlClient","layer","transform","dialect","placeholder","onIdentifier","onRecordUpdate","placeholders","valueAlias","valueColumns","returning","returningSql","concat","flat","onCustom","onInsert","columns","join","str","replace","n","Math","ceil","string","TYPES","VarChar","Int","bigint","BigInt","boolean","Bit","Date","DateTime","Uint8Array","VarBinary","Int8Array","null","custom","isCustom","newRows","Array","newRow","j","columnLen","column","metadata","colName"],"sources":["../src/MssqlClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/sql-mssql",
3
- "version": "4.0.0-beta.6",
3
+ "version": "4.0.0-beta.60",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "A Microsoft SQL Server toolkit for Effect",
@@ -43,13 +43,13 @@
43
43
  "provenance": true
44
44
  },
45
45
  "devDependencies": {
46
- "effect": "^4.0.0-beta.6"
46
+ "effect": "^4.0.0-beta.60"
47
47
  },
48
48
  "peerDependencies": {
49
- "effect": "^4.0.0-beta.6"
49
+ "effect": "^4.0.0-beta.60"
50
50
  },
51
51
  "dependencies": {
52
- "tedious": "^19.2.0"
52
+ "tedious": "^19.2.1"
53
53
  },
54
54
  "scripts": {
55
55
  "codegen": "effect-utils codegen",
@@ -2,6 +2,7 @@
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 { identity } from "effect/Function"
@@ -9,12 +10,22 @@ import * as Layer from "effect/Layer"
9
10
  import * as Pool from "effect/Pool"
10
11
  import * as Redacted from "effect/Redacted"
11
12
  import * as Scope from "effect/Scope"
12
- import * as ServiceMap from "effect/ServiceMap"
13
13
  import * as Stream from "effect/Stream"
14
14
  import * as Reactivity from "effect/unstable/reactivity/Reactivity"
15
15
  import * as Client from "effect/unstable/sql/SqlClient"
16
16
  import type { Connection } from "effect/unstable/sql/SqlConnection"
17
- import { SqlError } from "effect/unstable/sql/SqlError"
17
+ import {
18
+ AuthenticationError,
19
+ AuthorizationError,
20
+ ConnectionError,
21
+ ConstraintError,
22
+ DeadlockError,
23
+ LockTimeoutError,
24
+ SerializationError,
25
+ SqlError,
26
+ SqlSyntaxError,
27
+ UnknownError
28
+ } from "effect/unstable/sql/SqlError"
18
29
  import * as Statement from "effect/unstable/sql/Statement"
19
30
  import * as Tedious from "tedious"
20
31
  import type { ConnectionOptions } from "tedious/lib/connection.ts"
@@ -28,6 +39,57 @@ const ATTR_DB_NAMESPACE = "db.namespace"
28
39
  const ATTR_SERVER_ADDRESS = "server.address"
29
40
  const ATTR_SERVER_PORT = "server.port"
30
41
 
42
+ const mssqlNumberFromCause = (cause: unknown): number | undefined => {
43
+ if (typeof cause !== "object" || cause === null || !("number" in cause)) {
44
+ return undefined
45
+ }
46
+ const number = cause.number
47
+ return typeof number === "number" ? number : undefined
48
+ }
49
+
50
+ const mssqlConnectionErrorCodes = new Set([233, 10054])
51
+ const mssqlAuthenticationErrorCodes = new Set([4060, 18452, 18456])
52
+ const mssqlAuthorizationErrorCodes = new Set([229, 230, 262, 297, 300])
53
+ const mssqlSyntaxErrorCodes = new Set([102, 207, 208, 2714])
54
+ const mssqlConstraintErrorCodes = new Set([515, 547, 2601, 2627])
55
+
56
+ const classifyError = (
57
+ cause: unknown,
58
+ message: string,
59
+ operation: string,
60
+ fallback: "connection" | "unknown" = "unknown"
61
+ ) => {
62
+ const props = { cause, message, operation }
63
+ const number = mssqlNumberFromCause(cause)
64
+ if (number !== undefined) {
65
+ if (mssqlConnectionErrorCodes.has(number)) {
66
+ return new ConnectionError(props)
67
+ }
68
+ if (mssqlAuthenticationErrorCodes.has(number)) {
69
+ return new AuthenticationError(props)
70
+ }
71
+ if (mssqlAuthorizationErrorCodes.has(number)) {
72
+ return new AuthorizationError(props)
73
+ }
74
+ if (mssqlSyntaxErrorCodes.has(number)) {
75
+ return new SqlSyntaxError(props)
76
+ }
77
+ if (mssqlConstraintErrorCodes.has(number)) {
78
+ return new ConstraintError(props)
79
+ }
80
+ if (number === 1205) {
81
+ return new DeadlockError(props)
82
+ }
83
+ if (number === 3960) {
84
+ return new SerializationError(props)
85
+ }
86
+ if (number === 1222) {
87
+ return new LockTimeoutError(props)
88
+ }
89
+ }
90
+ return fallback === "connection" ? new ConnectionError(props) : new UnknownError(props)
91
+ }
92
+
31
93
  /**
32
94
  * @category type ids
33
95
  * @since 1.0.0
@@ -68,7 +130,7 @@ export interface MssqlClient extends Client.SqlClient {
68
130
  * @category tags
69
131
  * @since 1.0.0
70
132
  */
71
- export const MssqlClient = ServiceMap.Service<MssqlClient>("@effect/sql-mssql/MssqlClient")
133
+ export const MssqlClient = Context.Service<MssqlClient>("@effect/sql-mssql/MssqlClient")
72
134
 
73
135
  /**
74
136
  * @category models
@@ -85,11 +147,11 @@ export interface MssqlClientConfig {
85
147
  readonly database?: string | undefined
86
148
  readonly username?: string | undefined
87
149
  readonly password?: Redacted.Redacted | undefined
88
- readonly connectTimeout?: Duration.DurationInput | undefined
150
+ readonly connectTimeout?: Duration.Input | undefined
89
151
 
90
152
  readonly minConnections?: number | undefined
91
153
  readonly maxConnections?: number | undefined
92
- readonly connectionTTL?: Duration.DurationInput | undefined
154
+ readonly connectionTTL?: Duration.Input | undefined
93
155
 
94
156
  readonly parameterTypes?: Record<Statement.PrimitiveKind, DataType> | undefined
95
157
 
@@ -111,11 +173,13 @@ interface MssqlConnection extends Connection {
111
173
  readonly rollback: (name?: string) => Effect.Effect<void, SqlError>
112
174
  }
113
175
 
114
- const TransactionConnection = Client.TransactionConnection as unknown as ServiceMap.Service<
176
+ const TransactionConnection = Client.TransactionConnection as unknown as (clientId: number) => Context.Service<
115
177
  readonly [conn: MssqlConnection, counter: number],
116
178
  readonly [conn: MssqlConnection, counter: number]
117
179
  >
118
180
 
181
+ let clientIdCounter = 0
182
+
119
183
  /**
120
184
  * @category constructors
121
185
  * @since 1.0.0
@@ -150,7 +214,7 @@ export const make = (
150
214
  database: options.database,
151
215
  trustServerCertificate: options.trustServer ?? true,
152
216
  connectTimeout: options.connectTimeout
153
- ? Duration.toMillis(Duration.fromDurationInputUnsafe(options.connectTimeout))
217
+ ? Duration.toMillis(Duration.fromInputUnsafe(options.connectTimeout))
154
218
  : undefined,
155
219
  rowCollectionOnRequestCompletion: true,
156
220
  useColumnNames: false,
@@ -174,7 +238,9 @@ export const make = (
174
238
  yield* Effect.callback<void, SqlError>((resume) => {
175
239
  conn.connect((cause) => {
176
240
  if (cause) {
177
- resume(Effect.fail(new SqlError({ cause, message: "Failed to connect" })))
241
+ resume(
242
+ Effect.fail(new SqlError({ reason: classifyError(cause, "Failed to connect", "connect", "connection") }))
243
+ )
178
244
  } else {
179
245
  resume(Effect.void)
180
246
  }
@@ -189,7 +255,9 @@ export const make = (
189
255
  Effect.callback<any, SqlError>((resume) => {
190
256
  const req = new Tedious.Request(sql, (cause, _rowCount, result) => {
191
257
  if (cause) {
192
- resume(Effect.fail(new SqlError({ cause, message: "Failed to execute statement" })))
258
+ resume(
259
+ Effect.fail(new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") }))
260
+ )
193
261
  return
194
262
  }
195
263
 
@@ -232,7 +300,9 @@ export const make = (
232
300
  escape(procedure.name),
233
301
  (cause, _, rows) => {
234
302
  if (cause) {
235
- resume(Effect.fail(new SqlError({ cause, message: "Failed to execute statement" })))
303
+ resume(
304
+ Effect.fail(new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") }))
305
+ )
236
306
  } else {
237
307
  rows = rowsToObjects(rows)
238
308
  if (transformRows) {
@@ -291,7 +361,13 @@ export const make = (
291
361
  begin: Effect.callback<void, SqlError>((resume) => {
292
362
  conn.beginTransaction((cause) => {
293
363
  if (cause) {
294
- resume(Effect.fail(new SqlError({ cause, message: "Failed to begin transaction" })))
364
+ resume(
365
+ Effect.fail(
366
+ new SqlError({
367
+ reason: classifyError(cause, "Failed to begin transaction", "beginTransaction")
368
+ })
369
+ )
370
+ )
295
371
  } else {
296
372
  resume(Effect.void)
297
373
  }
@@ -300,7 +376,13 @@ export const make = (
300
376
  commit: Effect.callback<void, SqlError>((resume) => {
301
377
  conn.commitTransaction((cause) => {
302
378
  if (cause) {
303
- resume(Effect.fail(new SqlError({ cause, message: "Failed to commit transaction" })))
379
+ resume(
380
+ Effect.fail(
381
+ new SqlError({
382
+ reason: classifyError(cause, "Failed to commit transaction", "commitTransaction")
383
+ })
384
+ )
385
+ )
304
386
  } else {
305
387
  resume(Effect.void)
306
388
  }
@@ -310,7 +392,11 @@ export const make = (
310
392
  Effect.callback<void, SqlError>((resume) => {
311
393
  conn.saveTransaction((cause) => {
312
394
  if (cause) {
313
- resume(Effect.fail(new SqlError({ cause, message: "Failed to create savepoint" })))
395
+ resume(
396
+ Effect.fail(
397
+ new SqlError({ reason: classifyError(cause, "Failed to create savepoint", "createSavepoint") })
398
+ )
399
+ )
314
400
  } else {
315
401
  resume(Effect.void)
316
402
  }
@@ -320,7 +406,13 @@ export const make = (
320
406
  Effect.callback<void, SqlError>((resume) => {
321
407
  conn.rollbackTransaction((cause) => {
322
408
  if (cause) {
323
- resume(Effect.fail(new SqlError({ cause, message: "Failed to rollback transaction" })))
409
+ resume(
410
+ Effect.fail(
411
+ new SqlError({
412
+ reason: classifyError(cause, "Failed to rollback transaction", "rollbackTransaction")
413
+ })
414
+ )
415
+ )
324
416
  } else {
325
417
  resume(Effect.void)
326
418
  }
@@ -349,22 +441,29 @@ export const make = (
349
441
 
350
442
  yield* Pool.get(pool).pipe(
351
443
  Effect.tap((connection) => connection.executeUnprepared("SELECT 1", [], undefined)),
352
- Effect.mapError(({ cause }) => new SqlError({ cause, message: "MssqlClient: Failed to connect" })),
444
+ Effect.mapError((cause) =>
445
+ new SqlError({ reason: classifyError(cause, "MssqlClient: Failed to connect", "connect", "connection") })
446
+ ),
353
447
  Effect.scoped,
354
448
  Effect.timeoutOrElse({
355
449
  duration: options.connectTimeout ?? Duration.seconds(5),
356
- onTimeout: () =>
450
+ orElse: () =>
357
451
  Effect.fail(
358
452
  new SqlError({
359
- message: "MssqlClient: Connection timeout",
360
- cause: new Error("connection timeout")
453
+ reason: new ConnectionError({
454
+ message: "MssqlClient: Connection timeout",
455
+ cause: new Error("connection timeout"),
456
+ operation: "connect"
457
+ })
361
458
  })
362
459
  )
363
460
  })
364
461
  )
365
462
 
463
+ const transactionService = TransactionConnection(clientIdCounter++)
464
+
366
465
  const withTransaction = Client.makeWithTransaction({
367
- transactionService: TransactionConnection,
466
+ transactionService,
368
467
  spanAttributes,
369
468
  acquireConnection: Effect.gen(function*() {
370
469
  const scope = Scope.makeUnsafe()
@@ -382,6 +481,7 @@ export const make = (
382
481
  yield* Client.make({
383
482
  acquirer: Pool.get(pool),
384
483
  compiler,
484
+ transactionService: transactionService as any,
385
485
  spanAttributes,
386
486
  transformRows
387
487
  }),
@@ -434,12 +534,12 @@ export const layerConfig: (
434
534
  ) => Layer.Layer<Client.SqlClient | MssqlClient, Config.ConfigError | SqlError> = (
435
535
  config: Config.Wrap<MssqlClientConfig>
436
536
  ): Layer.Layer<Client.SqlClient | MssqlClient, Config.ConfigError | SqlError> =>
437
- Layer.effectServices(
537
+ Layer.effectContext(
438
538
  Config.unwrap(config).asEffect().pipe(
439
539
  Effect.flatMap(make),
440
540
  Effect.map((client) =>
441
- ServiceMap.make(MssqlClient, client).pipe(
442
- ServiceMap.add(Client.SqlClient, client)
541
+ Context.make(MssqlClient, client).pipe(
542
+ Context.add(Client.SqlClient, client)
443
543
  )
444
544
  )
445
545
  )
@@ -452,10 +552,10 @@ export const layerConfig: (
452
552
  export const layer = (
453
553
  config: MssqlClientConfig
454
554
  ): Layer.Layer<Client.SqlClient | MssqlClient, never | SqlError> =>
455
- Layer.effectServices(
555
+ Layer.effectContext(
456
556
  Effect.map(make(config), (client) =>
457
- ServiceMap.make(MssqlClient, client).pipe(
458
- ServiceMap.add(Client.SqlClient, client)
557
+ Context.make(MssqlClient, client).pipe(
558
+ Context.add(Client.SqlClient, client)
459
559
  ))
460
560
  ).pipe(Layer.provide(Reactivity.layer))
461
561