@effect-app/infra 2.3.5 → 2.4.1
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 +12 -0
- package/_cjs/services/OperationsRepo.cjs +10 -1
- package/_cjs/services/OperationsRepo.cjs.map +1 -1
- package/_cjs/services/Repository/dsl.cjs.map +1 -1
- package/_cjs/services/Repository/ext.cjs +58 -104
- package/_cjs/services/Repository/ext.cjs.map +1 -1
- package/_cjs/services/Repository/legacy.cjs +109 -0
- package/_cjs/services/Repository/legacy.cjs.map +1 -0
- package/_cjs/services/Repository.cjs +11 -0
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +4 -222
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/dist/services/OperationsRepo.d.ts +4 -1
- package/dist/services/OperationsRepo.d.ts.map +1 -1
- package/dist/services/OperationsRepo.js +12 -3
- package/dist/services/QueueMaker/errors.d.ts +1 -1
- package/dist/services/QueueMaker/errors.d.ts.map +1 -1
- package/dist/services/Repository/dsl.d.ts.map +1 -1
- package/dist/services/Repository/dsl.js +1 -1
- package/dist/services/Repository/ext.d.ts +43 -104
- package/dist/services/Repository/ext.d.ts.map +1 -1
- package/dist/services/Repository/ext.js +59 -93
- package/dist/services/Repository/legacy.d.ts +139 -0
- package/dist/services/Repository/legacy.d.ts.map +1 -0
- package/dist/services/Repository/legacy.js +100 -0
- package/dist/services/Repository/service.d.ts +21 -2
- package/dist/services/Repository/service.d.ts.map +1 -1
- package/dist/services/Repository.d.ts +1 -0
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +2 -1
- package/dist/services/RepositoryBase.d.ts +7 -237
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +5 -200
- package/dist/services/query/new-kid-interpreter.d.ts +1 -1
- package/examples/query.ts +3 -2
- package/package.json +11 -1
- package/src/services/OperationsRepo.ts +13 -4
- package/src/services/Repository/dsl.ts +1 -0
- package/src/services/Repository/ext.ts +269 -250
- package/src/services/Repository/legacy.ts +351 -0
- package/src/services/Repository/service.ts +44 -2
- package/src/services/Repository.ts +1 -0
- package/src/services/RepositoryBase.ts +12 -931
- package/test/query.test.ts +10 -8
|
@@ -3,82 +3,17 @@
|
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-unsafe-argument */
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
5
5
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
6
|
-
// import type { ParserEnv } from "effect-app/Schema/custom/Parser"
|
|
7
|
-
import { AnyPureDSL, byIdAndSaveWithPure, get, saveAllWithEffectInt, saveManyWithPure_, saveManyWithPureBatched_, saveWithPure_ } from "./Repository.js";
|
|
8
6
|
import { StoreMaker } from "./Store.js";
|
|
9
|
-
import { Array, Chunk,
|
|
7
|
+
import { Array, Chunk, Effect, Equivalence, flow, Option, pipe, PubSub, S, Unify } from "effect-app";
|
|
10
8
|
import { toNonEmptyArray } from "effect-app/Array";
|
|
11
9
|
import { flatMapOption } from "effect-app/Effect";
|
|
12
|
-
import { runTerm } from "effect-app/Pure";
|
|
13
10
|
import { NonNegativeInt } from "effect-app/Schema";
|
|
14
11
|
import { setupRequestContextFromCurrent } from "../api/setupRequest.js";
|
|
15
12
|
import { NotFoundError } from "../errors.js";
|
|
16
13
|
import { make as makeQuery } from "./query.js";
|
|
17
14
|
import * as Q from "./query.js";
|
|
15
|
+
import { extendRepo } from "./Repository/ext.js";
|
|
18
16
|
import { getContextMap } from "./Store/ContextMapContainer.js";
|
|
19
|
-
/**
|
|
20
|
-
* @tsplus type Repository
|
|
21
|
-
*/
|
|
22
|
-
export class RepositoryBaseC {
|
|
23
|
-
}
|
|
24
|
-
export class RepositoryBaseC1 extends RepositoryBaseC {
|
|
25
|
-
itemType;
|
|
26
|
-
constructor(itemType) {
|
|
27
|
-
super();
|
|
28
|
-
this.itemType = itemType;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
export class RepositoryBaseC2 extends RepositoryBaseC1 {
|
|
32
|
-
impl;
|
|
33
|
-
constructor(itemType, impl) {
|
|
34
|
-
super(itemType);
|
|
35
|
-
this.impl = impl;
|
|
36
|
-
this.saveAndPublish = this.impl.saveAndPublish;
|
|
37
|
-
this.removeAndPublish = this.impl.removeAndPublish;
|
|
38
|
-
this.find = this.impl.find;
|
|
39
|
-
this.all = this.impl.all;
|
|
40
|
-
this.changeFeed = this.impl.changeFeed;
|
|
41
|
-
this.mapped = this.impl.mapped;
|
|
42
|
-
this.query = this.impl.query;
|
|
43
|
-
}
|
|
44
|
-
// makes super calls a compiler error, as it should
|
|
45
|
-
saveAndPublish;
|
|
46
|
-
removeAndPublish;
|
|
47
|
-
find;
|
|
48
|
-
all;
|
|
49
|
-
changeFeed;
|
|
50
|
-
mapped;
|
|
51
|
-
query;
|
|
52
|
-
}
|
|
53
|
-
export class RepositoryBaseC3 extends RepositoryBaseC2 {
|
|
54
|
-
get(id) {
|
|
55
|
-
return Effect.andThen(this
|
|
56
|
-
.find(id), (_) => Effect.mapError(_, () => new NotFoundError({ type: this.itemType, id })));
|
|
57
|
-
}
|
|
58
|
-
log = (evt) => AnyPureDSL.log(evt);
|
|
59
|
-
removeById(id) {
|
|
60
|
-
return Effect.andThen(this.get(id), (_) => this.removeAndPublish([_]));
|
|
61
|
-
}
|
|
62
|
-
save = (...items) => this.saveAndPublish(items);
|
|
63
|
-
saveWithEvents = (events) => (...items) => this.saveAndPublish(items, events);
|
|
64
|
-
queryAndSavePure = (q, pure, batch) => this.query(q).pipe(Effect.andThen((_) => Array.isArray(_)
|
|
65
|
-
? batch === undefined
|
|
66
|
-
? saveManyWithPure_(this, _, pure)
|
|
67
|
-
: saveManyWithPureBatched_(this, _, pure, batch === "batched" ? 100 : batch)
|
|
68
|
-
: saveWithPure_(this, _, pure)));
|
|
69
|
-
/**
|
|
70
|
-
* NOTE: it's not as composable, only useful when the request is simple, and only this part needs request args.
|
|
71
|
-
*/
|
|
72
|
-
handleByIdAndSaveWithPure = (pure) => (req, ctx) => byIdAndSaveWithPure(this, req.id)(pure(req, ctx));
|
|
73
|
-
saveManyWithPure = (items, pure, batch) => batch
|
|
74
|
-
? Effect.forEach(Array.chunk_(items, batch === "batched" ? 100 : batch), (batch) => saveAllWithEffectInt(this, runTerm(pure, batch)))
|
|
75
|
-
: saveAllWithEffectInt(this, runTerm(pure, [...items]));
|
|
76
|
-
byIdAndSaveWithPure = (id, pure) => get(this, id).pipe(Effect.flatMap((item) => saveWithPure_(this, item, pure)));
|
|
77
|
-
saveWithPure(item, pure) {
|
|
78
|
-
return saveAllWithEffectInt(this, runTerm(pure, item)
|
|
79
|
-
.pipe(Effect.map(([item, events, a]) => [[item], events, a])));
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
17
|
const dedupe = Array.dedupeWith(Equivalence.string);
|
|
83
18
|
/**
|
|
84
19
|
* A base implementation to create a repository.
|
|
@@ -235,6 +170,7 @@ export function makeRepoInternal() {
|
|
|
235
170
|
const r = {
|
|
236
171
|
changeFeed,
|
|
237
172
|
itemType: name,
|
|
173
|
+
idKey,
|
|
238
174
|
find,
|
|
239
175
|
all,
|
|
240
176
|
saveAndPublish,
|
|
@@ -314,141 +250,10 @@ export function makeStore() {
|
|
|
314
250
|
return makeStore;
|
|
315
251
|
};
|
|
316
252
|
}
|
|
317
|
-
const makeRepoFunctions = (tag, itemType) => {
|
|
318
|
-
const { all } = Effect.serviceConstants(tag);
|
|
319
|
-
const { byIdAndSaveWithPure, find, get, query, queryAndSavePure, removeAndPublish, removeById, save, saveAndPublish, saveManyWithPure } = Effect.serviceFunctions(tag);
|
|
320
|
-
const mapped = (s) => Effect.map(tag, (_) => _.mapped(s));
|
|
321
|
-
return {
|
|
322
|
-
itemType,
|
|
323
|
-
all,
|
|
324
|
-
byIdAndSaveWithPure,
|
|
325
|
-
find,
|
|
326
|
-
removeById,
|
|
327
|
-
saveAndPublish,
|
|
328
|
-
removeAndPublish,
|
|
329
|
-
save,
|
|
330
|
-
get,
|
|
331
|
-
query,
|
|
332
|
-
mapped,
|
|
333
|
-
queryAndSavePure,
|
|
334
|
-
saveManyWithPure,
|
|
335
|
-
use: (body) => Effect.andThen(tag, body)
|
|
336
|
-
};
|
|
337
|
-
};
|
|
338
|
-
export const RepositoryBaseImpl = () => {
|
|
339
|
-
return () => (itemType, schema, idKey, jitM) => {
|
|
340
|
-
const mkRepo = makeRepoInternal()(itemType, schema, jitM ? (pm) => jitM(pm) : (pm) => pm, (e, _etag) => ({ ...e, _etag }), idKey);
|
|
341
|
-
class Cls extends RepositoryBaseC1 {
|
|
342
|
-
constructor() {
|
|
343
|
-
super(itemType);
|
|
344
|
-
}
|
|
345
|
-
static make = mkRepo.make;
|
|
346
|
-
static makeWith = ((a, b) => Effect.map(mkRepo.make(a), b));
|
|
347
|
-
static Q = Q.make();
|
|
348
|
-
static type = undefined;
|
|
349
|
-
}
|
|
350
|
-
const limit = Error.stackTraceLimit;
|
|
351
|
-
Error.stackTraceLimit = 2;
|
|
352
|
-
const creationError = new Error();
|
|
353
|
-
Error.stackTraceLimit = limit;
|
|
354
|
-
return Context.assignTag(undefined, creationError)(Object.assign(Cls, makeRepoFunctions(Cls, itemType)));
|
|
355
|
-
};
|
|
356
|
-
};
|
|
357
|
-
export const RepositoryDefaultImpl = () => {
|
|
358
|
-
const f = (itemType, schema, idKeyOrJitM, jitM) => {
|
|
359
|
-
if (!jitM && idKeyOrJitM !== undefined && typeof idKeyOrJitM === "function")
|
|
360
|
-
jitM = idKeyOrJitM;
|
|
361
|
-
const mkRepo = makeRepoInternal()(itemType, schema, jitM ? (pm) => jitM(pm) : (pm) => pm, (e, _etag) => ({ ...e, _etag }), idKeyOrJitM ?? "id");
|
|
362
|
-
class Cls extends RepositoryBaseC3 {
|
|
363
|
-
constructor(impl) {
|
|
364
|
-
super(itemType, impl);
|
|
365
|
-
}
|
|
366
|
-
static make = mkRepo.make;
|
|
367
|
-
static makeWith = ((a, b) => Effect.map(mkRepo.make(a), b));
|
|
368
|
-
static Q = Q.make();
|
|
369
|
-
static type = undefined;
|
|
370
|
-
}
|
|
371
|
-
const limit = Error.stackTraceLimit;
|
|
372
|
-
Error.stackTraceLimit = 2;
|
|
373
|
-
const creationError = new Error();
|
|
374
|
-
Error.stackTraceLimit = limit;
|
|
375
|
-
return Context.assignTag(undefined, creationError)(Object.assign(Cls, makeRepoFunctions(Cls, itemType))); // impl is missing, but its marked protected
|
|
376
|
-
};
|
|
377
|
-
return f;
|
|
378
|
-
};
|
|
379
|
-
export const RepositoryDefaultImpl2 = () => {
|
|
380
|
-
const f = (itemType, schema, options) => {
|
|
381
|
-
let layerCache = undefined;
|
|
382
|
-
let layerCache2 = undefined;
|
|
383
|
-
class Cls extends RepositoryBaseC3 {
|
|
384
|
-
constructor(impl) {
|
|
385
|
-
super(itemType, impl);
|
|
386
|
-
}
|
|
387
|
-
static Q = Q.make();
|
|
388
|
-
static get DefaultWithoutDependencies() {
|
|
389
|
-
const self = this;
|
|
390
|
-
return layerCache ??= Effect
|
|
391
|
-
.gen(function* () {
|
|
392
|
-
const opts = yield* options.options ?? Effect.succeed({});
|
|
393
|
-
const mkRepo = makeRepoInternal()(itemType, schema, options?.jitM ? (pm) => options.jitM(pm) : (pm) => pm, (e, _etag) => ({ ...e, _etag }), options.idKey ?? "id");
|
|
394
|
-
const r = yield* mkRepo.make({ ...options, ...opts });
|
|
395
|
-
const repo = new self(Object.assign(r, "ext" in opts ? opts.ext : {}));
|
|
396
|
-
return Layer.succeed(self, repo);
|
|
397
|
-
})
|
|
398
|
-
.pipe(Layer.unwrapEffect);
|
|
399
|
-
}
|
|
400
|
-
static get Default() {
|
|
401
|
-
const self = this;
|
|
402
|
-
return layerCache2 ??= options.dependencies
|
|
403
|
-
? self
|
|
404
|
-
.DefaultWithoutDependencies
|
|
405
|
-
.pipe(Layer.provide(options.dependencies))
|
|
406
|
-
: self.DefaultWithoutDependencies;
|
|
407
|
-
}
|
|
408
|
-
static type = undefined;
|
|
409
|
-
}
|
|
410
|
-
const limit = Error.stackTraceLimit;
|
|
411
|
-
Error.stackTraceLimit = 2;
|
|
412
|
-
const creationError = new Error();
|
|
413
|
-
Error.stackTraceLimit = limit;
|
|
414
|
-
// TODO: actual class name or expect a string identifier - careful with overlapping between modules
|
|
415
|
-
return Context.assignTag(registerName(itemType + "Repo"), creationError)(Object.assign(Cls, makeRepoFunctions(Cls, itemType))); // impl is missing, but its marked protected
|
|
416
|
-
};
|
|
417
|
-
return f;
|
|
418
|
-
};
|
|
419
253
|
export const makeRepo = (itemType, schema, options) => Effect.gen(function* () {
|
|
420
254
|
const mkRepo = makeRepoInternal()(itemType, schema, options?.jitM ? (pm) => options.jitM(pm) : (pm) => pm, (e, _etag) => ({ ...e, _etag }), options.idKey ?? "id");
|
|
421
255
|
const r = yield* mkRepo.make(options);
|
|
422
|
-
const repo =
|
|
256
|
+
const repo = extendRepo(r);
|
|
423
257
|
return repo;
|
|
424
258
|
});
|
|
425
|
-
const names = new Map();
|
|
426
|
-
const registerName = (name) => {
|
|
427
|
-
const existing = names.get(name);
|
|
428
|
-
if (existing === undefined) {
|
|
429
|
-
names.set(name, 1);
|
|
430
|
-
return name;
|
|
431
|
-
}
|
|
432
|
-
else {
|
|
433
|
-
const n = existing + 1;
|
|
434
|
-
names.set(name, n);
|
|
435
|
-
return name + "-" + existing;
|
|
436
|
-
}
|
|
437
|
-
};
|
|
438
|
-
// TODO: integrate with repo
|
|
439
|
-
export const makeRequest = (repo, idKey) => {
|
|
440
|
-
const _request = Request.tagged(`Get${repo.itemType}`);
|
|
441
|
-
const requestResolver = RequestResolver
|
|
442
|
-
.makeBatched((requests) => repo
|
|
443
|
-
.query(Q.where("id", "in", requests.map((_) => _.id))) // TODO
|
|
444
|
-
.pipe(Effect.andThen((items) => Effect.forEach(requests, (r) => Request.complete(r, Array
|
|
445
|
-
.findFirst(items, (_) => _[idKey] === r.id)
|
|
446
|
-
.pipe(Option.match({
|
|
447
|
-
onNone: () => Exit.fail(new NotFoundError({ type: repo.itemType, id: r.id })),
|
|
448
|
-
onSome: Exit.succeed
|
|
449
|
-
}))), { discard: true })), Effect
|
|
450
|
-
.catchAllCause((cause) => Effect.forEach(requests, Request.complete(Exit.failCause(cause)), { discard: true }))))
|
|
451
|
-
.pipe(RequestResolver.batchN(20), RequestResolver.contextFromServices(repo));
|
|
452
|
-
return (id) => Effect.request(_request({ id }), requestResolver);
|
|
453
|
-
};
|
|
454
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvUmVwb3NpdG9yeUJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELHdEQUF3RDtBQUN4RCwwREFBMEQ7QUFDMUQsNERBQTREO0FBQzVELHVEQUF1RDtBQUV2RCxtRUFBbUU7QUFDbkUsT0FBTyxFQUNMLFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsR0FBRyxFQUVILG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsd0JBQXdCLEVBQ3hCLGFBQWEsRUFDZCxNQUFNLGlCQUFpQixDQUFBO0FBQ3hCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFLdkMsT0FBTyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsT0FBTyxFQUNQLE1BQU0sRUFDTixXQUFXLEVBQ1gsSUFBSSxFQUNKLElBQUksRUFDSixLQUFLLEVBQ0wsTUFBTSxFQUNOLElBQUksRUFDSixNQUFNLEVBQ04sT0FBTyxFQUNQLGVBQWUsRUFDZixDQUFDLEVBQ0QsS0FBSyxFQUNOLE1BQU0sWUFBWSxDQUFBO0FBQ25CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBR3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUN2RSxPQUFPLEVBQTBCLGFBQWEsRUFBdUMsTUFBTSxjQUFjLENBQUE7QUFFekcsT0FBTyxFQUFFLElBQUksSUFBSSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFOUMsT0FBTyxLQUFLLENBQUMsTUFBTSxZQUFZLENBQUE7QUFDL0IsT0FB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
|
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVwb3NpdG9yeUJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvUmVwb3NpdG9yeUJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNERBQTREO0FBQzVELHdEQUF3RDtBQUN4RCwwREFBMEQ7QUFDMUQsNERBQTREO0FBQzVELHVEQUF1RDtBQUl2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBS3ZDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDcEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUVqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbEQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUU1QyxPQUFPLEVBQUUsSUFBSSxJQUFJLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUU5QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFlBQVksQ0FBQTtBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBRTlELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBRW5EOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQjtJQUc5QixPQUFPLENBT0wsSUFBYyxFQUNkLE1BQStCLEVBQy9CLE9BQWlDLEVB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
|
|
@@ -14,7 +14,7 @@ export declare const toFilter: <TFieldValues extends FieldValues, A, R>(q: QAll<
|
|
|
14
14
|
key: import("../../filter/types/path/eager.js").Path<TFieldValues>;
|
|
15
15
|
direction: "ASC" | "DESC";
|
|
16
16
|
}[]];
|
|
17
|
-
ttype: "
|
|
17
|
+
ttype: "one" | "many" | "count";
|
|
18
18
|
mode: "project" | "collect" | "transform";
|
|
19
19
|
filter: FilterResult[];
|
|
20
20
|
};
|
package/examples/query.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RepositoryDefaultImpl2 } from "@effect-app/infra/services/
|
|
1
|
+
import { RepositoryDefaultImpl2 } from "@effect-app/infra/services/Repository"
|
|
2
2
|
import { Effect, flow, Layer, ManagedRuntime, S } from "effect-app"
|
|
3
3
|
import { and, or, order, page, project, where } from "../src/services/query.js"
|
|
4
4
|
import { MemoryStoreLive } from "../src/services/Store/Memory.js"
|
|
@@ -43,7 +43,8 @@ class SomethingRepo extends RepositoryDefaultImpl2<SomethingRepo>()(
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
const program = Effect.gen(function*() {
|
|
46
|
-
const
|
|
46
|
+
const somethingRepo = yield* SomethingRepo
|
|
47
|
+
const r = yield* somethingRepo.query(flow(
|
|
47
48
|
where("displayName", "Verona"),
|
|
48
49
|
or(
|
|
49
50
|
where("displayName", "Riley"),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -500,6 +500,16 @@
|
|
|
500
500
|
"default": "./_cjs/services/Repository/ext.cjs"
|
|
501
501
|
}
|
|
502
502
|
},
|
|
503
|
+
"./services/Repository/legacy": {
|
|
504
|
+
"import": {
|
|
505
|
+
"types": "./dist/services/Repository/legacy.d.ts",
|
|
506
|
+
"default": "./dist/services/Repository/legacy.js"
|
|
507
|
+
},
|
|
508
|
+
"require": {
|
|
509
|
+
"types": "./dist/services/Repository/legacy.d.ts",
|
|
510
|
+
"default": "./_cjs/services/Repository/legacy.cjs"
|
|
511
|
+
}
|
|
512
|
+
},
|
|
503
513
|
"./services/Repository/service": {
|
|
504
514
|
"import": {
|
|
505
515
|
"types": "./dist/services/Repository/service.d.ts",
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
import { Effect } from "effect-app"
|
|
1
2
|
import { Operation } from "effect-app/Operations"
|
|
2
|
-
import {
|
|
3
|
+
import { makeRepo } from "./RepositoryBase.js"
|
|
3
4
|
|
|
4
|
-
export class OperationsRepo extends
|
|
5
|
-
"
|
|
6
|
-
|
|
5
|
+
export class OperationsRepo extends Effect.Service<OperationsRepo>()(
|
|
6
|
+
"OperationRepo",
|
|
7
|
+
{
|
|
8
|
+
effect: Effect.gen(function*() {
|
|
9
|
+
return yield* makeRepo("Operation", Operation, {
|
|
10
|
+
config: {
|
|
11
|
+
allowNamespace: () => true
|
|
12
|
+
}
|
|
13
|
+
})
|
|
14
|
+
})
|
|
15
|
+
}
|
|
7
16
|
) {}
|