@effect/sql-sqlite-node 4.0.0-beta.4 → 4.0.0-beta.40
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/SqliteClient.d.ts +1 -1
- package/dist/SqliteClient.d.ts.map +1 -1
- package/dist/SqliteClient.js +13 -14
- package/dist/SqliteClient.js.map +1 -1
- package/package.json +4 -4
- package/src/SqliteClient.ts +14 -9
package/dist/SqliteClient.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export interface SqliteClientConfig {
|
|
|
51
51
|
readonly filename: string;
|
|
52
52
|
readonly readonly?: boolean | undefined;
|
|
53
53
|
readonly prepareCacheSize?: number | undefined;
|
|
54
|
-
readonly prepareCacheTTL?: Duration.
|
|
54
|
+
readonly prepareCacheTTL?: Duration.Input | undefined;
|
|
55
55
|
readonly disableWAL?: boolean | undefined;
|
|
56
56
|
readonly spanAttributes?: Record<string, unknown> | undefined;
|
|
57
57
|
readonly transformResultNames?: ((str: string) => string) | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"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"}
|
package/dist/SqliteClient.js
CHANGED
|
@@ -10,13 +10,18 @@ import * as Fiber from "effect/Fiber";
|
|
|
10
10
|
import { identity } from "effect/Function";
|
|
11
11
|
import * as Layer from "effect/Layer";
|
|
12
12
|
import * as Scope from "effect/Scope";
|
|
13
|
+
import * as Semaphore from "effect/Semaphore";
|
|
13
14
|
import * as ServiceMap from "effect/ServiceMap";
|
|
14
15
|
import * as Stream from "effect/Stream";
|
|
15
16
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
16
17
|
import * as Client from "effect/unstable/sql/SqlClient";
|
|
17
|
-
import { SqlError } from "effect/unstable/sql/SqlError";
|
|
18
|
+
import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError";
|
|
18
19
|
import * as Statement from "effect/unstable/sql/Statement";
|
|
19
20
|
const ATTR_DB_SYSTEM_NAME = "db.system.name";
|
|
21
|
+
const classifyError = (cause, message, operation) => classifySqliteError(cause, {
|
|
22
|
+
message,
|
|
23
|
+
operation
|
|
24
|
+
});
|
|
20
25
|
/**
|
|
21
26
|
* @category type ids
|
|
22
27
|
* @since 1.0.0
|
|
@@ -49,8 +54,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
49
54
|
lookup: sql => Effect.try({
|
|
50
55
|
try: () => db.prepare(sql),
|
|
51
56
|
catch: cause => new SqlError({
|
|
52
|
-
cause,
|
|
53
|
-
message: "Failed to prepare statement "
|
|
57
|
+
reason: classifyError(cause, "Failed to prepare statement", "prepare")
|
|
54
58
|
})
|
|
55
59
|
})
|
|
56
60
|
});
|
|
@@ -66,8 +70,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
66
70
|
return Effect.succeed(raw ? result : []);
|
|
67
71
|
} catch (cause) {
|
|
68
72
|
return Effect.fail(new SqlError({
|
|
69
|
-
cause,
|
|
70
|
-
message: "Failed to execute statement"
|
|
73
|
+
reason: classifyError(cause, "Failed to execute statement", "execute")
|
|
71
74
|
}));
|
|
72
75
|
}
|
|
73
76
|
});
|
|
@@ -82,8 +85,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
82
85
|
return [];
|
|
83
86
|
},
|
|
84
87
|
catch: cause => new SqlError({
|
|
85
|
-
cause,
|
|
86
|
-
message: "Failed to execute statement"
|
|
88
|
+
reason: classifyError(cause, "Failed to execute statement", "execute")
|
|
87
89
|
})
|
|
88
90
|
}), statement => Effect.sync(() => statement.reader && statement.raw(false)));
|
|
89
91
|
return identity({
|
|
@@ -106,16 +108,14 @@ export const make = options => Effect.gen(function* () {
|
|
|
106
108
|
export: Effect.try({
|
|
107
109
|
try: () => db.serialize(),
|
|
108
110
|
catch: cause => new SqlError({
|
|
109
|
-
cause,
|
|
110
|
-
message: "Failed to export database"
|
|
111
|
+
reason: classifyError(cause, "Failed to export database", "export")
|
|
111
112
|
})
|
|
112
113
|
}),
|
|
113
114
|
backup(destination) {
|
|
114
115
|
return Effect.tryPromise({
|
|
115
116
|
try: () => db.backup(destination),
|
|
116
117
|
catch: cause => new SqlError({
|
|
117
|
-
cause,
|
|
118
|
-
message: "Failed to backup database"
|
|
118
|
+
reason: classifyError(cause, "Failed to backup database", "backup")
|
|
119
119
|
})
|
|
120
120
|
});
|
|
121
121
|
},
|
|
@@ -123,14 +123,13 @@ export const make = options => Effect.gen(function* () {
|
|
|
123
123
|
return Effect.try({
|
|
124
124
|
try: () => db.loadExtension(path),
|
|
125
125
|
catch: cause => new SqlError({
|
|
126
|
-
cause,
|
|
127
|
-
message: "Failed to load extension"
|
|
126
|
+
reason: classifyError(cause, "Failed to load extension", "loadExtension")
|
|
128
127
|
})
|
|
129
128
|
});
|
|
130
129
|
}
|
|
131
130
|
});
|
|
132
131
|
});
|
|
133
|
-
const semaphore = yield*
|
|
132
|
+
const semaphore = yield* Semaphore.make(1);
|
|
134
133
|
const connection = yield* makeConnection;
|
|
135
134
|
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
|
|
136
135
|
const transactionAcquirer = Effect.uninterruptibleMask(restore => {
|
package/dist/SqliteClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteClient.js","names":["Sqlite","Cache","Config","Duration","Effect","Fiber","identity","Layer","Scope","ServiceMap","Stream","Reactivity","Client","SqlError","Statement","ATTR_DB_SYSTEM_NAME","TypeId","SqliteClient","Service","make","options","gen","compiler","makeCompilerSqlite","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","makeConnection","scope","db","filename","readonly","addFinalizer","sync","close","disableWAL","pragma","prepareCache","capacity","prepareCacheSize","timeToLive","prepareCacheTTL","minutes","lookup","sql","try","prepare","catch","
|
|
1
|
+
{"version":3,"file":"SqliteClient.js","names":["Sqlite","Cache","Config","Duration","Effect","Fiber","identity","Layer","Scope","Semaphore","ServiceMap","Stream","Reactivity","Client","classifySqliteError","SqlError","Statement","ATTR_DB_SYSTEM_NAME","classifyError","cause","message","operation","TypeId","SqliteClient","Service","make","options","gen","compiler","makeCompilerSqlite","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","makeConnection","scope","db","filename","readonly","addFinalizer","sync","close","disableWAL","pragma","prepareCache","capacity","prepareCacheSize","timeToLive","prepareCacheTTL","minutes","lookup","sql","try","prepare","catch","reason","runStatement","statement","params","raw","withFiber","fiber","get","services","SafeIntegers","safeIntegers","reader","succeed","all","result","run","fail","flatMap","s","runValues","acquireUseRelease","execute","map","executeRaw","executeValues","executeUnprepared","effect","executeStream","_sql","_params","die","export","serialize","backup","destination","tryPromise","loadExtension","path","semaphore","connection","acquirer","withPermits","transactionAcquirer","uninterruptibleMask","restore","getCurrent","getUnsafe","as","tap","take","release","Object","assign","spanAttributes","entries","config","_","layerConfig","effectServices","unwrap","asEffect","pipe","client","add","SqlClient","provide","layer"],"sources":["../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/sql-sqlite-node",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.40",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "A SQLite toolkit for Effect",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/better-sqlite3": "^7.6.13",
|
|
47
|
-
"effect": "^4.0.0-beta.
|
|
48
|
-
"
|
|
47
|
+
"@effect/platform-node": "^4.0.0-beta.40",
|
|
48
|
+
"effect": "^4.0.0-beta.40"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
|
-
"effect": "^4.0.0-beta.
|
|
51
|
+
"effect": "^4.0.0-beta.40"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"better-sqlite3": "^12.6.2"
|
package/src/SqliteClient.ts
CHANGED
|
@@ -10,16 +10,20 @@ import * as Fiber from "effect/Fiber"
|
|
|
10
10
|
import { identity } from "effect/Function"
|
|
11
11
|
import * as Layer from "effect/Layer"
|
|
12
12
|
import * as Scope from "effect/Scope"
|
|
13
|
+
import * as Semaphore from "effect/Semaphore"
|
|
13
14
|
import * as ServiceMap from "effect/ServiceMap"
|
|
14
15
|
import * as Stream from "effect/Stream"
|
|
15
16
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity"
|
|
16
17
|
import * as Client from "effect/unstable/sql/SqlClient"
|
|
17
18
|
import type { Connection } from "effect/unstable/sql/SqlConnection"
|
|
18
|
-
import { SqlError } from "effect/unstable/sql/SqlError"
|
|
19
|
+
import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
|
|
19
20
|
import * as Statement from "effect/unstable/sql/Statement"
|
|
20
21
|
|
|
21
22
|
const ATTR_DB_SYSTEM_NAME = "db.system.name"
|
|
22
23
|
|
|
24
|
+
const classifyError = (cause: unknown, message: string, operation: string) =>
|
|
25
|
+
classifySqliteError(cause, { message, operation })
|
|
26
|
+
|
|
23
27
|
/**
|
|
24
28
|
* @category type ids
|
|
25
29
|
* @since 1.0.0
|
|
@@ -70,7 +74,7 @@ export interface SqliteClientConfig {
|
|
|
70
74
|
readonly filename: string
|
|
71
75
|
readonly readonly?: boolean | undefined
|
|
72
76
|
readonly prepareCacheSize?: number | undefined
|
|
73
|
-
readonly prepareCacheTTL?: Duration.
|
|
77
|
+
readonly prepareCacheTTL?: Duration.Input | undefined
|
|
74
78
|
readonly disableWAL?: boolean | undefined
|
|
75
79
|
readonly spanAttributes?: Record<string, unknown> | undefined
|
|
76
80
|
|
|
@@ -116,7 +120,7 @@ export const make = (
|
|
|
116
120
|
lookup: (sql: string) =>
|
|
117
121
|
Effect.try({
|
|
118
122
|
try: () => db.prepare(sql),
|
|
119
|
-
catch: (cause) => new SqlError({ cause,
|
|
123
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to prepare statement", "prepare") })
|
|
120
124
|
})
|
|
121
125
|
})
|
|
122
126
|
|
|
@@ -136,7 +140,7 @@ export const make = (
|
|
|
136
140
|
const result = statement.run(...params)
|
|
137
141
|
return Effect.succeed(raw ? result as unknown as ReadonlyArray<any> : [])
|
|
138
142
|
} catch (cause) {
|
|
139
|
-
return Effect.fail(new SqlError({ cause,
|
|
143
|
+
return Effect.fail(new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") }))
|
|
140
144
|
}
|
|
141
145
|
})
|
|
142
146
|
|
|
@@ -168,7 +172,7 @@ export const make = (
|
|
|
168
172
|
statement.run(...params)
|
|
169
173
|
return []
|
|
170
174
|
},
|
|
171
|
-
catch: (cause) => new SqlError({ cause,
|
|
175
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
|
|
172
176
|
}),
|
|
173
177
|
(statement) => Effect.sync(() => statement.reader && statement.raw(false))
|
|
174
178
|
)
|
|
@@ -194,24 +198,25 @@ export const make = (
|
|
|
194
198
|
},
|
|
195
199
|
export: Effect.try({
|
|
196
200
|
try: () => db.serialize(),
|
|
197
|
-
catch: (cause) => new SqlError({ cause,
|
|
201
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to export database", "export") })
|
|
198
202
|
}),
|
|
199
203
|
backup(destination) {
|
|
200
204
|
return Effect.tryPromise({
|
|
201
205
|
try: () => db.backup(destination),
|
|
202
|
-
catch: (cause) => new SqlError({ cause,
|
|
206
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to backup database", "backup") })
|
|
203
207
|
})
|
|
204
208
|
},
|
|
205
209
|
loadExtension(path) {
|
|
206
210
|
return Effect.try({
|
|
207
211
|
try: () => db.loadExtension(path),
|
|
208
|
-
catch: (cause) =>
|
|
212
|
+
catch: (cause) =>
|
|
213
|
+
new SqlError({ reason: classifyError(cause, "Failed to load extension", "loadExtension") })
|
|
209
214
|
})
|
|
210
215
|
}
|
|
211
216
|
})
|
|
212
217
|
})
|
|
213
218
|
|
|
214
|
-
const semaphore = yield*
|
|
219
|
+
const semaphore = yield* Semaphore.make(1)
|
|
215
220
|
const connection = yield* makeConnection
|
|
216
221
|
|
|
217
222
|
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection))
|