@effect/sql-sqlite-do 4.0.0-beta.5 → 4.0.0-beta.50
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 +2 -2
- package/dist/SqliteClient.d.ts.map +1 -1
- package/dist/SqliteClient.js +14 -11
- package/dist/SqliteClient.js.map +1 -1
- package/package.json +4 -4
- package/src/SqliteClient.ts +17 -13
package/dist/SqliteClient.d.ts
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { SqlStorage } from "@cloudflare/workers-types";
|
|
5
5
|
import * as Config from "effect/Config";
|
|
6
|
+
import * as Context from "effect/Context";
|
|
6
7
|
import * as Effect from "effect/Effect";
|
|
7
8
|
import * as Layer from "effect/Layer";
|
|
8
9
|
import * as Scope from "effect/Scope";
|
|
9
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
10
10
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
11
11
|
import * as Client from "effect/unstable/sql/SqlClient";
|
|
12
12
|
/**
|
|
@@ -33,7 +33,7 @@ export interface SqliteClient extends Client.SqlClient {
|
|
|
33
33
|
* @category tags
|
|
34
34
|
* @since 1.0.0
|
|
35
35
|
*/
|
|
36
|
-
export declare const SqliteClient:
|
|
36
|
+
export declare const SqliteClient: Context.Service<SqliteClient, SqliteClient>;
|
|
37
37
|
/**
|
|
38
38
|
* @category models
|
|
39
39
|
* @since 1.0.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,OAAO,KAAK,UAAU,MAAM,uCAAuC,CAAA;AACnE,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAUvD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAA8C,CAAA;AAEnE;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,qCAAqC,CAAA;AAE1D;;;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;IAEnC,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,6CAAsE,CAAA;AAE/F;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,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;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,GACf,SAAS,kBAAkB,KAC1B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAmHrE,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KACtC,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAUzB,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,QAAQ,kBAAkB,KACzB,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAML,CAAA"}
|
package/dist/SqliteClient.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
import * as Config from "effect/Config";
|
|
2
|
+
import * as Context from "effect/Context";
|
|
2
3
|
import * as Effect from "effect/Effect";
|
|
3
4
|
import * as Fiber from "effect/Fiber";
|
|
4
5
|
import { identity } from "effect/Function";
|
|
5
6
|
import * as Layer from "effect/Layer";
|
|
6
7
|
import * as Scope from "effect/Scope";
|
|
7
|
-
import * as
|
|
8
|
+
import * as Semaphore from "effect/Semaphore";
|
|
8
9
|
import * as Stream from "effect/Stream";
|
|
9
10
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity";
|
|
10
11
|
import * as Client from "effect/unstable/sql/SqlClient";
|
|
11
|
-
import { SqlError } from "effect/unstable/sql/SqlError";
|
|
12
|
+
import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError";
|
|
12
13
|
import * as Statement from "effect/unstable/sql/Statement";
|
|
13
14
|
const ATTR_DB_SYSTEM_NAME = "db.system.name";
|
|
15
|
+
const classifyError = (cause, message, operation) => classifySqliteError(cause, {
|
|
16
|
+
message,
|
|
17
|
+
operation
|
|
18
|
+
});
|
|
14
19
|
/**
|
|
15
20
|
* @category type ids
|
|
16
21
|
* @since 1.0.0
|
|
@@ -20,7 +25,7 @@ export const TypeId = "~@effect/sql-sqlite-do/SqliteClient";
|
|
|
20
25
|
* @category tags
|
|
21
26
|
* @since 1.0.0
|
|
22
27
|
*/
|
|
23
|
-
export const SqliteClient = /*#__PURE__*/
|
|
28
|
+
export const SqliteClient = /*#__PURE__*/Context.Service("@effect/sql-sqlite-do/SqliteClient");
|
|
24
29
|
/**
|
|
25
30
|
* @category constructor
|
|
26
31
|
* @since 1.0.0
|
|
@@ -45,8 +50,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
45
50
|
const runStatement = (sql, params = []) => Effect.try({
|
|
46
51
|
try: () => Array.from(runIterator(sql, params)),
|
|
47
52
|
catch: cause => new SqlError({
|
|
48
|
-
cause,
|
|
49
|
-
message: `Failed to execute statement`
|
|
53
|
+
reason: classifyError(cause, "Failed to execute statement", "execute")
|
|
50
54
|
})
|
|
51
55
|
});
|
|
52
56
|
const runValues = (sql, params = []) => Effect.try({
|
|
@@ -60,8 +64,7 @@ export const make = options => Effect.gen(function* () {
|
|
|
60
64
|
return row;
|
|
61
65
|
}),
|
|
62
66
|
catch: cause => new SqlError({
|
|
63
|
-
cause,
|
|
64
|
-
message: `Failed to execute statement`
|
|
67
|
+
reason: classifyError(cause, "Failed to execute statement", "execute")
|
|
65
68
|
})
|
|
66
69
|
});
|
|
67
70
|
return identity({
|
|
@@ -85,12 +88,12 @@ export const make = options => Effect.gen(function* () {
|
|
|
85
88
|
}
|
|
86
89
|
});
|
|
87
90
|
});
|
|
88
|
-
const semaphore = yield*
|
|
91
|
+
const semaphore = yield* Semaphore.make(1);
|
|
89
92
|
const connection = yield* makeConnection;
|
|
90
93
|
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
|
|
91
94
|
const transactionAcquirer = Effect.uninterruptibleMask(restore => {
|
|
92
95
|
const fiber = Fiber.getCurrent();
|
|
93
|
-
const scope =
|
|
96
|
+
const scope = Context.getUnsafe(fiber.context, Scope.Scope);
|
|
94
97
|
return Effect.as(Effect.tap(restore(semaphore.take(1)), () => Scope.addFinalizer(scope, semaphore.release(1))), connection);
|
|
95
98
|
});
|
|
96
99
|
return Object.assign(yield* Client.make({
|
|
@@ -108,10 +111,10 @@ export const make = options => Effect.gen(function* () {
|
|
|
108
111
|
* @category layers
|
|
109
112
|
* @since 1.0.0
|
|
110
113
|
*/
|
|
111
|
-
export const layerConfig = config => Layer.
|
|
114
|
+
export const layerConfig = config => Layer.effectContext(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
|
|
112
115
|
/**
|
|
113
116
|
* @category layers
|
|
114
117
|
* @since 1.0.0
|
|
115
118
|
*/
|
|
116
|
-
export const layer = config => Layer.
|
|
119
|
+
export const layer = config => Layer.effectContext(Effect.map(make(config), client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
|
|
117
120
|
//# sourceMappingURL=SqliteClient.js.map
|
package/dist/SqliteClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteClient.js","names":["Config","Effect","Fiber","identity","Layer","Scope","
|
|
1
|
+
{"version":3,"file":"SqliteClient.js","names":["Config","Context","Effect","Fiber","identity","Layer","Scope","Semaphore","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","db","runIterator","sql","params","cursor","exec","columns","columnNames","result","raw","obj","i","length","value","ArrayBuffer","Uint8Array","runStatement","try","Array","from","catch","reason","runValues","row","execute","map","executeRaw","executeValues","executeUnprepared","executeStream","suspend","iterator","fromIteratorSucceed","pipe","mapArray","chunk","semaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","fiber","getCurrent","scope","getUnsafe","context","as","tap","take","addFinalizer","release","Object","assign","spanAttributes","entries","config","layerConfig","effectContext","unwrap","asEffect","flatMap","client","add","SqlClient","provide","layer"],"sources":["../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,UAAU,MAAM,uCAAuC;AACnE,OAAO,KAAKC,MAAM,MAAM,+BAA+B;AAEvD,SAASC,mBAAmB,EAAEC,QAAQ,QAAQ,8BAA8B;AAC5E,OAAO,KAAKC,SAAS,MAAM,+BAA+B;AAE1D,MAAMC,mBAAmB,GAAG,gBAAgB;AAE5C,MAAMC,aAAa,GAAGA,CAACC,KAAc,EAAEC,OAAe,EAAEC,SAAiB,KACvEP,mBAAmB,CAACK,KAAK,EAAE;EAAEC,OAAO;EAAEC;AAAS,CAAE,CAAC;AAEpD;;;;AAIA,OAAO,MAAMC,MAAM,GAAW,qCAAqC;AAoBnE;;;;AAIA,OAAO,MAAMC,YAAY,gBAAGnB,OAAO,CAACoB,OAAO,CAAe,oCAAoC,CAAC;AAc/F;;;;AAIA,OAAO,MAAMC,IAAI,GACfC,OAA2B,IAE3BrB,MAAM,CAACsB,GAAG,CAAC,aAAS;EAClB,MAAMC,QAAQ,GAAGZ,SAAS,CAACa,kBAAkB,CAACH,OAAO,CAACI,mBAAmB,CAAC;EAC1E,MAAMC,aAAa,GAAGL,OAAO,CAACM,oBAAoB,GAC9ChB,SAAS,CAACiB,iBAAiB,CAACP,OAAO,CAACM,oBAAoB,CAAC,CAACE,KAAK,GAC/DC,SAAS;EAEb,MAAMC,cAAc,GAAG/B,MAAM,CAACsB,GAAG,CAAC,aAAS;IACzC,MAAMU,EAAE,GAAGX,OAAO,CAACW,EAAE;IAErB,UAAUC,WAAWA,CACnBC,GAAW,EACXC,MAAA,GAAiC,EAAE;MAEnC,MAAMC,MAAM,GAAGJ,EAAE,CAACK,IAAI,CAACH,GAAG,EAAE,GAAGC,MAAM,CAAC;MACtC,MAAMG,OAAO,GAAGF,MAAM,CAACG,WAAW;MAClC,KAAK,MAAMC,MAAM,IAAIJ,MAAM,CAACK,GAAG,EAAE,EAAE;QACjC,MAAMC,GAAG,GAAQ,EAAE;QACnB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,OAAO,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;UACvC,MAAME,KAAK,GAAGL,MAAM,CAACG,CAAC,CAAC;UACvBD,GAAG,CAACJ,OAAO,CAACK,CAAC,CAAC,CAAC,GAAGE,KAAK,YAAYC,WAAW,GAAG,IAAIC,UAAU,CAACF,KAAK,CAAC,GAAGA,KAAK;QAChF;QACA,MAAMH,GAAG;MACX;IACF;IAEA,MAAMM,YAAY,GAAGA,CACnBd,GAAW,EACXC,MAAA,GAAiC,EAAE,KAEnCnC,MAAM,CAACiD,GAAG,CAAC;MACTA,GAAG,EAAEA,CAAA,KAAMC,KAAK,CAACC,IAAI,CAAClB,WAAW,CAACC,GAAG,EAAEC,MAAM,CAAC,CAAC;MAC/CiB,KAAK,EAAGtC,KAAK,IAAK,IAAIJ,QAAQ,CAAC;QAAE2C,MAAM,EAAExC,aAAa,CAACC,KAAK,EAAE,6BAA6B,EAAE,SAAS;MAAC,CAAE;KAC1G,CAAC;IAEJ,MAAMwC,SAAS,GAAGA,CAChBpB,GAAW,EACXC,MAAA,GAAiC,EAAE,KAEnCnC,MAAM,CAACiD,GAAG,CAAC;MACTA,GAAG,EAAEA,CAAA,KACHC,KAAK,CAACC,IAAI,CAACnB,EAAE,CAACK,IAAI,CAACH,GAAG,EAAE,GAAGC,MAAM,CAAC,CAACM,GAAG,EAAE,EAAGc,GAAG,IAAI;QAChD,KAAK,IAAIZ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGY,GAAG,CAACX,MAAM,EAAED,CAAC,EAAE,EAAE;UACnC,MAAME,KAAK,GAAGU,GAAG,CAACZ,CAAC,CAAC;UACpB,IAAIE,KAAK,YAAYC,WAAW,EAAE;YAChCS,GAAG,CAACZ,CAAC,CAAC,GAAG,IAAII,UAAU,CAACF,KAAK,CAAQ;UACvC;QACF;QACA,OAAOU,GAAG;MACZ,CAAC,CAAC;MACJH,KAAK,EAAGtC,KAAK,IAAK,IAAIJ,QAAQ,CAAC;QAAE2C,MAAM,EAAExC,aAAa,CAACC,KAAK,EAAE,6BAA6B,EAAE,SAAS;MAAC,CAAE;KAC1G,CAAC;IAEJ,OAAOZ,QAAQ,CAAa;MAC1BsD,OAAOA,CAACtB,GAAG,EAAEC,MAAM,EAAET,aAAa;QAChC,OAAOA,aAAa,GAChB1B,MAAM,CAACyD,GAAG,CAACT,YAAY,CAACd,GAAG,EAAEC,MAAM,CAAC,EAAET,aAAa,CAAC,GACpDsB,YAAY,CAACd,GAAG,EAAEC,MAAM,CAAC;MAC/B,CAAC;MACDuB,UAAUA,CAACxB,GAAG,EAAEC,MAAM;QACpB,OAAOa,YAAY,CAACd,GAAG,EAAEC,MAAM,CAAC;MAClC,CAAC;MACDwB,aAAaA,CAACzB,GAAG,EAAEC,MAAM;QACvB,OAAOmB,SAAS,CAACpB,GAAG,EAAEC,MAAM,CAAC;MAC/B,CAAC;MACDyB,iBAAiBA,CAAC1B,GAAG,EAAEC,MAAM,EAAET,aAAa;QAC1C,OAAOA,aAAa,GAChB1B,MAAM,CAACyD,GAAG,CAACT,YAAY,CAACd,GAAG,EAAEC,MAAM,CAAC,EAAET,aAAa,CAAC,GACpDsB,YAAY,CAACd,GAAG,EAAEC,MAAM,CAAC;MAC/B,CAAC;MACD0B,aAAaA,CAAC3B,GAAG,EAAEC,MAAM,EAAET,aAAa;QACtC,OAAOpB,MAAM,CAACwD,OAAO,CAAC,MAAK;UACzB,MAAMC,QAAQ,GAAG9B,WAAW,CAACC,GAAG,EAAEC,MAAM,CAAC;UACzC,OAAO7B,MAAM,CAAC0D,mBAAmB,CAACD,QAAQ,EAAE,GAAG,CAAC;QAClD,CAAC,CAAC,CAACE,IAAI,CACLvC,aAAa,GACTpB,MAAM,CAAC4D,QAAQ,CAAEC,KAAK,IAAKzC,aAAa,CAACyC,KAAK,CAAQ,CAAC,GACvDjE,QAAQ,CACb;MACH;KACD,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMkE,SAAS,GAAG,OAAO/D,SAAS,CAACe,IAAI,CAAC,CAAC,CAAC;EAC1C,MAAMiD,UAAU,GAAG,OAAOtC,cAAc;EAExC,MAAMuC,QAAQ,GAAGF,SAAS,CAACG,WAAW,CAAC,CAAC,CAAC,CAACvE,MAAM,CAACwE,OAAO,CAACH,UAAU,CAAC,CAAC;EACrE,MAAMI,mBAAmB,GAAGzE,MAAM,CAAC0E,mBAAmB,CAAEC,OAAO,IAAI;IACjE,MAAMC,KAAK,GAAG3E,KAAK,CAAC4E,UAAU,EAAG;IACjC,MAAMC,KAAK,GAAG/E,OAAO,CAACgF,SAAS,CAACH,KAAK,CAACI,OAAO,EAAE5E,KAAK,CAACA,KAAK,CAAC;IAC3D,OAAOJ,MAAM,CAACiF,EAAE,CACdjF,MAAM,CAACkF,GAAG,CACRP,OAAO,CAACP,SAAS,CAACe,IAAI,CAAC,CAAC,CAAC,CAAC,EAC1B,MAAM/E,KAAK,CAACgF,YAAY,CAACN,KAAK,EAAEV,SAAS,CAACiB,OAAO,CAAC,CAAC,CAAC,CAAC,CACtD,EACDhB,UAAU,CACX;EACH,CAAC,CAAC;EAEF,OAAOiB,MAAM,CAACC,MAAM,CACjB,OAAO/E,MAAM,CAACY,IAAI,CAAC;IAClBkD,QAAQ;IACR/C,QAAQ;IACRkD,mBAAmB;IACnBe,cAAc,EAAE,CACd,IAAInE,OAAO,CAACmE,cAAc,GAAGF,MAAM,CAACG,OAAO,CAACpE,OAAO,CAACmE,cAAc,CAAC,GAAG,EAAE,CAAC,EACzE,CAAC5E,mBAAmB,EAAE,QAAQ,CAAC,CAChC;IACDc;GACD,CAAC,EACF;IACE,CAACT,MAAM,GAAGA,MAAgB;IAC1ByE,MAAM,EAAErE;GACT,CACF;AACH,CAAC,CAAC;AAEJ;;;;AAIA,OAAO,MAAMsE,WAAW,GACtBD,MAAuC,IAEvCvF,KAAK,CAACyF,aAAa,CACjB9F,MAAM,CAAC+F,MAAM,CAACH,MAAM,CAAC,CAACI,QAAQ,EAAE,CAAC7B,IAAI,CACnCjE,MAAM,CAAC+F,OAAO,CAAC3E,IAAI,CAAC,EACpBpB,MAAM,CAACyD,GAAG,CAAEuC,MAAM,IAChBjG,OAAO,CAACqB,IAAI,CAACF,YAAY,EAAE8E,MAAM,CAAC,CAAC/B,IAAI,CACrClE,OAAO,CAACkG,GAAG,CAACzF,MAAM,CAAC0F,SAAS,EAAEF,MAAM,CAAC,CACtC,CACF,CACF,CACF,CAAC/B,IAAI,CAAC9D,KAAK,CAACgG,OAAO,CAAC5F,UAAU,CAAC6F,KAAK,CAAC,CAAC;AAEzC;;;;AAIA,OAAO,MAAMA,KAAK,GAChBV,MAA0B,IAE1BvF,KAAK,CAACyF,aAAa,CACjB5F,MAAM,CAACyD,GAAG,CAACrC,IAAI,CAACsE,MAAM,CAAC,EAAGM,MAAM,IAC9BjG,OAAO,CAACqB,IAAI,CAACF,YAAY,EAAE8E,MAAM,CAAC,CAAC/B,IAAI,CACrClE,OAAO,CAACkG,GAAG,CAACzF,MAAM,CAAC0F,SAAS,EAAEF,MAAM,CAAC,CACtC,CAAC,CACL,CAAC/B,IAAI,CAAC9D,KAAK,CAACgG,OAAO,CAAC5F,UAAU,CAAC6F,KAAK,CAAC,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/sql-sqlite-do",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.50",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "A SQLite toolkit for Effect",
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"provenance": true
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@cloudflare/workers-types": "^4.
|
|
47
|
-
"effect": "^4.0.0-beta.
|
|
46
|
+
"@cloudflare/workers-types": "^4.20260412.1",
|
|
47
|
+
"effect": "^4.0.0-beta.50"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"effect": "^4.0.0-beta.
|
|
50
|
+
"effect": "^4.0.0-beta.50"
|
|
51
51
|
},
|
|
52
52
|
"scripts": {
|
|
53
53
|
"codegen": "effect-utils codegen",
|
package/src/SqliteClient.ts
CHANGED
|
@@ -3,21 +3,25 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { SqlStorage } from "@cloudflare/workers-types"
|
|
5
5
|
import * as Config from "effect/Config"
|
|
6
|
+
import * as Context from "effect/Context"
|
|
6
7
|
import * as Effect from "effect/Effect"
|
|
7
8
|
import * as Fiber from "effect/Fiber"
|
|
8
9
|
import { identity } from "effect/Function"
|
|
9
10
|
import * as Layer from "effect/Layer"
|
|
10
11
|
import * as Scope from "effect/Scope"
|
|
11
|
-
import * as
|
|
12
|
+
import * as Semaphore from "effect/Semaphore"
|
|
12
13
|
import * as Stream from "effect/Stream"
|
|
13
14
|
import * as Reactivity from "effect/unstable/reactivity/Reactivity"
|
|
14
15
|
import * as Client from "effect/unstable/sql/SqlClient"
|
|
15
16
|
import type { Connection } from "effect/unstable/sql/SqlConnection"
|
|
16
|
-
import { SqlError } from "effect/unstable/sql/SqlError"
|
|
17
|
+
import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
|
|
17
18
|
import * as Statement from "effect/unstable/sql/Statement"
|
|
18
19
|
|
|
19
20
|
const ATTR_DB_SYSTEM_NAME = "db.system.name"
|
|
20
21
|
|
|
22
|
+
const classifyError = (cause: unknown, message: string, operation: string) =>
|
|
23
|
+
classifySqliteError(cause, { message, operation })
|
|
24
|
+
|
|
21
25
|
/**
|
|
22
26
|
* @category type ids
|
|
23
27
|
* @since 1.0.0
|
|
@@ -46,7 +50,7 @@ export interface SqliteClient extends Client.SqlClient {
|
|
|
46
50
|
* @category tags
|
|
47
51
|
* @since 1.0.0
|
|
48
52
|
*/
|
|
49
|
-
export const SqliteClient =
|
|
53
|
+
export const SqliteClient = Context.Service<SqliteClient>("@effect/sql-sqlite-do/SqliteClient")
|
|
50
54
|
|
|
51
55
|
/**
|
|
52
56
|
* @category models
|
|
@@ -98,7 +102,7 @@ export const make = (
|
|
|
98
102
|
): Effect.Effect<ReadonlyArray<any>, SqlError, never> =>
|
|
99
103
|
Effect.try({
|
|
100
104
|
try: () => Array.from(runIterator(sql, params)),
|
|
101
|
-
catch: (cause) => new SqlError({ cause,
|
|
105
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
|
|
102
106
|
})
|
|
103
107
|
|
|
104
108
|
const runValues = (
|
|
@@ -116,7 +120,7 @@ export const make = (
|
|
|
116
120
|
}
|
|
117
121
|
return row
|
|
118
122
|
}),
|
|
119
|
-
catch: (cause) => new SqlError({ cause,
|
|
123
|
+
catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
|
|
120
124
|
})
|
|
121
125
|
|
|
122
126
|
return identity<Connection>({
|
|
@@ -149,13 +153,13 @@ export const make = (
|
|
|
149
153
|
})
|
|
150
154
|
})
|
|
151
155
|
|
|
152
|
-
const semaphore = yield*
|
|
156
|
+
const semaphore = yield* Semaphore.make(1)
|
|
153
157
|
const connection = yield* makeConnection
|
|
154
158
|
|
|
155
159
|
const acquirer = semaphore.withPermits(1)(Effect.succeed(connection))
|
|
156
160
|
const transactionAcquirer = Effect.uninterruptibleMask((restore) => {
|
|
157
161
|
const fiber = Fiber.getCurrent()!
|
|
158
|
-
const scope =
|
|
162
|
+
const scope = Context.getUnsafe(fiber.context, Scope.Scope)
|
|
159
163
|
return Effect.as(
|
|
160
164
|
Effect.tap(
|
|
161
165
|
restore(semaphore.take(1)),
|
|
@@ -190,12 +194,12 @@ export const make = (
|
|
|
190
194
|
export const layerConfig = (
|
|
191
195
|
config: Config.Wrap<SqliteClientConfig>
|
|
192
196
|
): Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError> =>
|
|
193
|
-
Layer.
|
|
197
|
+
Layer.effectContext(
|
|
194
198
|
Config.unwrap(config).asEffect().pipe(
|
|
195
199
|
Effect.flatMap(make),
|
|
196
200
|
Effect.map((client) =>
|
|
197
|
-
|
|
198
|
-
|
|
201
|
+
Context.make(SqliteClient, client).pipe(
|
|
202
|
+
Context.add(Client.SqlClient, client)
|
|
199
203
|
)
|
|
200
204
|
)
|
|
201
205
|
)
|
|
@@ -208,9 +212,9 @@ export const layerConfig = (
|
|
|
208
212
|
export const layer = (
|
|
209
213
|
config: SqliteClientConfig
|
|
210
214
|
): Layer.Layer<SqliteClient | Client.SqlClient> =>
|
|
211
|
-
Layer.
|
|
215
|
+
Layer.effectContext(
|
|
212
216
|
Effect.map(make(config), (client) =>
|
|
213
|
-
|
|
214
|
-
|
|
217
|
+
Context.make(SqliteClient, client).pipe(
|
|
218
|
+
Context.add(Client.SqlClient, client)
|
|
215
219
|
))
|
|
216
220
|
).pipe(Layer.provide(Reactivity.layer))
|