@effect/sql-sqlite-react-native 0.3.16 → 0.4.0
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/Client.js +30 -6
- package/dist/cjs/Client.js.map +1 -1
- package/dist/dts/Client.d.ts +4 -0
- package/dist/dts/Client.d.ts.map +1 -1
- package/dist/esm/Client.js +30 -6
- package/dist/esm/Client.js.map +1 -1
- package/package.json +4 -4
- package/src/Client.ts +64 -8
package/dist/cjs/Client.js
CHANGED
|
@@ -16,7 +16,9 @@ var FiberRef = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effec
|
|
|
16
16
|
var _Function = /*#__PURE__*/require("effect/Function");
|
|
17
17
|
var _GlobalValue = /*#__PURE__*/require("effect/GlobalValue");
|
|
18
18
|
var Layer = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Layer"));
|
|
19
|
+
var Queue = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Queue"));
|
|
19
20
|
var Scope = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Scope"));
|
|
21
|
+
var Stream = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("effect/Stream"));
|
|
20
22
|
function _getRequireWildcardCache(e) {
|
|
21
23
|
if ("function" != typeof WeakMap) return null;
|
|
22
24
|
var r = new WeakMap(),
|
|
@@ -72,17 +74,22 @@ const withAsyncQuery = effect => Effect.locally(effect, asyncQuery, true);
|
|
|
72
74
|
*/
|
|
73
75
|
exports.withAsyncQuery = withAsyncQuery;
|
|
74
76
|
const make = options => Effect.gen(function* (_) {
|
|
77
|
+
const clientOptions = {
|
|
78
|
+
name: options.filename
|
|
79
|
+
};
|
|
80
|
+
if (options.location) {
|
|
81
|
+
clientOptions.location = options.location;
|
|
82
|
+
}
|
|
83
|
+
if (options.encryptionKey) {
|
|
84
|
+
clientOptions.encryptionKey = options.encryptionKey;
|
|
85
|
+
}
|
|
75
86
|
const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);
|
|
76
87
|
const transformRows = Statement.defaultTransforms(options.transformResultNames).array;
|
|
77
88
|
const handleError = error => new _Error.SqlError({
|
|
78
89
|
error
|
|
79
90
|
});
|
|
80
91
|
const makeConnection = Effect.gen(function* (_) {
|
|
81
|
-
const db = Sqlite.open(
|
|
82
|
-
name: options.filename,
|
|
83
|
-
location: options.location,
|
|
84
|
-
encryptionKey: options.encryptionKey
|
|
85
|
-
});
|
|
92
|
+
const db = Sqlite.open(clientOptions);
|
|
86
93
|
yield* _(Effect.addFinalizer(() => Effect.sync(() => db.close())));
|
|
87
94
|
const run = (sql, params = []) => Effect.withFiberRuntime(fiber => {
|
|
88
95
|
if (fiber.getFiberRef(asyncQuery)) {
|
|
@@ -118,6 +125,20 @@ const make = options => Effect.gen(function* (_) {
|
|
|
118
125
|
},
|
|
119
126
|
executeStream() {
|
|
120
127
|
return Effect.dieMessage("executeStream not implemented");
|
|
128
|
+
},
|
|
129
|
+
reactive(statement, tables) {
|
|
130
|
+
const [query, params] = statement.compile();
|
|
131
|
+
return Queue.sliding(1).pipe(Effect.tap(queue => this.execute(query, params).pipe(Effect.flatMap(rows => queue.offer(rows)))), Effect.tap(queue => Effect.acquireRelease(Effect.try({
|
|
132
|
+
try: () => db.reactiveExecute({
|
|
133
|
+
query,
|
|
134
|
+
arguments: params,
|
|
135
|
+
tables: tables,
|
|
136
|
+
callback(data) {
|
|
137
|
+
queue.unsafeOffer(data.rows);
|
|
138
|
+
}
|
|
139
|
+
}),
|
|
140
|
+
catch: handleError
|
|
141
|
+
}), cancel => Effect.sync(cancel))), Effect.map(Stream.fromQueue), Stream.unwrapScoped);
|
|
121
142
|
}
|
|
122
143
|
});
|
|
123
144
|
});
|
|
@@ -132,7 +153,10 @@ const make = options => Effect.gen(function* (_) {
|
|
|
132
153
|
spanAttributes: [[Otel.SEMATTRS_DB_SYSTEM, Otel.DBSYSTEMVALUES_SQLITE]]
|
|
133
154
|
}), {
|
|
134
155
|
[TypeId]: TypeId,
|
|
135
|
-
config: options
|
|
156
|
+
config: options,
|
|
157
|
+
reactive(statement, tables) {
|
|
158
|
+
return Stream.unwrap(Effect.map(acquirer, connection => connection.reactive(statement, tables)));
|
|
159
|
+
}
|
|
136
160
|
});
|
|
137
161
|
});
|
|
138
162
|
/**
|
package/dist/cjs/Client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","names":["Client","_interopRequireWildcard","require","_Error","Statement","Sqlite","Otel","Config","Context","Effect","FiberRef","_Function","_GlobalValue","Layer","Scope","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TypeId","exports","Symbol","for","SqliteClient","GenericTag","asyncQuery","globalValue","unsafeMake","withAsyncQuery","effect","locally","make","options","gen","_","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","handleError","error","SqlError","makeConnection","db","open","
|
|
1
|
+
{"version":3,"file":"Client.js","names":["Client","_interopRequireWildcard","require","_Error","Statement","Sqlite","Otel","Config","Context","Effect","FiberRef","_Function","_GlobalValue","Layer","Queue","Scope","Stream","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TypeId","exports","Symbol","for","SqliteClient","GenericTag","asyncQuery","globalValue","unsafeMake","withAsyncQuery","effect","locally","make","options","gen","_","clientOptions","name","filename","location","encryptionKey","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","handleError","error","SqlError","makeConnection","db","open","addFinalizer","sync","close","run","sql","params","withFiberRuntime","fiber","getFiberRef","map","tryPromise","try","executeAsync","catch","result","rows","_array","execute","runTransform","identity","executeValues","results","length","columns","keys","row","column","executeWithoutTransform","executeRaw","executeStream","dieMessage","reactive","statement","tables","query","compile","sliding","pipe","tap","queue","flatMap","offer","acquireRelease","reactiveExecute","arguments","callback","data","unsafeOffer","cancel","fromQueue","unwrapScoped","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","scope","release","assign","spanAttributes","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","unwrap","layer","scopedContext","client","add"],"sources":["../../src/Client.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,MAAA,gBAAAC,uBAAA,eAAAC,OAAA;AAEA,IAAAC,MAAA,gBAAAD,OAAA;AACA,IAAAE,SAAA,gBAAAH,uBAAA,eAAAC,OAAA;AACA,IAAAG,MAAA,gBAAAJ,uBAAA,eAAAC,OAAA;AACA,IAAAI,IAAA,gBAAAL,uBAAA,eAAAC,OAAA;AACA,IAAAK,MAAA,gBAAAN,uBAAA,eAAAC,OAAA;AAEA,IAAAM,OAAA,gBAAAP,uBAAA,eAAAC,OAAA;AACA,IAAAO,MAAA,gBAAAR,uBAAA,eAAAC,OAAA;AACA,IAAAQ,QAAA,gBAAAT,uBAAA,eAAAC,OAAA;AACA,IAAAS,SAAA,gBAAAT,OAAA;AACA,IAAAU,YAAA,gBAAAV,OAAA;AACA,IAAAW,KAAA,gBAAAZ,uBAAA,eAAAC,OAAA;AACA,IAAAY,KAAA,gBAAAb,uBAAA,eAAAC,OAAA;AACA,IAAAa,KAAA,gBAAAd,uBAAA,eAAAC,OAAA;AACA,IAAAc,MAAA,gBAAAf,uBAAA,eAAAC,OAAA;AAAuC,SAAAe,yBAAAC,CAAA;EAAA,yBAAAC,OAAA;EAAA,IAAAC,CAAA,OAAAD,OAAA;IAAAE,CAAA,OAAAF,OAAA;EAAA,QAAAF,wBAAA,YAAAA,CAAAC,CAAA;IAAA,OAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA;EAAA,GAAAF,CAAA;AAAA;AAAA,SAAAjB,wBAAAiB,CAAA,EAAAE,CAAA;EAAA,KAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA;EAAA,aAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA;IAAAK,OAAA,EAAAL;EAAA;EAAA,IAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA;EAAA,IAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA;EAAA,IAAAQ,CAAA;MAAAC,SAAA;IAAA;IAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA;EAAA,SAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA;IAAA,IAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA;IAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA;EAAA;EAAA,OAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA;AAnBvC;;;;AAqBA;;;;AAIO,MAAMW,MAAM,GAAAC,OAAA,CAAAD,MAAA,gBAAkBE,MAAM,CAACC,GAAG,CAAC,wCAAwC,CAAC;AAwBzF;;;;AAIO,MAAMC,YAAY,GAAAH,OAAA,CAAAG,YAAA,gBAAGjC,OAAO,CAACkC,UAAU,CAAe,wCAAwC,CAAC;AActG;;;;AAIO,MAAMC,UAAU,GAAAL,OAAA,CAAAK,UAAA,gBAA+B,IAAA/B,YAAA,CAAAgC,WAAW,EAC/D,mDAAmD,EACnD,MAAMlC,QAAQ,CAACmC,UAAU,CAAC,KAAK,CAAC,CACjC;AAED;;;;AAIO,MAAMC,cAAc,GAAaC,MAA8B,IAAKtC,MAAM,CAACuC,OAAO,CAACD,MAAM,EAAEJ,UAAU,EAAE,IAAI,CAAC;AASnH;;;;AAAAL,OAAA,CAAAQ,cAAA,GAAAA,cAAA;AAIO,MAAMG,IAAI,GACfC,OAA2B,IAE3BzC,MAAM,CAAC0C,GAAG,CAAC,WAAUC,CAAC;EACpB,MAAMC,aAAa,GAAsC;IACvDC,IAAI,EAAEJ,OAAO,CAACK;GACf;EACD,IAAIL,OAAO,CAACM,QAAQ,EAAE;IACpBH,aAAa,CAACG,QAAQ,GAAGN,OAAO,CAACM,QAAQ;EAC3C;EACA,IAAIN,OAAO,CAACO,aAAa,EAAE;IACzBJ,aAAa,CAACI,aAAa,GAAGP,OAAO,CAACO,aAAa;EACrD;EAEA,MAAMC,QAAQ,GAAGtD,SAAS,CAACuD,kBAAkB,CAACT,OAAO,CAACU,mBAAmB,CAAC;EAC1E,MAAMC,aAAa,GAAGzD,SAAS,CAAC0D,iBAAiB,CAC/CZ,OAAO,CAACa,oBAAqB,CAC9B,CAACC,KAAK;EACP,MAAMC,WAAW,GAAIC,KAAU,IAAK,IAAI/D,MAAA,CAAAgE,QAAQ,CAAC;IAAED;EAAK,CAAE,CAAC;EAE3D,MAAME,cAAc,GAAG3D,MAAM,CAAC0C,GAAG,CAAC,WAAUC,CAAC;IAC3C,MAAMiB,EAAE,GAAGhE,MAAM,CAACiE,IAAI,CAACjB,aAAa,CAAC;IACrC,OAAOD,CAAC,CAAC3C,MAAM,CAAC8D,YAAY,CAAC,MAAM9D,MAAM,CAAC+D,IAAI,CAAC,MAAMH,EAAE,CAACI,KAAK,EAAE,CAAC,CAAC,CAAC;IAElE,MAAMC,GAAG,GAAGA,CACVC,GAAW,EACXC,MAAA,GAA6C,EAAE,KAE/CnE,MAAM,CAACoE,gBAAgB,CAAwBC,KAAK,IAAI;MACtD,IAAIA,KAAK,CAACC,WAAW,CAACpC,UAAU,CAAC,EAAE;QACjC,OAAOlC,MAAM,CAACuE,GAAG,CACfvE,MAAM,CAACwE,UAAU,CAAC;UAChBC,GAAG,EAAEA,CAAA,KAAMb,EAAE,CAACc,YAAY,CAACR,GAAG,EAAEC,MAAoB,CAAC;UACrDQ,KAAK,EAAEnB;SACR,CAAC,EACDoB,MAAM,IAAKA,MAAM,CAACC,IAAI,EAAEC,MAAM,IAAI,EAAE,CACtC;MACH;MACA,OAAO9E,MAAM,CAACyE,GAAG,CAAC;QAChBA,GAAG,EAAEA,CAAA,KAAMb,EAAE,CAACmB,OAAO,CAACb,GAAG,EAAEC,MAAoB,CAAC,CAACU,IAAI,EAAEC,MAAM,IAAI,EAAE;QACnEH,KAAK,EAAEnB;OACR,CAAC;IACJ,CAAC,CAAC;IAEJ,MAAMwB,YAAY,GAAGvC,OAAO,CAACa,oBAAoB,GAC7C,CAACY,GAAW,EAAEC,MAA2C,KAAKnE,MAAM,CAACuE,GAAG,CAACN,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC,EAAEf,aAAa,CAAC,GACzGa,GAAG;IAEP,OAAO,IAAA/D,SAAA,CAAA+E,QAAQ,EAAmB;MAChCF,OAAOA,CAACb,GAAG,EAAEC,MAAM;QACjB,OAAOa,YAAY,CAACd,GAAG,EAAEC,MAAM,CAAC;MAClC,CAAC;MACDe,aAAaA,CAAChB,GAAG,EAAEC,MAAM;QACvB,OAAOnE,MAAM,CAACuE,GAAG,CAACN,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC,EAAGgB,OAAO,IAAI;UAC9C,IAAIA,OAAO,CAACC,MAAM,KAAK,CAAC,EAAE;YACxB,OAAO,EAAE;UACX;UACA,MAAMC,OAAO,GAAGjE,MAAM,CAACkE,IAAI,CAACH,OAAO,CAAC,CAAC,CAAC,CAAC;UACvC,OAAOA,OAAO,CAACZ,GAAG,CAAEgB,GAAG,IAAKF,OAAO,CAACd,GAAG,CAAEiB,MAAM,IAAKD,GAAG,CAACC,MAAM,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC;MACJ,CAAC;MACDC,uBAAuBA,CAACvB,GAAG,EAAEC,MAAM;QACjC,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC;MACzB,CAAC;MACDuB,UAAUA,CAACxB,GAAG,EAAEC,MAAM;QACpB,OAAOa,YAAY,CAACd,GAAG,EAAEC,MAAM,CAAC;MAClC,CAAC;MACDwB,aAAaA,CAAA;QACX,OAAO3F,MAAM,CAAC4F,UAAU,CAAC,+BAA+B,CAAC;MAC3D,CAAC;MACDC,QAAQA,CAAIC,SAAiC,EAAEC,MAA6B;QAC1E,MAAM,CAACC,KAAK,EAAE7B,MAAM,CAAC,GAAG2B,SAAS,CAACG,OAAO,EAAE;QAC3C,OAAO5F,KAAK,CAAC6F,OAAO,CAAmB,CAAC,CAAC,CAACC,IAAI,CAC5CnG,MAAM,CAACoG,GAAG,CAAEC,KAAK,IACf,IAAI,CAACtB,OAAO,CAACiB,KAAK,EAAE7B,MAAM,CAAC,CAACgC,IAAI,CAC9BnG,MAAM,CAACsG,OAAO,CAAEzB,IAAI,IAAKwB,KAAK,CAACE,KAAK,CAAC1B,IAAI,CAAC,CAAC,CAC5C,CACF,EACD7E,MAAM,CAACoG,GAAG,CAAEC,KAAK,IACfrG,MAAM,CAACwG,cAAc,CACnBxG,MAAM,CAACyE,GAAG,CAAC;UACTA,GAAG,EAAEA,CAAA,KACHb,EAAE,CAAC6C,eAAe,CAAC;YACjBT,KAAK;YACLU,SAAS,EAAEvC,MAAa;YACxB4B,MAAM,EAAEA,MAAuB;YAC/BY,QAAQA,CAACC,IAAI;cACXP,KAAK,CAACQ,WAAW,CAACD,IAAI,CAAC/B,IAAI,CAAC;YAC9B;WACD,CAAC;UACJF,KAAK,EAAEnB;SACR,CAAC,EACDsD,MAAM,IAAK9G,MAAM,CAAC+D,IAAI,CAAC+C,MAAM,CAAC,CAChC,CACF,EACD9G,MAAM,CAACuE,GAAG,CAAChE,MAAM,CAACwG,SAAS,CAAC,EAC5BxG,MAAM,CAACyG,YAAY,CACpB;MACH;KACD,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAG,OAAOtE,CAAC,CAAC3C,MAAM,CAACkH,aAAa,CAAC,CAAC,CAAC,CAAC;EACnD,MAAMC,UAAU,GAAG,OAAOxE,CAAC,CAACgB,cAAc,CAAC;EAE3C,MAAMyD,QAAQ,GAAGH,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC,CAACrH,MAAM,CAACsH,OAAO,CAACH,UAAU,CAAC,CAAC;EACrE,MAAMI,mBAAmB,GAAGvH,MAAM,CAACwH,mBAAmB,CAAEC,OAAO,IAC7DzH,MAAM,CAAC0H,EAAE,CACP1H,MAAM,CAAC2H,QAAQ,CACbF,OAAO,CAACR,SAAS,CAACW,IAAI,CAAC,CAAC,CAAC,CAAC,EAC1B5H,MAAM,CAACoG,GAAG,CACRpG,MAAM,CAAC6H,KAAK,EACXA,KAAK,IAAKvH,KAAK,CAACwD,YAAY,CAAC+D,KAAK,EAAEZ,SAAS,CAACa,OAAO,CAAC,CAAC,CAAC,CAAC,CAC3D,CACF,EACDX,UAAU,CACX,CACF;EAED,OAAO/F,MAAM,CAAC2G,MAAM,CAClBxI,MAAM,CAACiD,IAAI,CAAC;IACV4E,QAAQ;IACRnE,QAAQ;IACRsE,mBAAmB;IACnBS,cAAc,EAAE,CAAC,CAACnI,IAAI,CAACoI,kBAAkB,EAAEpI,IAAI,CAACqI,qBAAqB,CAAC;GACvE,CAAiB,EAClB;IACE,CAACtG,MAAM,GAAGA,MAAM;IAChBuG,MAAM,EAAE1F,OAAO;IACfoD,QAAQA,CAAIC,SAAiC,EAAEC,MAA6B;MAC1E,OAAOxF,MAAM,CAAC6H,MAAM,CAACpI,MAAM,CAACuE,GAAG,CAC7B6C,QAAQ,EACPD,UAAU,IAAKA,UAAU,CAACtB,QAAQ,CAACC,SAAS,EAAEC,MAAM,CAAC,CACvD,CAAC;IACJ;GACD,CACF;AACH,CAAC,CAAC;AAEJ;;;;AAAAlE,OAAA,CAAAW,IAAA,GAAAA,IAAA;AAIO,MAAM6F,KAAK,GAChBF,MAA8C,IAE9C/H,KAAK,CAACkI,aAAa,CACjBxI,MAAM,CAACsI,MAAM,CAACD,MAAM,CAAC,CAAChC,IAAI,CACxBnG,MAAM,CAACsG,OAAO,CAAC9D,IAAI,CAAC,EACpBxC,MAAM,CAACuE,GAAG,CAAEgE,MAAM,IAChBxI,OAAO,CAACyC,IAAI,CAACR,YAAY,EAAEuG,MAAM,CAAC,CAACpC,IAAI,CACrCpG,OAAO,CAACyI,GAAG,CAACjJ,MAAM,CAACA,MAAM,EAAEgJ,MAAM,CAAC,CACnC,CACF,CACF,CACF;AAAA1G,OAAA,CAAAwG,KAAA,GAAAA,KAAA","ignoreList":[]}
|
package/dist/dts/Client.d.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
import * as Client from "@effect/sql/Client";
|
|
5
|
+
import { SqlError } from "@effect/sql/Error";
|
|
6
|
+
import * as Statement from "@effect/sql/Statement";
|
|
5
7
|
import * as Config from "effect/Config";
|
|
6
8
|
import type { ConfigError } from "effect/ConfigError";
|
|
7
9
|
import * as Context from "effect/Context";
|
|
@@ -9,6 +11,7 @@ import * as Effect from "effect/Effect";
|
|
|
9
11
|
import * as FiberRef from "effect/FiberRef";
|
|
10
12
|
import * as Layer from "effect/Layer";
|
|
11
13
|
import * as Scope from "effect/Scope";
|
|
14
|
+
import * as Stream from "effect/Stream";
|
|
12
15
|
/**
|
|
13
16
|
* @category type ids
|
|
14
17
|
* @since 1.0.0
|
|
@@ -26,6 +29,7 @@ export type TypeId = typeof TypeId;
|
|
|
26
29
|
export interface SqliteClient extends Client.Client {
|
|
27
30
|
readonly [TypeId]: TypeId;
|
|
28
31
|
readonly config: SqliteClientConfig;
|
|
32
|
+
readonly reactive: <A>(statement: Statement.Statement<A>, tables: ReadonlyArray<string>) => Stream.Stream<ReadonlyArray<A>, SqlError>;
|
|
29
33
|
/** Not supported in sqlite */
|
|
30
34
|
readonly updateValues: never;
|
|
31
35
|
}
|
package/dist/dts/Client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/Client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../src/Client.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAE5C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAGlD,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,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAG3C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAA6D,CAAA;AAEzF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM;IACjD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EACnB,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EACjC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,KAC1B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IAE9C,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,yCAA6E,CAAA;AAEtG;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3C,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,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAGjD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,oBAAqB,OAAO,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,2BAA6C,CAAA;AASnH;;;GAGG;AACH,eAAO,MAAM,IAAI,YACN,kBAAkB,KAC1B,OAAO,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,CAuI7C,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,KAAK,WACR,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAC7C,MAAM,KAAK,CAAC,YAAY,GAAG,OAAO,MAAM,EAAE,WAAW,CAUrD,CAAA"}
|
package/dist/esm/Client.js
CHANGED
|
@@ -13,7 +13,9 @@ import * as FiberRef from "effect/FiberRef";
|
|
|
13
13
|
import { identity } from "effect/Function";
|
|
14
14
|
import { globalValue } from "effect/GlobalValue";
|
|
15
15
|
import * as Layer from "effect/Layer";
|
|
16
|
+
import * as Queue from "effect/Queue";
|
|
16
17
|
import * as Scope from "effect/Scope";
|
|
18
|
+
import * as Stream from "effect/Stream";
|
|
17
19
|
/**
|
|
18
20
|
* @category type ids
|
|
19
21
|
* @since 1.0.0
|
|
@@ -39,17 +41,22 @@ export const withAsyncQuery = effect => Effect.locally(effect, asyncQuery, true)
|
|
|
39
41
|
* @since 1.0.0
|
|
40
42
|
*/
|
|
41
43
|
export const make = options => Effect.gen(function* (_) {
|
|
44
|
+
const clientOptions = {
|
|
45
|
+
name: options.filename
|
|
46
|
+
};
|
|
47
|
+
if (options.location) {
|
|
48
|
+
clientOptions.location = options.location;
|
|
49
|
+
}
|
|
50
|
+
if (options.encryptionKey) {
|
|
51
|
+
clientOptions.encryptionKey = options.encryptionKey;
|
|
52
|
+
}
|
|
42
53
|
const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);
|
|
43
54
|
const transformRows = Statement.defaultTransforms(options.transformResultNames).array;
|
|
44
55
|
const handleError = error => new SqlError({
|
|
45
56
|
error
|
|
46
57
|
});
|
|
47
58
|
const makeConnection = Effect.gen(function* (_) {
|
|
48
|
-
const db = Sqlite.open(
|
|
49
|
-
name: options.filename,
|
|
50
|
-
location: options.location,
|
|
51
|
-
encryptionKey: options.encryptionKey
|
|
52
|
-
});
|
|
59
|
+
const db = Sqlite.open(clientOptions);
|
|
53
60
|
yield* _(Effect.addFinalizer(() => Effect.sync(() => db.close())));
|
|
54
61
|
const run = (sql, params = []) => Effect.withFiberRuntime(fiber => {
|
|
55
62
|
if (fiber.getFiberRef(asyncQuery)) {
|
|
@@ -85,6 +92,20 @@ export const make = options => Effect.gen(function* (_) {
|
|
|
85
92
|
},
|
|
86
93
|
executeStream() {
|
|
87
94
|
return Effect.dieMessage("executeStream not implemented");
|
|
95
|
+
},
|
|
96
|
+
reactive(statement, tables) {
|
|
97
|
+
const [query, params] = statement.compile();
|
|
98
|
+
return Queue.sliding(1).pipe(Effect.tap(queue => this.execute(query, params).pipe(Effect.flatMap(rows => queue.offer(rows)))), Effect.tap(queue => Effect.acquireRelease(Effect.try({
|
|
99
|
+
try: () => db.reactiveExecute({
|
|
100
|
+
query,
|
|
101
|
+
arguments: params,
|
|
102
|
+
tables: tables,
|
|
103
|
+
callback(data) {
|
|
104
|
+
queue.unsafeOffer(data.rows);
|
|
105
|
+
}
|
|
106
|
+
}),
|
|
107
|
+
catch: handleError
|
|
108
|
+
}), cancel => Effect.sync(cancel))), Effect.map(Stream.fromQueue), Stream.unwrapScoped);
|
|
88
109
|
}
|
|
89
110
|
});
|
|
90
111
|
});
|
|
@@ -99,7 +120,10 @@ export const make = options => Effect.gen(function* (_) {
|
|
|
99
120
|
spanAttributes: [[Otel.SEMATTRS_DB_SYSTEM, Otel.DBSYSTEMVALUES_SQLITE]]
|
|
100
121
|
}), {
|
|
101
122
|
[TypeId]: TypeId,
|
|
102
|
-
config: options
|
|
123
|
+
config: options,
|
|
124
|
+
reactive(statement, tables) {
|
|
125
|
+
return Stream.unwrap(Effect.map(acquirer, connection => connection.reactive(statement, tables)));
|
|
126
|
+
}
|
|
103
127
|
});
|
|
104
128
|
});
|
|
105
129
|
/**
|
package/dist/esm/Client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","names":["Client","SqlError","Statement","Sqlite","Otel","Config","Context","Effect","FiberRef","identity","globalValue","Layer","Scope","TypeId","Symbol","for","SqliteClient","GenericTag","asyncQuery","unsafeMake","withAsyncQuery","effect","locally","make","options","gen","_","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","handleError","error","makeConnection","db","open","
|
|
1
|
+
{"version":3,"file":"Client.js","names":["Client","SqlError","Statement","Sqlite","Otel","Config","Context","Effect","FiberRef","identity","globalValue","Layer","Queue","Scope","Stream","TypeId","Symbol","for","SqliteClient","GenericTag","asyncQuery","unsafeMake","withAsyncQuery","effect","locally","make","options","gen","_","clientOptions","name","filename","location","encryptionKey","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","handleError","error","makeConnection","db","open","addFinalizer","sync","close","run","sql","params","withFiberRuntime","fiber","getFiberRef","map","tryPromise","try","executeAsync","catch","result","rows","_array","execute","runTransform","executeValues","results","length","columns","Object","keys","row","column","executeWithoutTransform","executeRaw","executeStream","dieMessage","reactive","statement","tables","query","compile","sliding","pipe","tap","queue","flatMap","offer","acquireRelease","reactiveExecute","arguments","callback","data","unsafeOffer","cancel","fromQueue","unwrapScoped","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","scope","release","assign","spanAttributes","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","unwrap","layer","scopedContext","client","add"],"sources":["../../src/Client.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-react-native",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "A SQLite toolkit for Effect",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -10,12 +10,12 @@
|
|
|
10
10
|
},
|
|
11
11
|
"sideEffects": [],
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@op-engineering/op-sqlite": "6.0.1",
|
|
14
13
|
"@opentelemetry/semantic-conventions": "^1.24.1"
|
|
15
14
|
},
|
|
16
15
|
"peerDependencies": {
|
|
17
|
-
"@
|
|
18
|
-
"effect": "^3.
|
|
16
|
+
"@op-engineering/op-sqlite": "6.0.2-beta1",
|
|
17
|
+
"@effect/sql": "^0.3.0",
|
|
18
|
+
"effect": "^3.2.5"
|
|
19
19
|
},
|
|
20
20
|
"publishConfig": {
|
|
21
21
|
"provenance": true
|
package/src/Client.ts
CHANGED
|
@@ -15,7 +15,9 @@ import * as FiberRef from "effect/FiberRef"
|
|
|
15
15
|
import { identity } from "effect/Function"
|
|
16
16
|
import { globalValue } from "effect/GlobalValue"
|
|
17
17
|
import * as Layer from "effect/Layer"
|
|
18
|
+
import * as Queue from "effect/Queue"
|
|
18
19
|
import * as Scope from "effect/Scope"
|
|
20
|
+
import * as Stream from "effect/Stream"
|
|
19
21
|
|
|
20
22
|
/**
|
|
21
23
|
* @category type ids
|
|
@@ -36,6 +38,10 @@ export type TypeId = typeof TypeId
|
|
|
36
38
|
export interface SqliteClient extends Client.Client {
|
|
37
39
|
readonly [TypeId]: TypeId
|
|
38
40
|
readonly config: SqliteClientConfig
|
|
41
|
+
readonly reactive: <A>(
|
|
42
|
+
statement: Statement.Statement<A>,
|
|
43
|
+
tables: ReadonlyArray<string>
|
|
44
|
+
) => Stream.Stream<ReadonlyArray<A>, SqlError>
|
|
39
45
|
|
|
40
46
|
/** Not supported in sqlite */
|
|
41
47
|
readonly updateValues: never
|
|
@@ -74,6 +80,13 @@ export const asyncQuery: FiberRef.FiberRef<boolean> = globalValue(
|
|
|
74
80
|
*/
|
|
75
81
|
export const withAsyncQuery = <R, E, A>(effect: Effect.Effect<A, E, R>) => Effect.locally(effect, asyncQuery, true)
|
|
76
82
|
|
|
83
|
+
interface SqliteConnection extends Connection {
|
|
84
|
+
readonly reactive: <A>(
|
|
85
|
+
statement: Statement.Statement<A>,
|
|
86
|
+
tables: ReadonlyArray<string>
|
|
87
|
+
) => Stream.Stream<ReadonlyArray<A>, SqlError>
|
|
88
|
+
}
|
|
89
|
+
|
|
77
90
|
/**
|
|
78
91
|
* @category constructor
|
|
79
92
|
* @since 1.0.0
|
|
@@ -82,19 +95,24 @@ export const make = (
|
|
|
82
95
|
options: SqliteClientConfig
|
|
83
96
|
): Effect.Effect<SqliteClient, never, Scope.Scope> =>
|
|
84
97
|
Effect.gen(function*(_) {
|
|
98
|
+
const clientOptions: Parameters<typeof Sqlite.open>[0] = {
|
|
99
|
+
name: options.filename
|
|
100
|
+
}
|
|
101
|
+
if (options.location) {
|
|
102
|
+
clientOptions.location = options.location
|
|
103
|
+
}
|
|
104
|
+
if (options.encryptionKey) {
|
|
105
|
+
clientOptions.encryptionKey = options.encryptionKey
|
|
106
|
+
}
|
|
107
|
+
|
|
85
108
|
const compiler = Statement.makeCompilerSqlite(options.transformQueryNames)
|
|
86
109
|
const transformRows = Statement.defaultTransforms(
|
|
87
110
|
options.transformResultNames!
|
|
88
111
|
).array
|
|
89
|
-
|
|
90
112
|
const handleError = (error: any) => new SqlError({ error })
|
|
91
113
|
|
|
92
114
|
const makeConnection = Effect.gen(function*(_) {
|
|
93
|
-
const db = Sqlite.open(
|
|
94
|
-
name: options.filename,
|
|
95
|
-
location: options.location!,
|
|
96
|
-
encryptionKey: options.encryptionKey!
|
|
97
|
-
})
|
|
115
|
+
const db = Sqlite.open(clientOptions)
|
|
98
116
|
yield* _(Effect.addFinalizer(() => Effect.sync(() => db.close())))
|
|
99
117
|
|
|
100
118
|
const run = (
|
|
@@ -121,7 +139,7 @@ export const make = (
|
|
|
121
139
|
? (sql: string, params?: ReadonlyArray<Statement.Primitive>) => Effect.map(run(sql, params), transformRows)
|
|
122
140
|
: run
|
|
123
141
|
|
|
124
|
-
return identity<
|
|
142
|
+
return identity<SqliteConnection>({
|
|
125
143
|
execute(sql, params) {
|
|
126
144
|
return runTransform(sql, params)
|
|
127
145
|
},
|
|
@@ -142,6 +160,35 @@ export const make = (
|
|
|
142
160
|
},
|
|
143
161
|
executeStream() {
|
|
144
162
|
return Effect.dieMessage("executeStream not implemented")
|
|
163
|
+
},
|
|
164
|
+
reactive<A>(statement: Statement.Statement<A>, tables: ReadonlyArray<string>) {
|
|
165
|
+
const [query, params] = statement.compile()
|
|
166
|
+
return Queue.sliding<ReadonlyArray<A>>(1).pipe(
|
|
167
|
+
Effect.tap((queue) =>
|
|
168
|
+
this.execute(query, params).pipe(
|
|
169
|
+
Effect.flatMap((rows) => queue.offer(rows))
|
|
170
|
+
)
|
|
171
|
+
),
|
|
172
|
+
Effect.tap((queue) =>
|
|
173
|
+
Effect.acquireRelease(
|
|
174
|
+
Effect.try({
|
|
175
|
+
try: () =>
|
|
176
|
+
db.reactiveExecute({
|
|
177
|
+
query,
|
|
178
|
+
arguments: params as any,
|
|
179
|
+
tables: tables as Array<string>,
|
|
180
|
+
callback(data) {
|
|
181
|
+
queue.unsafeOffer(data.rows)
|
|
182
|
+
}
|
|
183
|
+
}),
|
|
184
|
+
catch: handleError
|
|
185
|
+
}),
|
|
186
|
+
(cancel) => Effect.sync(cancel)
|
|
187
|
+
)
|
|
188
|
+
),
|
|
189
|
+
Effect.map(Stream.fromQueue),
|
|
190
|
+
Stream.unwrapScoped
|
|
191
|
+
)
|
|
145
192
|
}
|
|
146
193
|
})
|
|
147
194
|
})
|
|
@@ -170,7 +217,16 @@ export const make = (
|
|
|
170
217
|
transactionAcquirer,
|
|
171
218
|
spanAttributes: [[Otel.SEMATTRS_DB_SYSTEM, Otel.DBSYSTEMVALUES_SQLITE]]
|
|
172
219
|
}) as SqliteClient,
|
|
173
|
-
{
|
|
220
|
+
{
|
|
221
|
+
[TypeId]: TypeId,
|
|
222
|
+
config: options,
|
|
223
|
+
reactive<A>(statement: Statement.Statement<A>, tables: ReadonlyArray<string>) {
|
|
224
|
+
return Stream.unwrap(Effect.map(
|
|
225
|
+
acquirer,
|
|
226
|
+
(connection) => connection.reactive(statement, tables)
|
|
227
|
+
))
|
|
228
|
+
}
|
|
229
|
+
}
|
|
174
230
|
)
|
|
175
231
|
})
|
|
176
232
|
|