@effect-app/infra 4.0.0-beta.112 → 4.0.0-beta.113
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/CHANGELOG.md +14 -0
- package/dist/Model/Repository/Registry.d.ts +20 -0
- package/dist/Model/Repository/Registry.d.ts.map +1 -0
- package/dist/Model/Repository/Registry.js +17 -0
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
- package/dist/Model/Repository/internal/internal.js +2 -1
- package/dist/Model/Repository/makeRepo.d.ts +3 -2
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
- package/dist/Model/Repository/makeRepo.js +4 -1
- package/dist/Model/Repository/service.d.ts +5 -0
- package/dist/Model/Repository/service.d.ts.map +1 -1
- package/dist/Model/Repository.d.ts +1 -0
- package/dist/Model/Repository.d.ts.map +1 -1
- package/dist/Model/Repository.js +2 -1
- package/dist/Model.d.ts +1 -0
- package/dist/Model.d.ts.map +1 -1
- package/dist/Model.js +2 -1
- package/dist/OperationsRepo.d.ts +1 -1
- package/dist/Store/Cosmos.d.ts.map +1 -1
- package/dist/Store/Cosmos.js +10 -10
- package/dist/Store/Disk.d.ts.map +1 -1
- package/dist/Store/Disk.js +22 -18
- package/dist/Store/Memory.d.ts.map +1 -1
- package/dist/Store/Memory.js +23 -18
- package/dist/Store/SQL/Pg.d.ts.map +1 -1
- package/dist/Store/SQL/Pg.js +27 -21
- package/dist/Store/SQL.d.ts.map +1 -1
- package/dist/Store/SQL.js +52 -40
- package/dist/Store/index.d.ts +1 -1
- package/dist/Store/index.d.ts.map +1 -1
- package/dist/Store/index.js +4 -2
- package/dist/Store/service.d.ts +5 -0
- package/dist/Store/service.d.ts.map +1 -1
- package/dist/Store/service.js +1 -1
- package/dist/api/internal/RequestContextMiddleware.d.ts +1 -1
- package/package.json +6 -2
- package/src/Model/Repository/Registry.ts +33 -0
- package/src/Model/Repository/internal/internal.ts +1 -0
- package/src/Model/Repository/makeRepo.ts +5 -2
- package/src/Model/Repository/service.ts +6 -0
- package/src/Model/Repository.ts +1 -0
- package/src/Model.ts +1 -0
- package/src/Store/Cosmos.ts +10 -12
- package/src/Store/Disk.ts +35 -30
- package/src/Store/Memory.ts +25 -18
- package/src/Store/SQL/Pg.ts +29 -42
- package/src/Store/SQL.ts +58 -83
- package/src/Store/index.ts +2 -1
- package/src/Store/service.ts +5 -0
- package/test/dist/query.test.d.ts.map +1 -1
- package/test/dist/rawQuery.test.d.ts.map +1 -1
- package/test/query.test.ts +22 -19
- package/test/rawQuery.test.ts +4 -2
- package/test/validateSample.test.ts +11 -8
package/dist/Store/SQL.js
CHANGED
|
@@ -52,9 +52,9 @@ function makeSQLStoreInt(dialect, jsonColumnType) {
|
|
|
52
52
|
}
|
|
53
53
|
return namespace;
|
|
54
54
|
}));
|
|
55
|
-
|
|
55
|
+
const ensureTable = sql
|
|
56
56
|
.unsafe(`CREATE TABLE IF NOT EXISTS "${tableName}" (id TEXT NOT NULL, _namespace TEXT NOT NULL DEFAULT 'primary', _etag TEXT, data ${jsonColumnType} NOT NULL, PRIMARY KEY (id, _namespace))`)
|
|
57
|
-
.pipe(Effect.orDie);
|
|
57
|
+
.pipe(Effect.orDie, Effect.asVoid);
|
|
58
58
|
const toRow = (e) => {
|
|
59
59
|
const newE = makeETag(e);
|
|
60
60
|
const id = newE[idKey];
|
|
@@ -99,25 +99,31 @@ function makeSQLStoreInt(dialect, jsonColumnType) {
|
|
|
99
99
|
.pipe(Effect.orDie, Effect.map((_) => _));
|
|
100
100
|
const ctx = yield* Effect.context();
|
|
101
101
|
const seedCache = new Map();
|
|
102
|
-
const makeSeedEffect = (ns)
|
|
103
|
-
|
|
104
|
-
if (existing.length > 0)
|
|
105
|
-
return Effect.void;
|
|
106
|
-
return InfraLogger.logInfo(`Seeding data for ${name} (namespace: ${ns})`).pipe(Effect.andThen(seed), Effect.flatMap((items) => Effect.flatMapOption(Effect.succeed(toNonEmptyArray([...items])), (a) => bulkSetInternal(a, ns))), Effect.andThen(exec(`INSERT INTO "${tableName}" (id, _namespace, _etag, data) VALUES (?, ?, ?, ?)`, [seedMarkerId, `__seed__::${ns}`, null, JSON.stringify({ _marker: true })])), Effect.provide(ctx), Effect.orDie);
|
|
107
|
-
}));
|
|
108
|
-
const seedNamespace = Effect.fn("seedNamespace")(function* (ns) {
|
|
102
|
+
const makeSeedEffect = Effect.fnUntraced(function* (ns) {
|
|
103
|
+
yield* ensureTable;
|
|
109
104
|
if (!seed)
|
|
110
105
|
return;
|
|
106
|
+
const existing = yield* exec(`SELECT id FROM "${tableName}" WHERE id = ? AND _namespace = ?`, [seedMarkerId, `__seed__::${ns}`]);
|
|
107
|
+
if (existing.length > 0)
|
|
108
|
+
return;
|
|
109
|
+
yield* InfraLogger.logInfo(`Seeding data for ${name} (namespace: ${ns})`);
|
|
110
|
+
const items = yield* seed.pipe(Effect.provide(ctx), Effect.orDie);
|
|
111
|
+
const ne = toNonEmptyArray([...items]);
|
|
112
|
+
if (Option.isSome(ne))
|
|
113
|
+
yield* bulkSetInternal(ne.value, ns);
|
|
114
|
+
yield* exec(`INSERT INTO "${tableName}" (id, _namespace, _etag, data) VALUES (?, ?, ?, ?)`, [seedMarkerId, `__seed__::${ns}`, null, JSON.stringify({ _marker: true })]);
|
|
115
|
+
});
|
|
116
|
+
const seedNamespace = (ns) => {
|
|
111
117
|
let cached = seedCache.get(ns);
|
|
112
118
|
if (!cached) {
|
|
113
|
-
cached =
|
|
119
|
+
cached = Effect.cached(makeSeedEffect(ns)).pipe(Effect.runSync);
|
|
114
120
|
seedCache.set(ns, cached);
|
|
115
121
|
}
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
const resolveAndSeed = resolveNamespace.pipe(Effect.tap((ns) => seedNamespace(ns)));
|
|
122
|
+
return cached;
|
|
123
|
+
};
|
|
119
124
|
const s = {
|
|
120
|
-
|
|
125
|
+
seedNamespace: (ns) => seedNamespace(ns),
|
|
126
|
+
all: resolveNamespace.pipe(Effect.flatMap((ns) => exec(`SELECT id, _etag, data FROM "${tableName}" WHERE _namespace = ?`, [ns])
|
|
121
127
|
.pipe(Effect.map((rows) => rows.map((r) => parseRow(r, idKey, defaultValues))), Effect.withSpan("SQL.all [effect-app/infra/Store]", {
|
|
122
128
|
attributes: {
|
|
123
129
|
"repository.table_name": tableName,
|
|
@@ -125,7 +131,7 @@ function makeSQLStoreInt(dialect, jsonColumnType) {
|
|
|
125
131
|
"repository.namespace": ns
|
|
126
132
|
}
|
|
127
133
|
}, { captureStackTrace: false })))),
|
|
128
|
-
find: (id) =>
|
|
134
|
+
find: (id) => resolveNamespace.pipe(Effect.flatMap((ns) => exec(`SELECT id, _etag, data FROM "${tableName}" WHERE id = ? AND _namespace = ?`, [id, ns])
|
|
129
135
|
.pipe(Effect.map((rows) => {
|
|
130
136
|
const row = rows[0];
|
|
131
137
|
return row
|
|
@@ -137,7 +143,7 @@ function makeSQLStoreInt(dialect, jsonColumnType) {
|
|
|
137
143
|
filter: (f) => {
|
|
138
144
|
const filter = f
|
|
139
145
|
.filter;
|
|
140
|
-
return
|
|
146
|
+
return resolveNamespace
|
|
141
147
|
.pipe(Effect
|
|
142
148
|
.flatMap((ns) => Effect
|
|
143
149
|
.sync(() => {
|
|
@@ -181,18 +187,18 @@ function makeSQLStoreInt(dialect, jsonColumnType) {
|
|
|
181
187
|
attributes: { "repository.table_name": tableName, "repository.model_name": name }
|
|
182
188
|
}, { captureStackTrace: false }))));
|
|
183
189
|
},
|
|
184
|
-
set: (e) =>
|
|
190
|
+
set: (e) => resolveNamespace.pipe(Effect.flatMap((ns) => setInternal(e, ns).pipe(Effect.withSpan("SQL.set [effect-app/infra/Store]", {
|
|
185
191
|
attributes: { "repository.table_name": tableName, "repository.model_name": name, id: e[idKey] }
|
|
186
192
|
}, { captureStackTrace: false })))),
|
|
187
|
-
batchSet: (items) =>
|
|
193
|
+
batchSet: (items) => resolveNamespace.pipe(Effect.flatMap((ns) => bulkSetInternal(items, ns).pipe(Effect.withSpan("SQL.batchSet [effect-app/infra/Store]", {
|
|
188
194
|
attributes: { "repository.table_name": tableName, "repository.model_name": name }
|
|
189
195
|
}, { captureStackTrace: false })))),
|
|
190
|
-
bulkSet: (items) =>
|
|
196
|
+
bulkSet: (items) => resolveNamespace.pipe(Effect.flatMap((ns) => bulkSetInternal(items, ns).pipe(Effect.withSpan("SQL.bulkSet [effect-app/infra/Store]", {
|
|
191
197
|
attributes: { "repository.table_name": tableName, "repository.model_name": name }
|
|
192
198
|
}, { captureStackTrace: false })))),
|
|
193
199
|
batchRemove: (ids) => {
|
|
194
200
|
const placeholders = ids.map(() => "?").join(", ");
|
|
195
|
-
return
|
|
201
|
+
return resolveNamespace.pipe(Effect.flatMap((ns) => exec(`DELETE FROM "${tableName}" WHERE id IN (${placeholders}) AND _namespace = ?`, [...ids, ns])
|
|
196
202
|
.pipe(Effect.asVoid, Effect.withSpan("SQL.batchRemove [effect-app/infra/Store]", {
|
|
197
203
|
attributes: { "repository.table_name": tableName, "repository.model_name": name }
|
|
198
204
|
}, { captureStackTrace: false }))));
|
|
@@ -229,7 +235,8 @@ function makeSQLiteStorePerNs(withNsSql, { prefix }) {
|
|
|
229
235
|
return { id, _etag: newE._etag, data, item: newE };
|
|
230
236
|
};
|
|
231
237
|
const exec = (ns, query, params) => withNsSql(ns, (sql) => sql.unsafe(query, params).pipe(Effect.orDie));
|
|
232
|
-
const ensureTable = (ns) => exec(ns, `CREATE TABLE IF NOT EXISTS "${tableName}" (id TEXT NOT NULL PRIMARY KEY, _etag TEXT, data JSON NOT NULL)`)
|
|
238
|
+
const ensureTable = (ns) => exec(ns, `CREATE TABLE IF NOT EXISTS "${tableName}" (id TEXT NOT NULL PRIMARY KEY, _etag TEXT, data JSON NOT NULL)`)
|
|
239
|
+
.pipe(Effect.asVoid);
|
|
233
240
|
const seedMarkerId = `__seed_marker__`;
|
|
234
241
|
const setInternal = (e, ns) => Effect.gen(function* () {
|
|
235
242
|
const row = toRow(e);
|
|
@@ -266,26 +273,31 @@ function makeSQLiteStorePerNs(withNsSql, { prefix }) {
|
|
|
266
273
|
.pipe(Effect.orDie, Effect.map((_) => _)));
|
|
267
274
|
const ctx = yield* Effect.context();
|
|
268
275
|
const seedCache = new Map();
|
|
269
|
-
const makeSeedEffect = (
|
|
270
|
-
.pipe(Effect.flatMap((existing) => {
|
|
271
|
-
if (existing.length > 0)
|
|
272
|
-
return Effect.void;
|
|
273
|
-
return InfraLogger.logInfo(`Seeding data for ${name} (namespace: ${ns})`).pipe(Effect.andThen(seed), Effect.flatMap((items) => Effect.flatMapOption(Effect.succeed(toNonEmptyArray([...items])), (a) => bulkSetInternal(a, ns))), Effect.andThen(exec(ns, `INSERT INTO "${tableName}" (id, _etag, data) VALUES (?, ?, ?)`, [seedMarkerId, null, JSON.stringify({ _marker: true })])), Effect.provide(ctx), Effect.orDie);
|
|
274
|
-
}));
|
|
275
|
-
const seedNamespace = Effect.fn("seedNamespace")(function* (ns) {
|
|
276
|
+
const makeSeedEffect = Effect.fnUntraced(function* (ns) {
|
|
276
277
|
yield* ensureTable(ns);
|
|
277
278
|
if (!seed)
|
|
278
279
|
return;
|
|
280
|
+
const existing = yield* exec(ns, `SELECT id FROM "${tableName}" WHERE id = ?`, [seedMarkerId]);
|
|
281
|
+
if (existing.length > 0)
|
|
282
|
+
return;
|
|
283
|
+
yield* InfraLogger.logInfo(`Seeding data for ${name} (namespace: ${ns})`);
|
|
284
|
+
const items = yield* seed.pipe(Effect.provide(ctx), Effect.orDie);
|
|
285
|
+
const ne = toNonEmptyArray([...items]);
|
|
286
|
+
if (Option.isSome(ne))
|
|
287
|
+
yield* bulkSetInternal(ne.value, ns);
|
|
288
|
+
yield* exec(ns, `INSERT INTO "${tableName}" (id, _etag, data) VALUES (?, ?, ?)`, [seedMarkerId, null, JSON.stringify({ _marker: true })]);
|
|
289
|
+
});
|
|
290
|
+
const seedNamespace = (ns) => {
|
|
279
291
|
let cached = seedCache.get(ns);
|
|
280
292
|
if (!cached) {
|
|
281
|
-
cached =
|
|
293
|
+
cached = Effect.cached(makeSeedEffect(ns)).pipe(Effect.runSync);
|
|
282
294
|
seedCache.set(ns, cached);
|
|
283
295
|
}
|
|
284
|
-
|
|
285
|
-
}
|
|
286
|
-
const resolveAndSeed = resolveNamespace.pipe(Effect.tap((ns) => seedNamespace(ns)));
|
|
296
|
+
return cached;
|
|
297
|
+
};
|
|
287
298
|
const s = {
|
|
288
|
-
|
|
299
|
+
seedNamespace: (ns) => seedNamespace(ns),
|
|
300
|
+
all: resolveNamespace.pipe(Effect.flatMap((ns) => exec(ns, `SELECT id, _etag, data FROM "${tableName}"`)
|
|
289
301
|
.pipe(Effect.map((rows) => rows.map((r) => parseRow(r, idKey, defaultValues))), Effect.withSpan("SQLite.all [effect-app/infra/Store]", {
|
|
290
302
|
attributes: {
|
|
291
303
|
"repository.table_name": tableName,
|
|
@@ -293,7 +305,7 @@ function makeSQLiteStorePerNs(withNsSql, { prefix }) {
|
|
|
293
305
|
"repository.namespace": ns
|
|
294
306
|
}
|
|
295
307
|
}, { captureStackTrace: false })))),
|
|
296
|
-
find: (id) =>
|
|
308
|
+
find: (id) => resolveNamespace.pipe(Effect.flatMap((ns) => exec(ns, `SELECT id, _etag, data FROM "${tableName}" WHERE id = ?`, [id])
|
|
297
309
|
.pipe(Effect.map((rows) => {
|
|
298
310
|
const row = rows[0];
|
|
299
311
|
return row
|
|
@@ -305,7 +317,7 @@ function makeSQLiteStorePerNs(withNsSql, { prefix }) {
|
|
|
305
317
|
filter: (f) => {
|
|
306
318
|
const filter = f
|
|
307
319
|
.filter;
|
|
308
|
-
return
|
|
320
|
+
return resolveNamespace
|
|
309
321
|
.pipe(Effect
|
|
310
322
|
.flatMap((ns) => Effect
|
|
311
323
|
.sync(() => buildWhereSQLQuery(sqliteDialect, idKey, filter ? [{ t: "where-scope", result: filter, relation: "some" }] : [], tableName, defaultValues, f
|
|
@@ -329,18 +341,18 @@ function makeSQLiteStorePerNs(withNsSql, { prefix }) {
|
|
|
329
341
|
attributes: { "repository.table_name": tableName, "repository.model_name": name }
|
|
330
342
|
}, { captureStackTrace: false }))));
|
|
331
343
|
},
|
|
332
|
-
set: (e) =>
|
|
344
|
+
set: (e) => resolveNamespace.pipe(Effect.flatMap((ns) => setInternal(e, ns).pipe(Effect.withSpan("SQLite.set [effect-app/infra/Store]", {
|
|
333
345
|
attributes: { "repository.table_name": tableName, "repository.model_name": name, id: e[idKey] }
|
|
334
346
|
}, { captureStackTrace: false })))),
|
|
335
|
-
batchSet: (items) =>
|
|
347
|
+
batchSet: (items) => resolveNamespace.pipe(Effect.flatMap((ns) => bulkSetInternal(items, ns).pipe(Effect.withSpan("SQLite.batchSet [effect-app/infra/Store]", {
|
|
336
348
|
attributes: { "repository.table_name": tableName, "repository.model_name": name }
|
|
337
349
|
}, { captureStackTrace: false })))),
|
|
338
|
-
bulkSet: (items) =>
|
|
350
|
+
bulkSet: (items) => resolveNamespace.pipe(Effect.flatMap((ns) => bulkSetInternal(items, ns).pipe(Effect.withSpan("SQLite.bulkSet [effect-app/infra/Store]", {
|
|
339
351
|
attributes: { "repository.table_name": tableName, "repository.model_name": name }
|
|
340
352
|
}, { captureStackTrace: false })))),
|
|
341
353
|
batchRemove: (ids) => {
|
|
342
354
|
const placeholders = ids.map(() => "?").join(", ");
|
|
343
|
-
return
|
|
355
|
+
return resolveNamespace.pipe(Effect.flatMap((ns) => exec(ns, `DELETE FROM "${tableName}" WHERE id IN (${placeholders})`, [...ids])
|
|
344
356
|
.pipe(Effect.asVoid, Effect.withSpan("SQLite.batchRemove [effect-app/infra/Store]", {
|
|
345
357
|
attributes: { "repository.table_name": tableName, "repository.model_name": name }
|
|
346
358
|
}, { captureStackTrace: false }))));
|
|
@@ -367,4 +379,4 @@ export function SQLiteStoreLayer(cfg, options) {
|
|
|
367
379
|
return StoreMaker
|
|
368
380
|
.toLayer(makeSQLStoreInt(sqliteDialect, "JSON")(cfg));
|
|
369
381
|
}
|
|
370
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL1NRTC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQThCLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3JDLE9BQU8sRUFBZ0csVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3ZJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQW1CLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzdGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFJckMsTUFBTSxPQUFPLGlCQUNYLFNBQVEsT0FBTyxDQUFDLE9BQU8sRUFBMEMsQ0FBQyw4QkFBOEIsQ0FBQztDQUNqRztBQUVGLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsR0FBdUQsRUFDdkQsS0FBa0IsRUFDbEIsYUFBK0IsRUFDQSxFQUFFO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJ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
|
|
382
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0b3JlL1NRTC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQ2pELE9BQU8sRUFBRSxNQUFNLEVBQThCLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUUxQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3JDLE9BQU8sRUFBZ0csVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3ZJLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQW1CLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzdGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFJckMsTUFBTSxPQUFPLGlCQUNYLFNBQVEsT0FBTyxDQUFDLE9BQU8sRUFBMEMsQ0FBQyw4QkFBOEIsQ0FBQztDQUNqRztBQUVGLGdCQUFnQjtBQUNoQixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsR0FBdUQsRUFDdkQsS0FBa0IsRUFDbEIsYUFBK0IsRUFDQSxFQUFFO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJ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
|
package/dist/Store/index.d.ts
CHANGED
|
@@ -3,6 +3,6 @@ import type { SqlClient } from "effect/unstable/sql";
|
|
|
3
3
|
import type { StorageConfig } from "./service.js";
|
|
4
4
|
export declare function StoreMakerLayer(cfg: StorageConfig, options?: {
|
|
5
5
|
makeSqlClientLayer?: (namespace: string) => Layer.Layer<SqlClient.SqlClient>;
|
|
6
|
-
}): Layer.Layer<import("./service.js").StoreMaker, never, SqlClient.SqlClient>;
|
|
6
|
+
}): Layer.Layer<import("./service.js").StoreMaker | import("../Model.js").RepositoryRegistry, never, SqlClient.SqlClient>;
|
|
7
7
|
export * from "./service.js";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Store/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,EAAY,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Store/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,EAAY,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAMpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAIjD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,aAAa,EAClB,OAAO,CAAC,EAAE;IAAE,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;CAAE,yHA+B3F;AAED,cAAc,cAAc,CAAA"}
|
package/dist/Store/index.js
CHANGED
|
@@ -3,6 +3,8 @@ import { Effect, Layer, Redacted } from "effect-app";
|
|
|
3
3
|
import { CosmosStoreLayer } from "./Cosmos.js";
|
|
4
4
|
import { DiskStoreLayer } from "./Disk.js";
|
|
5
5
|
import { MemoryStoreLive } from "./Memory.js";
|
|
6
|
+
// import { RedisStoreLayer } from "./Redis.js"
|
|
7
|
+
import { RepositoryRegistryLive } from "../Model.js";
|
|
6
8
|
import { SQLiteStoreLayer } from "./SQL.js";
|
|
7
9
|
import { PgStoreLayer } from "./SQL/Pg.js";
|
|
8
10
|
export function StoreMakerLayer(cfg, options) {
|
|
@@ -33,7 +35,7 @@ export function StoreMakerLayer(cfg, options) {
|
|
|
33
35
|
console.log("Using Cosmos DB store");
|
|
34
36
|
return CosmosStoreLayer(cfg);
|
|
35
37
|
})
|
|
36
|
-
.pipe(Layer.unwrap);
|
|
38
|
+
.pipe(Layer.unwrap, Layer.merge(RepositoryRegistryLive));
|
|
37
39
|
}
|
|
38
40
|
export * from "./service.js";
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU3RvcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdDLCtDQUErQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFMUMsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsR0FBa0IsRUFDbEIsT0FBMEY7SUFFMUYsT0FBTyxNQUFNO1NBQ1YsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNULE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtZQUNwQyxPQUFPLGVBQWUsQ0FBQTtRQUN4QixDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDckMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLENBQUMsQ0FBQTtZQUN6QyxPQUFPLGNBQWMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDakMsQ0FBQztRQUNELElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtZQUNqQyxPQUFPLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN2QyxDQUFDO1FBQ0QsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO1lBQ3JDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzFCLENBQUM7UUFDRCwyQ0FBMkM7UUFDM0MscUNBQXFDO1FBQ3JDLGdDQUFnQztRQUNoQyxJQUFJO1FBRUosT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1FBQ3BDLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDOUIsQ0FBQyxDQUFDO1NBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUE7QUFDNUQsQ0FBQztBQUVELGNBQWMsY0FBYyxDQUFBIn0=
|
package/dist/Store/service.d.ts
CHANGED
|
@@ -75,6 +75,11 @@ export interface Store<IdKey extends keyof Encoded, Encoded extends FieldValues,
|
|
|
75
75
|
bulkSet: (items: NonEmptyReadonlyArray<PM>) => Effect.Effect<NonEmptyReadonlyArray<PM>, OptimisticConcurrencyException>;
|
|
76
76
|
batchRemove: (ids: NonEmptyReadonlyArray<Encoded[IdKey]>, partitionKey?: string) => Effect.Effect<void>;
|
|
77
77
|
queryRaw: <Out>(query: RawQuery<Encoded, Out>) => Effect.Effect<readonly Out[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Explicitly seed a namespace. Primary is seeded eagerly on initialization.
|
|
80
|
+
* Non-primary namespaces must be seeded explicitly before use.
|
|
81
|
+
*/
|
|
82
|
+
seedNamespace: (namespace: string) => Effect.Effect<void>;
|
|
78
83
|
}
|
|
79
84
|
declare const StoreMaker_base: Context.OpaqueClass<StoreMaker, "effect-app/StoreMaker", {
|
|
80
85
|
make: <IdKey extends keyof Encoded, Encoded extends FieldValues, R = never, E = never>(name: string, idKey: IdKey, seed?: Effect.Effect<Iterable<Encoded>, E, R>, config?: StoreConfig<Encoded>) => Effect.Effect<Store<IdKey, Encoded>, E, R>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/Store/service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/Store/service.ts"],"names":[],"mappings":"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"}
|
package/dist/Store/service.js
CHANGED
|
@@ -86,4 +86,4 @@ export const makeContextMap = () => {
|
|
|
86
86
|
const makeMap = Effect.sync(() => makeContextMap());
|
|
87
87
|
export class ContextMap extends Context.Opaque()("effect-app/ContextMap", { make: makeMap }) {
|
|
88
88
|
}
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TdG9yZS9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUEwRCxNQUFNLFlBQVksQ0FBQTtBQUNwRyxPQUFPLEtBQUssU0FBUyxNQUFNLGtCQUFrQixDQUFBO0FBOEY3QyxNQUFNLE9BQU8sVUFBVyxTQUFRLE9BQU8sQ0FBQyxNQUFNLEVBTzFDLENBQUMsdUJBQXVCLENBQUM7Q0FDNUI7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxFQUFFO0lBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0lBQ3ZDLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzdDLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBVSxFQUFFLElBQXdCLEVBQUUsRUFBRTtRQUN2RCxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ2xCLENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDckIsQ0FBQztJQUNILENBQUMsQ0FBQTtJQUVELCtCQUErQjtJQUMvQiwyQkFBMkI7SUFDM0IsZ0RBQWdEO0lBQ2hELE1BQU07SUFFTiwrQkFBK0I7SUFDL0IsMkJBQTJCO0lBQzNCLHNDQUFzQztJQUN0QyxNQUFNO0lBRU4sa0NBQWtDO0lBQ2xDLHdCQUF3QjtJQUN4QixvQ0FBb0M7SUFDcEMsU0FBUztJQUNULDJCQUEyQjtJQUMzQixjQUFjO0lBQ2QsSUFBSTtJQUVKLGlDQUFpQztJQUNqQyxvRkFBb0Y7SUFDcEYsb0lBQW9JO0lBQ3BJLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsNEdBQTRHO0lBQzVHLHNDQUFzQztJQUN0QyxrRUFBa0U7SUFDbEUsdURBQXVEO0lBQ3ZELHNCQUFzQjtJQUN0QixzQkFBc0I7SUFDdEIsU0FBUztJQUNULHFDQUFxQztJQUNyQyx5Q0FBeUM7SUFDekMsaUJBQWlCO0lBQ2pCLDZCQUE2QjtJQUM3QixtQkFBbUI7SUFDbkIsK0NBQStDO0lBQy9DLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsMkNBQTJDO0lBQzNDLHlCQUF5QjtJQUN6QixzQkFBc0I7SUFDdEIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQix5Q0FBeUM7SUFDekMscURBQXFEO0lBQ3JELG9CQUFvQjtJQUNwQixVQUFVO0lBQ1YsUUFBUTtJQUNSLE1BQU07SUFDTixJQUFJO0lBRUosTUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUE7SUFDeEMsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVuQyxPQUFPO1FBQ0wsR0FBRyxFQUFFLE9BQU87UUFDWixHQUFHLEVBQUUsT0FBTztRQUNaLGdCQUFnQixFQUFFLENBQUksR0FBVyxFQUFFLElBQWEsRUFBSyxFQUFFO1lBQ3JELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFrQixDQUFBO1lBQzNDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN4QixLQUFLLEdBQUcsSUFBSSxFQUFFLENBQUE7Z0JBQ2QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDdkIsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQztRQUNELHNCQUFzQixFQUFFLENBQVUsR0FBVyxFQUFFLElBQTRCLEVBQTBCLEVBQUUsQ0FDckcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQzVELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFrQixDQUFBO1lBQzdDLElBQUksS0FBSyxLQUFLLFNBQVM7Z0JBQUUsT0FBTyxLQUFLLENBQUE7WUFDckMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFBO1lBQ3JCLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ2pCLE9BQU8sQ0FBQyxDQUFBO1FBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNQLENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUE7QUFFbkQsTUFBTSxPQUFPLFVBQVcsU0FBUSxPQUFPLENBQUMsTUFBTSxFQUFjLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLENBQUM7Q0FDdkcifQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Effect } from "effect-app";
|
|
2
2
|
import { HttpServerRequest, HttpServerResponse } from "effect-app/http";
|
|
3
3
|
import { Locale } from "../../RequestContext.js";
|
|
4
|
-
export declare const RequestContextMiddleware: (defaultLocale?: Locale) => <E, R>(app: Effect.Effect<HttpServerResponse.HttpServerResponse, E, HttpServerRequest.HttpServerRequest
|
|
4
|
+
export declare const RequestContextMiddleware: (defaultLocale?: Locale) => <E, R>(app: Effect.Effect<HttpServerResponse.HttpServerResponse, E, R | HttpServerRequest.HttpServerRequest>) => Effect.Effect<HttpServerResponse.HttpServerResponse, E, HttpServerRequest.HttpServerRequest | Exclude<Exclude<R, import("effect/Tracer").ParentSpan>, never>>;
|
|
5
5
|
//# sourceMappingURL=RequestContextMiddleware.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.113",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"proper-lockfile": "^4.1.2",
|
|
14
14
|
"pure-rand": "7.0.1",
|
|
15
15
|
"query-string": "^9.3.1",
|
|
16
|
-
"effect-app": "4.0.0-beta.
|
|
16
|
+
"effect-app": "4.0.0-beta.113"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@azure/cosmos": "^4.9.2",
|
|
@@ -96,6 +96,10 @@
|
|
|
96
96
|
"types": "./dist/Model/Repository.d.ts",
|
|
97
97
|
"default": "./dist/Model/Repository.js"
|
|
98
98
|
},
|
|
99
|
+
"./Model/Repository/Registry": {
|
|
100
|
+
"types": "./dist/Model/Repository/Registry.d.ts",
|
|
101
|
+
"default": "./dist/Model/Repository/Registry.js"
|
|
102
|
+
},
|
|
99
103
|
"./Model/Repository/ext": {
|
|
100
104
|
"types": "./dist/Model/Repository/ext.d.ts",
|
|
101
105
|
"default": "./dist/Model/Repository/ext.js"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Context, Effect } from "effect-app"
|
|
2
|
+
|
|
3
|
+
export interface RegisteredRepository {
|
|
4
|
+
readonly seedNamespace: (namespace: string) => Effect.Effect<void>
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
const make = Effect.sync(() => {
|
|
8
|
+
const repos = new Map<string, RegisteredRepository>()
|
|
9
|
+
return {
|
|
10
|
+
register(modelName: string, repo: RegisteredRepository) {
|
|
11
|
+
repos.set(modelName, repo)
|
|
12
|
+
},
|
|
13
|
+
seedNamespace: (namespace: string) =>
|
|
14
|
+
Effect.suspend(() =>
|
|
15
|
+
Effect.forEach(
|
|
16
|
+
repos.values(),
|
|
17
|
+
(r) => r.seedNamespace(namespace),
|
|
18
|
+
{ concurrency: "unbounded", discard: true }
|
|
19
|
+
)
|
|
20
|
+
),
|
|
21
|
+
get entries(): ReadonlyMap<string, RegisteredRepository> {
|
|
22
|
+
return repos
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
export class RepositoryRegistry extends Context.Opaque<RepositoryRegistry, {
|
|
28
|
+
readonly register: (modelName: string, repo: RegisteredRepository) => void
|
|
29
|
+
readonly seedNamespace: (namespace: string) => Effect.Effect<void>
|
|
30
|
+
readonly entries: ReadonlyMap<string, RegisteredRepository>
|
|
31
|
+
}>()("effect-app/RepositoryRegistry", { make }) {}
|
|
32
|
+
|
|
33
|
+
export const RepositoryRegistryLive = RepositoryRegistry.toLayer(RepositoryRegistry.make)
|
|
@@ -417,6 +417,7 @@ export function makeRepoInternal<
|
|
|
417
417
|
saveAndPublish,
|
|
418
418
|
removeAndPublish,
|
|
419
419
|
removeById,
|
|
420
|
+
seedNamespace: (namespace: string) => store.seedNamespace(namespace),
|
|
420
421
|
validateSample,
|
|
421
422
|
queryRaw<A, Out, QR>(schema: S.Codec<A, Out, QR>, q: Q.RawQuery<Encoded, Out>) {
|
|
422
423
|
const dec = S.decodeEffect(S.Array(schema))
|
|
@@ -12,6 +12,7 @@ import type { StoreConfig, StoreMaker } from "../../Store.js"
|
|
|
12
12
|
import type { FieldValues } from "../filter/types.js"
|
|
13
13
|
import { type ExtendedRepository, extendRepo } from "./ext.js"
|
|
14
14
|
import { makeRepoInternal } from "./internal/internal.js"
|
|
15
|
+
import { RepositoryRegistry } from "./Registry.js"
|
|
15
16
|
import type { Repository } from "./service.js"
|
|
16
17
|
|
|
17
18
|
export interface RepositoryOptions<
|
|
@@ -85,7 +86,7 @@ export const makeRepo: {
|
|
|
85
86
|
): Effect.Effect<
|
|
86
87
|
ExtendedRepository<T, Encoded, Evt, ItemType, IdKey, Exclude<RSchema, RCtx>, RPublish>,
|
|
87
88
|
E,
|
|
88
|
-
RInitial | StoreMaker
|
|
89
|
+
RInitial | StoreMaker | RepositoryRegistry
|
|
89
90
|
>
|
|
90
91
|
<
|
|
91
92
|
ItemType extends string,
|
|
@@ -104,7 +105,7 @@ export const makeRepo: {
|
|
|
104
105
|
): Effect.Effect<
|
|
105
106
|
ExtendedRepository<T, Encoded, Evt, ItemType, "id", Exclude<RSchema, RCtx>, RPublish>,
|
|
106
107
|
E,
|
|
107
|
-
RInitial | StoreMaker
|
|
108
|
+
RInitial | StoreMaker | RepositoryRegistry
|
|
108
109
|
>
|
|
109
110
|
} = <
|
|
110
111
|
ItemType extends string,
|
|
@@ -135,5 +136,7 @@ export const makeRepo: {
|
|
|
135
136
|
let r = yield* mkRepo.make<RInitial, E, RPublish, RCtx>(options as any)
|
|
136
137
|
if (options.overrides) r = options.overrides(r)
|
|
137
138
|
const repo = extendRepo(r)
|
|
139
|
+
const registry = yield* RepositoryRegistry
|
|
140
|
+
registry.register(itemType, repo)
|
|
138
141
|
return repo
|
|
139
142
|
})
|
|
@@ -37,6 +37,12 @@ export interface Repository<
|
|
|
37
37
|
raw: RawQuery<Encoded, Out>
|
|
38
38
|
) => Effect.Effect<readonly T[], S.SchemaError, R>
|
|
39
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Explicitly seed a namespace. Primary is seeded eagerly on initialization.
|
|
42
|
+
* Non-primary namespaces must be seeded explicitly before use.
|
|
43
|
+
*/
|
|
44
|
+
readonly seedNamespace: (namespace: string) => Effect.Effect<void>
|
|
45
|
+
|
|
40
46
|
readonly query: {
|
|
41
47
|
// ending with projection
|
|
42
48
|
<
|
package/src/Model/Repository.ts
CHANGED
package/src/Model.ts
CHANGED