@effect/sql-sqlite-react-native 0.3.17 → 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.
@@ -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
  /**
@@ -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","name","filename","location","encryptionKey","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","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","tap","scope","release","assign","spanAttributes","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","layer","scopedContext","unwrap","pipe","flatMap","client","add"],"sources":["../../src/Client.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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":"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","ignoreList":[]}
@@ -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
  }
@@ -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;AAM5C,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;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;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;IAEnC,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;AAEnH;;;GAGG;AACH,eAAO,MAAM,IAAI,YACN,kBAAkB,KAC1B,OAAO,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,CA4F7C,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"}
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"}
@@ -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
  /**
@@ -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","name","filename","location","encryptionKey","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","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","tap","scope","release","assign","spanAttributes","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","layer","scopedContext","unwrap","pipe","flatMap","client","add"],"sources":["../../src/Client.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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.17",
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
- "@effect/sql": "^0.2.17",
18
- "effect": "^3.2.4"
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<Connection>({
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
- { [TypeId]: TypeId, config: options }
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