@effect/sql-sqlite-node 0.12.1 → 0.12.3
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/cjs/SqliteClient.js
CHANGED
|
@@ -38,18 +38,19 @@ const SqliteClient = exports.SqliteClient = /*#__PURE__*/Context.GenericTag("@ef
|
|
|
38
38
|
* @category constructor
|
|
39
39
|
* @since 1.0.0
|
|
40
40
|
*/
|
|
41
|
-
const make = options => Effect.gen(function* (
|
|
41
|
+
const make = options => Effect.gen(function* () {
|
|
42
42
|
const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);
|
|
43
43
|
const transformRows = Statement.defaultTransforms(options.transformResultNames).array;
|
|
44
|
-
const makeConnection = Effect.gen(function* (
|
|
44
|
+
const makeConnection = Effect.gen(function* () {
|
|
45
|
+
const scope = yield* Effect.scope;
|
|
45
46
|
const db = new _betterSqlite.default(options.filename, {
|
|
46
47
|
readonly: options.readonly ?? false
|
|
47
48
|
});
|
|
48
|
-
yield*
|
|
49
|
+
yield* Scope.addFinalizer(scope, Effect.sync(() => db.close()));
|
|
49
50
|
if (options.disableWAL !== true) {
|
|
50
51
|
db.pragma("journal_mode = WAL");
|
|
51
52
|
}
|
|
52
|
-
const prepareCache = yield*
|
|
53
|
+
const prepareCache = yield* Cache.make({
|
|
53
54
|
capacity: options.prepareCacheSize ?? 200,
|
|
54
55
|
timeToLive: options.prepareCacheTTL ?? Duration.minutes(10),
|
|
55
56
|
lookup: sql => Effect.try({
|
|
@@ -59,22 +60,21 @@ const make = options => Effect.gen(function* (_) {
|
|
|
59
60
|
message: "Failed to prepare statement"
|
|
60
61
|
})
|
|
61
62
|
})
|
|
62
|
-
})
|
|
63
|
-
const runStatement = (statement, params
|
|
63
|
+
});
|
|
64
|
+
const runStatement = (statement, params, raw) => Effect.try({
|
|
64
65
|
try: () => {
|
|
65
66
|
if (statement.reader) {
|
|
66
67
|
return statement.all(...params);
|
|
67
68
|
}
|
|
68
|
-
statement.run(...params);
|
|
69
|
-
return [];
|
|
69
|
+
const result = statement.run(...params);
|
|
70
|
+
return raw ? result : [];
|
|
70
71
|
},
|
|
71
72
|
catch: cause => new _SqlError.SqlError({
|
|
72
73
|
cause,
|
|
73
74
|
message: "Failed to execute statement"
|
|
74
75
|
})
|
|
75
76
|
});
|
|
76
|
-
const run = (sql, params =
|
|
77
|
-
const runUnprepared = (sql, params = []) => Effect.map(runStatement(db.prepare(sql), params), transformRows);
|
|
77
|
+
const run = (sql, params, raw = false) => Effect.flatMap(prepareCache.get(sql), s => runStatement(s, params, raw));
|
|
78
78
|
const runTransform = options.transformResultNames ? (sql, params) => Effect.map(run(sql, params), transformRows) : run;
|
|
79
79
|
const runValues = (sql, params) => Effect.acquireUseRelease(prepareCache.get(sql), statement => Effect.try({
|
|
80
80
|
try: () => {
|
|
@@ -95,7 +95,7 @@ const make = options => Effect.gen(function* (_) {
|
|
|
95
95
|
return runTransform(sql, params);
|
|
96
96
|
},
|
|
97
97
|
executeRaw(sql, params) {
|
|
98
|
-
return run(sql, params);
|
|
98
|
+
return run(sql, params, true);
|
|
99
99
|
},
|
|
100
100
|
executeValues(sql, params) {
|
|
101
101
|
return runValues(sql, params);
|
|
@@ -104,7 +104,7 @@ const make = options => Effect.gen(function* (_) {
|
|
|
104
104
|
return run(sql, params);
|
|
105
105
|
},
|
|
106
106
|
executeUnprepared(sql, params) {
|
|
107
|
-
return
|
|
107
|
+
return Effect.map(runStatement(db.prepare(sql), params ?? [], false), transformRows);
|
|
108
108
|
},
|
|
109
109
|
executeStream(_sql, _params) {
|
|
110
110
|
return Effect.dieMessage("executeStream not implemented");
|
|
@@ -136,8 +136,8 @@ const make = options => Effect.gen(function* (_) {
|
|
|
136
136
|
}
|
|
137
137
|
});
|
|
138
138
|
});
|
|
139
|
-
const semaphore = yield*
|
|
140
|
-
const connection = yield*
|
|
139
|
+
const semaphore = yield* Effect.makeSemaphore(1);
|
|
140
|
+
const connection = yield* makeConnection;
|
|
141
141
|
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
|
|
142
142
|
const transactionAcquirer = Effect.uninterruptibleMask(restore => Effect.as(Effect.zipRight(restore(semaphore.take(1)), Effect.tap(Effect.scope, scope => Scope.addFinalizer(scope, semaphore.release(1)))), connection));
|
|
143
143
|
return Object.assign(Client.make({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteClient.js","names":["Client","_interopRequireWildcard","require","_SqlError","Statement","Otel","_betterSqlite","_interopRequireDefault","Cache","Config","Context","Duration","Effect","_Function","Layer","Scope","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TypeId","exports","Symbol","for","SqliteClient","GenericTag","make","options","gen","
|
|
1
|
+
{"version":3,"file":"SqliteClient.js","names":["Client","_interopRequireWildcard","require","_SqlError","Statement","Otel","_betterSqlite","_interopRequireDefault","Cache","Config","Context","Duration","Effect","_Function","Layer","Scope","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TypeId","exports","Symbol","for","SqliteClient","GenericTag","make","options","gen","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","makeConnection","scope","db","Sqlite","filename","readonly","addFinalizer","sync","close","disableWAL","pragma","prepareCache","capacity","prepareCacheSize","timeToLive","prepareCacheTTL","minutes","lookup","sql","try","prepare","catch","cause","SqlError","message","runStatement","statement","params","raw","reader","all","result","run","flatMap","s","runTransform","map","runValues","acquireUseRelease","identity","execute","executeRaw","executeValues","executeWithoutTransform","executeUnprepared","executeStream","_sql","_params","dieMessage","export","serialize","backup","destination","tryPromise","loadExtension","path","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","tap","release","assign","spanAttributes","entries","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","_","layer","scopedContext","unwrap","pipe","client","add","SqlClient"],"sources":["../../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../../src/SqliteClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAK/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAA2D,CAAA;AAEvF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,SAAS;IACpD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACpD,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;IACjF,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAEvE,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,yCAA2E,CAAA;AAEpG;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9C,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAA;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAE7D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;CACrE;AAQD;;;GAGG;AACH,eAAO,MAAM,IAAI,YACN,kBAAkB,KAC1B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../../src/SqliteClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAK/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAA2D,CAAA;AAEvF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,SAAS;IACpD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACpD,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAA;IACjF,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAEvE,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,yCAA2E,CAAA;AAEpG;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9C,QAAQ,CAAC,eAAe,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAA;IAC7D,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;IAE7D,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;IACrE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;CACrE;AAQD;;;GAGG;AACH,eAAO,MAAM,IAAI,YACN,kBAAkB,KAC1B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAiK7C,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,KAAK,WACR,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAC7C,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,WAAW,CAUxD,CAAA"}
|
package/dist/esm/SqliteClient.js
CHANGED
|
@@ -28,18 +28,19 @@ export const SqliteClient = /*#__PURE__*/Context.GenericTag("@effect/sql-sqlite-
|
|
|
28
28
|
* @category constructor
|
|
29
29
|
* @since 1.0.0
|
|
30
30
|
*/
|
|
31
|
-
export const make = options => Effect.gen(function* (
|
|
31
|
+
export const make = options => Effect.gen(function* () {
|
|
32
32
|
const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);
|
|
33
33
|
const transformRows = Statement.defaultTransforms(options.transformResultNames).array;
|
|
34
|
-
const makeConnection = Effect.gen(function* (
|
|
34
|
+
const makeConnection = Effect.gen(function* () {
|
|
35
|
+
const scope = yield* Effect.scope;
|
|
35
36
|
const db = new Sqlite(options.filename, {
|
|
36
37
|
readonly: options.readonly ?? false
|
|
37
38
|
});
|
|
38
|
-
yield*
|
|
39
|
+
yield* Scope.addFinalizer(scope, Effect.sync(() => db.close()));
|
|
39
40
|
if (options.disableWAL !== true) {
|
|
40
41
|
db.pragma("journal_mode = WAL");
|
|
41
42
|
}
|
|
42
|
-
const prepareCache = yield*
|
|
43
|
+
const prepareCache = yield* Cache.make({
|
|
43
44
|
capacity: options.prepareCacheSize ?? 200,
|
|
44
45
|
timeToLive: options.prepareCacheTTL ?? Duration.minutes(10),
|
|
45
46
|
lookup: sql => Effect.try({
|
|
@@ -49,22 +50,21 @@ export const make = options => Effect.gen(function* (_) {
|
|
|
49
50
|
message: "Failed to prepare statement"
|
|
50
51
|
})
|
|
51
52
|
})
|
|
52
|
-
})
|
|
53
|
-
const runStatement = (statement, params
|
|
53
|
+
});
|
|
54
|
+
const runStatement = (statement, params, raw) => Effect.try({
|
|
54
55
|
try: () => {
|
|
55
56
|
if (statement.reader) {
|
|
56
57
|
return statement.all(...params);
|
|
57
58
|
}
|
|
58
|
-
statement.run(...params);
|
|
59
|
-
return [];
|
|
59
|
+
const result = statement.run(...params);
|
|
60
|
+
return raw ? result : [];
|
|
60
61
|
},
|
|
61
62
|
catch: cause => new SqlError({
|
|
62
63
|
cause,
|
|
63
64
|
message: "Failed to execute statement"
|
|
64
65
|
})
|
|
65
66
|
});
|
|
66
|
-
const run = (sql, params =
|
|
67
|
-
const runUnprepared = (sql, params = []) => Effect.map(runStatement(db.prepare(sql), params), transformRows);
|
|
67
|
+
const run = (sql, params, raw = false) => Effect.flatMap(prepareCache.get(sql), s => runStatement(s, params, raw));
|
|
68
68
|
const runTransform = options.transformResultNames ? (sql, params) => Effect.map(run(sql, params), transformRows) : run;
|
|
69
69
|
const runValues = (sql, params) => Effect.acquireUseRelease(prepareCache.get(sql), statement => Effect.try({
|
|
70
70
|
try: () => {
|
|
@@ -85,7 +85,7 @@ export const make = options => Effect.gen(function* (_) {
|
|
|
85
85
|
return runTransform(sql, params);
|
|
86
86
|
},
|
|
87
87
|
executeRaw(sql, params) {
|
|
88
|
-
return run(sql, params);
|
|
88
|
+
return run(sql, params, true);
|
|
89
89
|
},
|
|
90
90
|
executeValues(sql, params) {
|
|
91
91
|
return runValues(sql, params);
|
|
@@ -94,7 +94,7 @@ export const make = options => Effect.gen(function* (_) {
|
|
|
94
94
|
return run(sql, params);
|
|
95
95
|
},
|
|
96
96
|
executeUnprepared(sql, params) {
|
|
97
|
-
return
|
|
97
|
+
return Effect.map(runStatement(db.prepare(sql), params ?? [], false), transformRows);
|
|
98
98
|
},
|
|
99
99
|
executeStream(_sql, _params) {
|
|
100
100
|
return Effect.dieMessage("executeStream not implemented");
|
|
@@ -126,8 +126,8 @@ export const make = options => Effect.gen(function* (_) {
|
|
|
126
126
|
}
|
|
127
127
|
});
|
|
128
128
|
});
|
|
129
|
-
const semaphore = yield*
|
|
130
|
-
const connection = yield*
|
|
129
|
+
const semaphore = yield* Effect.makeSemaphore(1);
|
|
130
|
+
const connection = yield* makeConnection;
|
|
131
131
|
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
|
|
132
132
|
const transactionAcquirer = Effect.uninterruptibleMask(restore => Effect.as(Effect.zipRight(restore(semaphore.take(1)), Effect.tap(Effect.scope, scope => Scope.addFinalizer(scope, semaphore.release(1)))), connection));
|
|
133
133
|
return Object.assign(Client.make({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteClient.js","names":["Client","SqlError","Statement","Otel","Sqlite","Cache","Config","Context","Duration","Effect","identity","Layer","Scope","TypeId","Symbol","for","SqliteClient","GenericTag","make","options","gen","
|
|
1
|
+
{"version":3,"file":"SqliteClient.js","names":["Client","SqlError","Statement","Otel","Sqlite","Cache","Config","Context","Duration","Effect","identity","Layer","Scope","TypeId","Symbol","for","SqliteClient","GenericTag","make","options","gen","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","makeConnection","scope","db","filename","readonly","addFinalizer","sync","close","disableWAL","pragma","prepareCache","capacity","prepareCacheSize","timeToLive","prepareCacheTTL","minutes","lookup","sql","try","prepare","catch","cause","message","runStatement","statement","params","raw","reader","all","result","run","flatMap","get","s","runTransform","map","runValues","acquireUseRelease","execute","executeRaw","executeValues","executeWithoutTransform","executeUnprepared","executeStream","_sql","_params","dieMessage","export","serialize","backup","destination","tryPromise","loadExtension","path","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","tap","release","Object","assign","spanAttributes","entries","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","_","layer","scopedContext","unwrap","pipe","client","add","SqlClient"],"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": "0.12.
|
|
3
|
+
"version": "0.12.3",
|
|
4
4
|
"description": "A SQLite toolkit for Effect",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
"better-sqlite3": "^11.1.2"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
|
-
"@effect/platform": "^0.65.
|
|
18
|
-
"@effect/sql": "^0.12.
|
|
19
|
-
"effect": "^3.8.
|
|
17
|
+
"@effect/platform": "^0.65.3",
|
|
18
|
+
"@effect/sql": "^0.12.3",
|
|
19
|
+
"effect": "^3.8.2"
|
|
20
20
|
},
|
|
21
21
|
"publishConfig": {
|
|
22
22
|
"provenance": true
|
package/src/SqliteClient.ts
CHANGED
|
@@ -88,61 +88,65 @@ interface SqliteConnection extends Connection {
|
|
|
88
88
|
export const make = (
|
|
89
89
|
options: SqliteClientConfig
|
|
90
90
|
): Effect.Effect<SqliteClient, never, Scope.Scope> =>
|
|
91
|
-
Effect.gen(function*(
|
|
91
|
+
Effect.gen(function*() {
|
|
92
92
|
const compiler = Statement.makeCompilerSqlite(options.transformQueryNames)
|
|
93
93
|
const transformRows = Statement.defaultTransforms(
|
|
94
94
|
options.transformResultNames!
|
|
95
95
|
).array
|
|
96
96
|
|
|
97
|
-
const makeConnection = Effect.gen(function*(
|
|
97
|
+
const makeConnection = Effect.gen(function*() {
|
|
98
|
+
const scope = yield* Effect.scope
|
|
98
99
|
const db = new Sqlite(options.filename, {
|
|
99
100
|
readonly: options.readonly ?? false
|
|
100
101
|
})
|
|
101
|
-
yield*
|
|
102
|
+
yield* Scope.addFinalizer(scope, Effect.sync(() => db.close()))
|
|
102
103
|
|
|
103
104
|
if (options.disableWAL !== true) {
|
|
104
105
|
db.pragma("journal_mode = WAL")
|
|
105
106
|
}
|
|
106
107
|
|
|
107
|
-
const prepareCache = yield*
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
})
|
|
117
|
-
)
|
|
108
|
+
const prepareCache = yield* Cache.make({
|
|
109
|
+
capacity: options.prepareCacheSize ?? 200,
|
|
110
|
+
timeToLive: options.prepareCacheTTL ?? Duration.minutes(10),
|
|
111
|
+
lookup: (sql: string) =>
|
|
112
|
+
Effect.try({
|
|
113
|
+
try: () => db.prepare(sql),
|
|
114
|
+
catch: (cause) => new SqlError({ cause, message: "Failed to prepare statement" })
|
|
115
|
+
})
|
|
116
|
+
})
|
|
118
117
|
|
|
119
118
|
const runStatement = (
|
|
120
119
|
statement: Sqlite.Statement,
|
|
121
|
-
params: ReadonlyArray<Statement.Primitive
|
|
120
|
+
params: ReadonlyArray<Statement.Primitive>,
|
|
121
|
+
raw: boolean
|
|
122
122
|
) =>
|
|
123
123
|
Effect.try({
|
|
124
124
|
try: () => {
|
|
125
125
|
if (statement.reader) {
|
|
126
|
-
return statement.all(...params)
|
|
126
|
+
return statement.all(...params)
|
|
127
127
|
}
|
|
128
|
-
statement.run(...params)
|
|
129
|
-
return []
|
|
128
|
+
const result = statement.run(...params)
|
|
129
|
+
return raw ? result as unknown as ReadonlyArray<any> : []
|
|
130
130
|
},
|
|
131
131
|
catch: (cause) => new SqlError({ cause, message: "Failed to execute statement" })
|
|
132
132
|
})
|
|
133
133
|
|
|
134
134
|
const run = (
|
|
135
135
|
sql: string,
|
|
136
|
-
params: ReadonlyArray<Statement.Primitive
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
136
|
+
params: ReadonlyArray<Statement.Primitive>,
|
|
137
|
+
raw = false
|
|
138
|
+
) =>
|
|
139
|
+
Effect.flatMap(
|
|
140
|
+
prepareCache.get(sql),
|
|
141
|
+
(s) => runStatement(s, params, raw)
|
|
142
|
+
)
|
|
143
143
|
|
|
144
144
|
const runTransform = options.transformResultNames
|
|
145
|
-
? (sql: string, params
|
|
145
|
+
? (sql: string, params: ReadonlyArray<Statement.Primitive>) =>
|
|
146
|
+
Effect.map(
|
|
147
|
+
run(sql, params),
|
|
148
|
+
transformRows
|
|
149
|
+
)
|
|
146
150
|
: run
|
|
147
151
|
|
|
148
152
|
const runValues = (
|
|
@@ -173,7 +177,7 @@ export const make = (
|
|
|
173
177
|
return runTransform(sql, params)
|
|
174
178
|
},
|
|
175
179
|
executeRaw(sql, params) {
|
|
176
|
-
return run(sql, params)
|
|
180
|
+
return run(sql, params, true)
|
|
177
181
|
},
|
|
178
182
|
executeValues(sql, params) {
|
|
179
183
|
return runValues(sql, params)
|
|
@@ -182,7 +186,10 @@ export const make = (
|
|
|
182
186
|
return run(sql, params)
|
|
183
187
|
},
|
|
184
188
|
executeUnprepared(sql, params) {
|
|
185
|
-
return
|
|
189
|
+
return Effect.map(
|
|
190
|
+
runStatement(db.prepare(sql), params ?? [], false),
|
|
191
|
+
transformRows
|
|
192
|
+
)
|
|
186
193
|
},
|
|
187
194
|
executeStream(_sql, _params) {
|
|
188
195
|
return Effect.dieMessage("executeStream not implemented")
|
|
@@ -206,8 +213,8 @@ export const make = (
|
|
|
206
213
|
})
|
|
207
214
|
})
|
|
208
215
|
|
|
209
|
-
const semaphore = yield*
|
|
210
|
-
const connection = yield*
|
|
216
|
+
const semaphore = yield* Effect.makeSemaphore(1)
|
|
217
|
+
const connection = yield* makeConnection
|
|
211
218
|
|
|
212
219
|
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection))
|
|
213
220
|
const transactionAcquirer = Effect.uninterruptibleMask((restore) =>
|