@effect-app/infra 0.73.1 → 0.74.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 +24 -0
- package/_cjs/RequestContext.cjs +2 -4
- package/_cjs/RequestContext.cjs.map +1 -1
- package/_cjs/api/authorization.jwt.cjs +1 -2
- package/_cjs/api/authorization.jwt.cjs.map +1 -1
- package/_cjs/api/codec.cjs +4 -3
- package/_cjs/api/codec.cjs.map +1 -1
- package/_cjs/api/defaultErrorHandler.cjs +6 -8
- package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.test.cjs +2 -2
- package/_cjs/api/express/makeJsonSchema.test.cjs.map +1 -1
- package/_cjs/api/express/schema/jwt.cjs +8 -10
- package/_cjs/api/express/schema/jwt.cjs.map +1 -1
- package/_cjs/api/express/schema/requestHandler.cjs +7 -6
- package/_cjs/api/express/schema/requestHandler.cjs.map +1 -1
- package/_cjs/api/express/schema/routing.cjs +20 -5
- package/_cjs/api/express/schema/routing.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +7 -8
- package/_cjs/api/reportError.cjs.map +1 -1
- package/_cjs/api/routing.cjs +26 -25
- package/_cjs/api/routing.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs +3 -4
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/api/writeDocs.cjs +3 -4
- package/_cjs/api/writeDocs.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +10 -11
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/errors.cjs +1 -1
- package/_cjs/errors.cjs.map +1 -1
- package/_cjs/filter.cjs +14 -28
- package/_cjs/filter.cjs.map +1 -1
- package/_cjs/instrument.cjs +1 -2
- package/_cjs/instrument.cjs.map +1 -1
- package/_cjs/logger/jsonLogger.cjs +17 -12
- package/_cjs/logger/jsonLogger.cjs.map +1 -1
- package/_cjs/logger/logFmtLogger.cjs +7 -6
- package/_cjs/logger/logFmtLogger.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +13 -5
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +10 -9
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +3 -3
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +4 -6
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +5 -7
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/QueueMaker/errors.cjs +5 -3
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +5 -6
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +9 -10
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/service.cjs +1 -2
- package/_cjs/services/QueueMaker/service.cjs.map +1 -1
- package/_cjs/services/Repository.cjs +18 -30
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +7 -5
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +1 -2
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +68 -58
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +2 -1
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +15 -19
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +2 -1
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/index.cjs +4 -3
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs +1 -2
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +25 -23
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +16 -7
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +1 -1
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +26 -22
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +35 -28
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +25 -17
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_cjs/test.arbs.cjs +5 -4
- package/_cjs/test.arbs.cjs.map +1 -1
- package/_src/api/defaultErrorHandler.ts +33 -37
- package/_src/api/express/makeJsonSchema.test.ts +2 -2
- package/_src/api/express/routing.ts.bak +1 -1
- package/_src/api/express/schema/routing.ts +20 -20
- package/_src/api/reportError.ts +15 -19
- package/_src/api/routing.ts +96 -95
- package/_src/api/setupRequest.ts +4 -6
- package/_src/api/writeDocs.ts +1 -1
- package/_src/errorReporter.ts +25 -29
- package/_src/errors.ts +1 -1
- package/_src/instrument.ts +4 -5
- package/_src/logger/jsonLogger.ts +5 -6
- package/_src/logger/logFmtLogger.ts +5 -4
- package/_src/rateLimit.ts +10 -9
- package/_src/services/Emailer/Sendgrid.ts +3 -3
- package/_src/services/Emailer/fake.ts +1 -1
- package/_src/services/Operations/live.ts +1 -1
- package/_src/services/Operations/service.ts +32 -38
- package/_src/services/QueueMaker/errors.ts +1 -2
- package/_src/services/QueueMaker/memQueue.ts +1 -1
- package/_src/services/QueueMaker/sbqueue.ts +3 -3
- package/_src/services/Repository.ts +6 -10
- package/_src/services/RepositoryBase.ts +4 -2
- package/_src/services/Store/Cosmos.ts +66 -62
- package/_src/services/Store/Memory.ts +1 -1
- package/_src/services/simpledb/cosmosdb.ts +45 -43
- package/_src/services/simpledb/diskdb.ts +9 -10
- package/_src/services/simpledb/mongodb.ts +33 -31
- package/_src/services/simpledb/redisdb.ts +42 -40
- package/_src/services/simpledb/simpledb.ts +6 -7
- package/dist/RequestContext.d.ts +4 -4
- package/dist/RequestContext.js +5 -3
- package/dist/api/defaultErrorHandler.d.ts.map +1 -1
- package/dist/api/defaultErrorHandler.js +7 -9
- package/dist/api/express/schema/routing.js +21 -6
- package/dist/api/reportError.d.ts.map +1 -1
- package/dist/api/reportError.js +9 -10
- package/dist/api/routing.d.ts +1 -1
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +35 -33
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +4 -5
- package/dist/api/writeDocs.js +4 -5
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +11 -12
- package/dist/errors.js +2 -2
- package/dist/instrument.d.ts.map +1 -1
- package/dist/instrument.js +2 -3
- package/dist/logger/jsonLogger.d.ts +1 -1
- package/dist/logger/jsonLogger.d.ts.map +1 -1
- package/dist/logger/jsonLogger.js +9 -11
- package/dist/logger/logFmtLogger.d.ts +1 -1
- package/dist/logger/logFmtLogger.d.ts.map +1 -1
- package/dist/logger/logFmtLogger.js +5 -4
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +6 -6
- package/dist/services/Emailer/Sendgrid.d.ts +1 -1
- package/dist/services/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/services/Emailer/Sendgrid.js +11 -10
- package/dist/services/Emailer/fake.js +4 -3
- package/dist/services/Emailer/service.d.ts +1 -1
- package/dist/services/Operations/live.js +5 -6
- package/dist/services/Operations/service.d.ts.map +1 -1
- package/dist/services/Operations/service.js +8 -9
- package/dist/services/QueueMaker/errors.d.ts.map +1 -1
- package/dist/services/QueueMaker/errors.js +2 -2
- package/dist/services/QueueMaker/memQueue.js +6 -7
- package/dist/services/QueueMaker/sbqueue.js +10 -11
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +8 -9
- package/dist/services/RepositoryBase.d.ts +1 -1
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +5 -4
- package/dist/services/Store/Cosmos.d.ts +1 -1
- package/dist/services/Store/Cosmos.d.ts.map +1 -1
- package/dist/services/Store/Cosmos.js +64 -55
- package/dist/services/Store/Disk.d.ts +1 -1
- package/dist/services/Store/Disk.d.ts.map +1 -1
- package/dist/services/Store/Disk.js +3 -2
- package/dist/services/Store/Memory.js +13 -14
- package/dist/services/Store/Redis.d.ts +1 -1
- package/dist/services/Store/Redis.d.ts.map +1 -1
- package/dist/services/Store/Redis.js +3 -2
- package/dist/services/Store/index.d.ts +1 -1
- package/dist/services/Store/index.d.ts.map +1 -1
- package/dist/services/Store/index.js +5 -4
- package/dist/services/Store/service.d.ts +1 -1
- package/dist/services/simpledb/cosmosdb.d.ts.map +1 -1
- package/dist/services/simpledb/cosmosdb.js +29 -27
- package/dist/services/simpledb/diskdb.d.ts.map +1 -1
- package/dist/services/simpledb/diskdb.js +10 -4
- package/dist/services/simpledb/memdb.d.ts +2 -2
- package/dist/services/simpledb/memdb.js +1 -1
- package/dist/services/simpledb/mongodb.d.ts.map +1 -1
- package/dist/services/simpledb/mongodb.js +18 -15
- package/dist/services/simpledb/redisdb.d.ts.map +1 -1
- package/dist/services/simpledb/redisdb.js +30 -23
- package/dist/services/simpledb/simpledb.d.ts.map +1 -1
- package/dist/services/simpledb/simpledb.js +16 -12
- package/package.json +22 -22
- package/tsconfig.json +1 -1
|
@@ -5,6 +5,6 @@ import { StoreMaker } from "./service.js";
|
|
|
5
5
|
* @tsplus static StoreMaker.Ops Live
|
|
6
6
|
* @tsplus location "@effect-app/infra/services/Store/index"
|
|
7
7
|
*/
|
|
8
|
-
export declare function StoreMakerLive(config: Config<StorageConfig>): import("@effect/io/Layer").Layer<never, import("@effect/io/
|
|
8
|
+
export declare function StoreMakerLive(config: Config<StorageConfig>): import("@effect/io/Layer").Layer<never, import("@effect/io/ConfigError").ConfigError, StoreMaker>;
|
|
9
9
|
export * from "./service.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/index.ts"],"names":[],"mappings":";AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;;;;;AAKzC,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../_src/services/Store/index.ts"],"names":[],"mappings":";AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;;;;;AAKzC,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,qGA8B3D;AAmBD,cAAc,cAAc,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import * as tsplus_module_1 from "@effect/io/
|
|
1
|
+
import * as tsplus_module_1 from "@effect/io/ConfigSecret";
|
|
2
2
|
import * as tsplus_module_2 from "@effect/io/Effect";
|
|
3
|
+
import * as tsplus_module_3 from "@effect/io/Layer";
|
|
3
4
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
5
|
import * as CosmosClient from "@effect-app/infra-adapters/cosmos-client";
|
|
5
6
|
import * as RedisClient from "@effect-app/infra-adapters/redis-client";
|
|
@@ -13,7 +14,7 @@ import { StoreMaker } from "./service.js";
|
|
|
13
14
|
* @tsplus static StoreMaker.Ops Live
|
|
14
15
|
*/
|
|
15
16
|
export function StoreMakerLive(config) {
|
|
16
|
-
return
|
|
17
|
+
return tsplus_module_3.scoped(StoreMaker)(tsplus_module_2.flatMap(tsplus_module_2.config(config), (cfg) => {
|
|
17
18
|
const storageUrl = tsplus_module_1.value(cfg.url);
|
|
18
19
|
if (storageUrl.startsWith("mem://")) {
|
|
19
20
|
console.log("Using in memory store");
|
|
@@ -30,7 +31,7 @@ export function StoreMakerLive(config) {
|
|
|
30
31
|
}
|
|
31
32
|
console.log("Using Cosmos DB store");
|
|
32
33
|
return tsplus_module_2.flatMap(CosmosClient.makeCosmosClient(storageUrl, cfg.dbName), (client) => tsplus_module_2.provideService(makeCosmosStore(cfg), CosmosClient.CosmosClient, client));
|
|
33
|
-
})
|
|
34
|
+
}));
|
|
34
35
|
}
|
|
35
36
|
function makeRedis(storageUrl) {
|
|
36
37
|
const url = new URL(storageUrl);
|
|
@@ -46,4 +47,4 @@ function makeRedis(storageUrl) {
|
|
|
46
47
|
: storageUrl);
|
|
47
48
|
}
|
|
48
49
|
export * from "./service.js";
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL1N0b3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEtBQUssWUFBWSxNQUFNLDBDQUEwQyxDQUFBO0FBQ3hFLE9BQU8sS0FBSyxXQUFXLE1BQU0seUNBQXlDLENBQUE7QUFDdEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE9BQU8sQ0FBQTtBQUVwQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFekM7O0dBRUc7QUFDSCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQTZCO0lBQzFELE9BQU8sdUJBNEJVLFVBQVUsRUE1QnBCLCtDQUFBLE1BQU0sR0FFRixDQUFDLEdBQUcsRUFBRSxFQUFFO1FBQ2YsTUFBTSxVQUFVLHlCQUFHLEdBQUcsQ0FBQyxHQUFHLENBQU0sQ0FBQTtRQUNoQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1lBQ3BDLE9BQU8sMkJBQU8sZUFBZSxFQUFFLENBQUMsQ0FBQTtTQUNqQztRQUNELElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNwQyxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLEdBQUcsQ0FBQyxDQUFBO1lBQ3pDLE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQTtTQUMvQjtRQUNELElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUE7WUFDaEMsT0FBTyx3QkFBQSxXQUFXLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDM0UsK0JBQUEsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUNqQixXQUFXLENBQUMsV0FBVyxFQUN2QixNQUFNLENBQ1AsQ0FDRixDQUFBO1NBQ0Y7UUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUE7UUFDcEMsT0FBTyx3QkFBQSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQzlFLCtCQUFBLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBZ0IsWUFBWSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FDdkUsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUN3QixDQUFBO0FBQzlCLENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBQyxVQUFrQjtJQUNuQyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUMvQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFBO0lBQzdCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUE7SUFDN0IsT0FBTyxHQUFHLEVBQUUsQ0FDVixZQUFZLENBQ1YsVUFBVSxLQUFLLFVBQVU7UUFDdkIsQ0FBQyxDQUFFO1lBQ0QsSUFBSSxFQUFFLFFBQVE7WUFDZCxJQUFJLEVBQUUsSUFBSTtZQUNWLFNBQVMsRUFBRSxRQUFRO1lBQ25CLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7U0FDdEI7UUFDVCxDQUFDLENBQUUsVUFBa0IsQ0FDeEIsQ0FBQTtBQUNMLENBQUM7QUFFRCxjQUFjLGNBQWMsQ0FBQSJ9
|
|
@@ -2,7 +2,7 @@ import { Effect } from "@effect/io/Effect";
|
|
|
2
2
|
import { Option } from "@effect-app/core/Option";
|
|
3
3
|
import { NonEmptyReadonlyArray } from "@effect/data/ReadonlyArray";
|
|
4
4
|
import { TagClass } from "@effect-app/prelude/service";
|
|
5
|
-
import { ConfigSecret } from "@effect/io/
|
|
5
|
+
import { ConfigSecret } from "@effect/io/ConfigSecret";
|
|
6
6
|
import type { UniqueKey } from "@azure/cosmos";
|
|
7
7
|
import type { ParserEnv } from "@effect-app/schema/custom/Parser";
|
|
8
8
|
import type { OptimisticConcurrencyException } from "../../errors.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmosdb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/cosmosdb.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAGnD,OAAO,KAAK,MAAM,MAAM,0CAA0C,CAAA;AAClE,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAkBzC,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,uCAErE,MAAM,mBACK,CAAC,yEACN,EAAE,uEAEL,cAAc;;yBAqBK,OAAO,MAAM,EAAE,MAAM,CAAC;;
|
|
1
|
+
{"version":3,"file":"cosmosdb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/cosmosdb.ts"],"names":[],"mappings":";;AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAGnD,OAAO,KAAK,MAAM,MAAM,0CAA0C,CAAA;AAClE,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAkBzC,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,uCAErE,MAAM,mBACK,CAAC,yEACN,EAAE,uEAEL,cAAc;;yBAqBK,OAAO,MAAM,EAAE,MAAM,CAAC;;GA8FrD"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
2
2
|
import * as tsplus_module_2 from "@effect/data/Option";
|
|
3
3
|
import * as tsplus_module_3 from "@effect/data/ReadonlyArray";
|
|
4
|
-
import * as tsplus_module_4 from "@effect-app/core/Effect";
|
|
5
4
|
import { typedKeysOf } from "@effect-app/core/utils";
|
|
6
5
|
import * as Cosmos from "@effect-app/infra-adapters/cosmos-client";
|
|
7
6
|
import { OptimisticLockException } from "./shared.js";
|
|
@@ -57,34 +56,37 @@ WHERE (
|
|
|
57
56
|
const version = "_etag"; // we get this from the etag anyway.
|
|
58
57
|
const { db } = yield* $(Cosmos.CosmosClient);
|
|
59
58
|
const data = yield* $(encode(record));
|
|
60
|
-
yield* $(tsplus_module_2.match(currentVersion,
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
59
|
+
yield* $(tsplus_module_2.match(currentVersion, {
|
|
60
|
+
onNone: () => tsplus_module_1.orDie(tsplus_module_1.asUnit(tsplus_module_1.tryPromise(() => db.container(type).items.create({
|
|
61
|
+
id: record.id,
|
|
62
|
+
timestamp: new Date(),
|
|
63
|
+
data
|
|
64
|
+
})))),
|
|
65
|
+
onSome: (currentVersion) => tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => db
|
|
66
|
+
.container(type)
|
|
67
|
+
.item(record.id)
|
|
68
|
+
.replace({
|
|
69
|
+
id: record.id,
|
|
70
|
+
timestamp: new Date(),
|
|
71
|
+
data
|
|
72
|
+
}, {
|
|
73
|
+
accessCondition: {
|
|
74
|
+
type: "IfMatch",
|
|
75
|
+
condition: currentVersion
|
|
76
|
+
}
|
|
77
|
+
}))), (x) => {
|
|
78
|
+
if (x.statusCode === 412) {
|
|
79
|
+
return tsplus_module_1.fail(new OptimisticLockException(type, record.id));
|
|
80
|
+
}
|
|
81
|
+
if (x.statusCode > 299 || x.statusCode < 200) {
|
|
82
|
+
return tsplus_module_1.die(new CosmosDbOperationError("not able to update record: " + x.statusCode));
|
|
83
|
+
}
|
|
84
|
+
return tsplus_module_1.unit;
|
|
85
|
+
})
|
|
86
|
+
}));
|
|
85
87
|
return { version, data: record };
|
|
86
88
|
});
|
|
87
89
|
}
|
|
88
90
|
};
|
|
89
91
|
}
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zbW9zZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL3NpbXBsZWRiL2Nvc21vc2RiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUVwRCxPQUFPLEtBQUssTUFBTSxNQUFNLDBDQUEwQyxDQUFBO0FBRWxFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNyRCxPQUFPLEtBQUssUUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUd6QyxNQUFNLHNCQUFzQjtJQUMxQixZQUFxQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFHLENBQUM7Q0FDekM7QUFFRCxNQUFNLEtBQUssR0FBRyxDQUFDLElBQVksRUFBRSxjQUE4QixFQUFFLEVBQUUsQ0FDN0Qsb0JBQUEsTUFBTSxDQUFDLFlBQVksRUFBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUNqQywyQkFBa0IsR0FBRyxFQUFFLENBQ3JCLEVBQUU7S0FDQyxVQUFVO0tBQ1YsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztLQUNwQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDckMsQ0FDRixDQUFBO0FBQ0gsdURBQXVEO0FBQ3ZELGdGQUFnRjtBQUNoRixNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLENBQ0wsSUFBWSxFQUNaLE1BQWlELEVBQ2pELE1BQThDO0lBQzlDLHlCQUF5QjtJQUN6QixPQUF1QixFQUN2QixFQUFFO1FBQ0YsT0FBTyxvQkFBQSxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJ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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diskdb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/diskdb.ts"],"names":[],"mappings":";;AAMA,OAAO,KAAK,EAAgB,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAuB,6BAA6B,EAA+B,MAAM,aAAa,CAAA;AAC7G,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAGzC,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,uCAErE,MAAM,mBACK,CAAC,yEACN,EAAE,6EACC,MAAM,oBACH,CAAC,KAAK,KAAK;;yBAkGN,KAAK;;
|
|
1
|
+
{"version":3,"file":"diskdb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/diskdb.ts"],"names":[],"mappings":";;AAMA,OAAO,KAAK,EAAgB,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAuB,6BAA6B,EAA+B,MAAM,aAAa,CAAA;AAC7G,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAGzC,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,uCAErE,MAAM,mBACK,CAAC,yEACN,EAAE,6EACC,MAAM,oBACH,CAAC,KAAK,KAAK;;yBAkGN,KAAK;;EA+B/B;AAQD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,QASrC"}
|
|
@@ -44,10 +44,16 @@ export function createContext() {
|
|
|
44
44
|
return lockIndexOnDisk(type)(lockKey);
|
|
45
45
|
}
|
|
46
46
|
function lockRecordOnDisk(type) {
|
|
47
|
-
return (id) => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(lockFile(getFilename(type, id)),
|
|
47
|
+
return (id) => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(lockFile(getFilename(type, id)), {
|
|
48
|
+
onFailure: (err) => new CouldNotAquireDbLockException(type, id, err),
|
|
49
|
+
onSuccess: (release) => ({ release })
|
|
50
|
+
}), (l) => l.release);
|
|
48
51
|
}
|
|
49
52
|
function lockIndexOnDisk(type) {
|
|
50
|
-
return (id) => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(lockFile(getIdxName(type, id)),
|
|
53
|
+
return (id) => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(lockFile(getIdxName(type, id)), {
|
|
54
|
+
onFailure: (err) => new CouldNotAquireDbLockException(type, id, err),
|
|
55
|
+
onSuccess: (release) => ({ release })
|
|
56
|
+
}), (l) => l.release);
|
|
51
57
|
}
|
|
52
58
|
function readFile(filePath) {
|
|
53
59
|
return tsplus_module_2.catchAll(fu
|
|
@@ -62,7 +68,7 @@ export function createContext() {
|
|
|
62
68
|
return tsplus_module_2.map(readIndex(index), (idx) => tsplus_module_1.fromNullable(idx[index.key]));
|
|
63
69
|
}
|
|
64
70
|
function readIndex(index) {
|
|
65
|
-
return tsplus_module_2.map(tryRead(getIdxName(type, index.doc)), (_) => tsplus_module_1.match(_, () => ({}), (x) => JSON.parse(x)));
|
|
71
|
+
return tsplus_module_2.map(tryRead(getIdxName(type, index.doc)), (_) => tsplus_module_1.match(_, { onNone: () => ({}), onSome: (x) => JSON.parse(x) }));
|
|
66
72
|
}
|
|
67
73
|
function writeIndex(index, content) {
|
|
68
74
|
return pipe(JSON.stringify(content), (serialised) => fu.writeTextFile(getIdxName(type, index.doc), serialised));
|
|
@@ -93,4 +99,4 @@ export function initialise(dir) {
|
|
|
93
99
|
}
|
|
94
100
|
initialised = true;
|
|
95
101
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlza2RiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9zaW1wbGVkYi9kaXNrZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQTtBQUV0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDL0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUV6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsNkJBQTZCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM3RyxPQUFPLEtBQUssUUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUd6QyxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLENBQ0wsSUFBWSxFQUNaLE1BQWlELEVBQ2pELE1BQThDLEVBQzlDLGFBQXFCLEVBQ3JCLFlBQTZCLEVBQzdCLEdBQUcsR0FBRyxXQUFXLEVBQ2pCLEVBQUU7UUFDRixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDZixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUE7UUFDaEMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUNoRCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMvQixFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7U0FDM0M7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDN0MsV0FBVyxF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
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Effect } from "@effect/io/Effect";
|
|
2
|
-
import { Equivalence } from "@effect/data/
|
|
2
|
+
import { Equivalence } from "@effect/data/Equivalence";
|
|
3
3
|
import { Option } from "@effect-app/core/Option";
|
|
4
4
|
import * as MO from "@effect-app/schema";
|
|
5
5
|
import type { DBRecord } from "./shared.js";
|
|
6
6
|
import * as simpledb from "./simpledb.js";
|
|
7
7
|
export declare function createContext<TKey extends string, EA, A extends DBRecord<TKey>>(): <REncode, RDecode, EDecode>(type: string, encode: (record: A) => import("@effect/io/Effect").Effect<REncode, never, EA>, decode: (d: EA) => import("@effect/io/Effect").Effect<RDecode, EDecode, A>) => {
|
|
8
8
|
find: (id: string) => import("@effect/io/Effect").Effect<simpledb.RecordCache | RDecode, MO.CondemnException | simpledb.InvalidStateError, import("@effect/data/Option").Option<A>>;
|
|
9
|
-
findBy: <V extends Partial<A>>(keys: V, eq: import("@effect/data/
|
|
9
|
+
findBy: <V extends Partial<A>>(keys: V, eq: import("@effect/data/Equivalence").Equivalence<V>) => import("@effect/io/Effect").Effect<RDecode, MO.CondemnException, import("@effect/data/Option").Option<A & {}>>;
|
|
10
10
|
save: (record: A) => import("@effect/io/Effect").Effect<simpledb.RecordCache | REncode, MO.CondemnException | import("./shared.js").OptimisticLockException | simpledb.InvalidStateError, A>;
|
|
11
11
|
};
|
|
12
12
|
//# sourceMappingURL=memdb.d.ts.map
|
|
@@ -49,6 +49,6 @@ export function createContext() {
|
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
function bogusLock() {
|
|
52
|
-
return tsplus_module_2.acquireRelease(
|
|
52
|
+
return tsplus_module_2.acquireRelease(tsplus_module_2.unit, () => tsplus_module_2.unit);
|
|
53
53
|
}
|
|
54
54
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL3NpbXBsZWRiL21lbWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDaEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4RSxPQUFPLEtBQUssUUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUd6Qyw0REFBNEQ7QUFDNUQsMkJBQTJCO0FBQzNCLE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBa0IsQ0FBQTtBQUV6QyxNQUFNLFFBQVEsR0FBZ0MsRUFBRSxDQUFDLFdBQVcsQ0FBM0Msa0JBQWtCLENBQUMsTUFBTSxDQUFrQixDQUFBO0FBRTVELE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sQ0FDTCxJQUFZLEVBQ1osTUFBaUQsRUFDakQsTUFBOEMsRUFDOUMsRUFBRTtRQUNGLE9BQU87WUFDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQztZQUN2QyxNQUFNO1lBQ04sSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDO1NBQ25ELENBQUE7UUFFRCxTQUFTLElBQUksQ0FBQyxFQUFVO1lBQ3RCLE9BQU8sMEJBQUEsOEJBQUEsb0JBQUEsT0FBTztpQkFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUN6QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsb0JBQUEsQ0FBQyxFQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/mongodb.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAA;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,SAAS,CAAA;AACjE,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAazC,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,uCAErE,MAAM,mBACK,CAAC,yEACN,EAAE,uEAEL,gBAAgB,EAAE;;mBAqBL,OAAO,MAAM,EAAE,MAAM,CAAC;;
|
|
1
|
+
{"version":3,"file":"mongodb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/mongodb.ts"],"names":[],"mappings":";;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAA;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,SAAS,CAAA;AACjE,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAazC,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,uCAErE,MAAM,mBACK,CAAC,yEACN,EAAE,uEAEL,gBAAgB,EAAE;;mBAqBL,OAAO,MAAM,EAAE,MAAM,CAAC;;GA6D/C"}
|
|
@@ -31,23 +31,26 @@ export function createContext() {
|
|
|
31
31
|
const version = tsplus_module_2.getOrElse(tsplus_module_2.map(currentVersion, (cv) => (parseInt(cv) + 1).toString()), () => "1");
|
|
32
32
|
const { db } = yield* $(MongoClient);
|
|
33
33
|
const data = yield* $(encode(record));
|
|
34
|
-
yield* $(tsplus_module_2.match(currentVersion,
|
|
35
|
-
.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
yield* $(tsplus_module_2.match(currentVersion, {
|
|
35
|
+
onNone: () => tsplus_module_1.orDie(tsplus_module_1.asUnit(tsplus_module_1.tryPromise(() => db
|
|
36
|
+
.collection(type)
|
|
37
|
+
.insertOne({ _id: record.id, version, timestamp: new Date(), data }, {
|
|
38
|
+
checkKeys: false // support for keys with `.` and `$`. NOTE: you can write them, read them, but NOT query for them.
|
|
39
|
+
})))),
|
|
40
|
+
onSome: (currentVersion) => tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => db.collection(type).replaceOne({ _id: record.id, version: currentVersion }, {
|
|
41
|
+
version,
|
|
42
|
+
timestamp: new Date(),
|
|
43
|
+
data
|
|
44
|
+
}, { upsert: false }))), (x) => {
|
|
45
|
+
if (!x.modifiedCount) {
|
|
46
|
+
return tsplus_module_1.fail(new OptimisticLockException(type, record.id));
|
|
47
|
+
}
|
|
48
|
+
return tsplus_module_1.unit;
|
|
49
|
+
})
|
|
50
|
+
}));
|
|
48
51
|
return { version, data: record };
|
|
49
52
|
});
|
|
50
53
|
}
|
|
51
54
|
};
|
|
52
55
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvc2ltcGxlZGIvbW9uZ29kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFHckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3JELE9BQU8sS0FBSyxRQUFRLE1BQU0sZUFBZSxDQUFBO0FBR3pDLHdHQUF3RztBQUN4RyxrQkFBa0I7QUFDbEIsZ0JBQWdCO0FBQ2hCLG1DQUFtQztBQUVuQyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQVksRUFBRSxPQUEyQixFQUFFLEVBQUUsQ0FDMUQsd0JBQUEsb0JBQUEsV0FBVyxFQUNKLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsMkJBQWtCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzdGLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsMkJBQWtCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUU3RixNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLENBQ0wsSUFBWSxFQUNaLE1BQWlELEVBQ2pELE1BQThDO0lBQzlDLHlCQUF5QjtJQUN6QixPQUEyQixFQUMzQixFQUFFO1FBQ0YsT0FBTyxvQkFBQSxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisdb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/redisdb.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAExC,OAAO,KAAK,EAAgB,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAuB,6BAA6B,EAA+B,MAAM,aAAa,CAAA;AAC7G,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAIzC,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,uCAErE,MAAM,mBACK,CAAC,yEACN,EAAE,6EACC,MAAM,oBACH,CAAC,KAAK,KAAK;;
|
|
1
|
+
{"version":3,"file":"redisdb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/redisdb.ts"],"names":[],"mappings":";;AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,yCAAyC,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAExC,OAAO,KAAK,EAAgB,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAuB,6BAA6B,EAA+B,MAAM,aAAa,CAAA;AAC7G,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAIzC,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,uCAErE,MAAM,mBACK,CAAC,yEACN,EAAE,6EACC,MAAM,oBACH,CAAC,KAAK,KAAK;;yBAkFN,KAAK;;EAwF/B;;;;;;;;;;AAED,qBAAa,uBAAwB,SAAQ,4BAI3C;CAAG"}
|
|
@@ -24,17 +24,20 @@ export function createContext() {
|
|
|
24
24
|
}
|
|
25
25
|
function store(record, currentVersion) {
|
|
26
26
|
const version = tsplus_module_3.getOrElse(tsplus_module_3.map(currentVersion, (cv) => (parseInt(cv) + 1).toString()), () => "1");
|
|
27
|
-
return tsplus_module_3.match(currentVersion,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
version,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
return tsplus_module_3.match(currentVersion, {
|
|
28
|
+
onNone: () => tsplus_module_1.scoped(tsplus_module_1.zipRight(lockIndex(record), tsplus_module_1.map(tsplus_module_1.orDie(tsplus_module_1.zipRight(tsplus_module_1.flatMap(tsplus_module_1.zipRight(tsplus_module_2.zipRightOption(getIndex(record), tsplus_module_1.fail(() => new Error("Combination already exists, abort"))), getData(record))
|
|
29
|
+
// TODO: instead use MULTI & EXEC to make it in one command?
|
|
30
|
+
, (data) => hmSetRec(getKey(record.id), {
|
|
31
|
+
version,
|
|
32
|
+
timestamp: new Date(),
|
|
33
|
+
data
|
|
34
|
+
})), setIndex(record))), () => ({ version, data: record })))),
|
|
35
|
+
onSome: () => tsplus_module_1.map(tsplus_module_1.orDie(tsplus_module_1.flatMap(getData(record), (data) => hmSetRec(getKey(record.id), {
|
|
36
|
+
version,
|
|
37
|
+
timestamp: new Date(),
|
|
38
|
+
data
|
|
39
|
+
}))), () => ({ version, data: record }))
|
|
40
|
+
});
|
|
38
41
|
}
|
|
39
42
|
function getIndex(record) {
|
|
40
43
|
const index = makeIndexKey(record);
|
|
@@ -57,20 +60,24 @@ export function createContext() {
|
|
|
57
60
|
function lockRedisIdx(index) {
|
|
58
61
|
const lockKey = getIdxLockKey(index);
|
|
59
62
|
// acquire
|
|
60
|
-
return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(tsplus_module_1.flatMap(RedisClient, ({ lock }) => tsplus_module_1.tryPromise(() => lock.lock(lockKey, ttl))),
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(tsplus_module_1.flatMap(RedisClient, ({ lock }) => tsplus_module_1.tryPromise(() => lock.lock(lockKey, ttl))), {
|
|
64
|
+
onFailure: (err) => new CouldNotAquireDbLockException(type, lockKey, err),
|
|
65
|
+
// release
|
|
66
|
+
onSuccess: (lock) => ({
|
|
67
|
+
release: tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => lock.unlock()))
|
|
68
|
+
})
|
|
69
|
+
}), (l) => l.release);
|
|
65
70
|
}
|
|
66
71
|
function lockRedisRecord(id) {
|
|
67
72
|
// acquire
|
|
68
|
-
return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(tsplus_module_1.flatMap(RedisClient, ({ lock }) => tsplus_module_1.tryPromise(() => lock.lock(getLockKey(id), ttl))),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(tsplus_module_1.flatMap(RedisClient, ({ lock }) => tsplus_module_1.tryPromise(() => lock.lock(getLockKey(id), ttl))), {
|
|
74
|
+
onFailure: (err) => new CouldNotAquireDbLockException(type, id, err),
|
|
75
|
+
// release
|
|
76
|
+
onSuccess: (lock) => ({
|
|
77
|
+
// TODO
|
|
78
|
+
release: tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => lock.unlock()))
|
|
79
|
+
})
|
|
80
|
+
}), (l) => l.release);
|
|
74
81
|
}
|
|
75
82
|
function getKey(id) {
|
|
76
83
|
return `v${schemaVersion}.${getRecordName(type, id)}`;
|
|
@@ -100,4 +107,4 @@ export class RedisSerializedDBRecord extends MO.Model()({
|
|
|
100
107
|
data: MO.prop(MO.string)
|
|
101
108
|
}) {
|
|
102
109
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXNkYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvc2ltcGxlZGIvcmVkaXNkYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFDckUsT0FBTyxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsNkJBQTZCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM3RyxPQUFPLEtBQUssUUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUV6QyxNQUFNLEdBQUcsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFBO0FBRXJCLE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sQ0FDTCxJQUFZLEVBQ1osTUFBaUQsRUFDakQsTUFBOEMsRUFDOUMsYUFBcUIsRUFDckIsWUFBNkIsRUFDN0IsRUFBRTtRQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLG9CQUFBLENBQUMsRUFBSyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtRQUMxRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDdkMsV0FBVyxFQUFFLE1BQU07WUFDbkIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsSUFBSSxDQUFDO1NBQ3pELENBQUE7UUFFRCxTQUFTLElBQUksQ0FBQyxFQUFVO1lBQ3RCLDZCQUFPLDhCQUFBLHdCQUFBLFdBQVcsRUFDUCxDQUFDLENBQUMsRUFBRSxF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simpledb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/simpledb.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAW,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAE9D,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAC5B,qBAAa,iBAAiB;IAEhB,QAAQ,CAAC,OAAO,EAAE,MAAM;IAAE,QAAQ,CAAC,OAAO,CAAC;IADvD,QAAQ,CAAC,IAAI,uBAAsB;gBACd,OAAO,EAAE,MAAM,EAAW,OAAO,CAAC,SAAS;CACjE;AAED,wBAAgB,mBAAmB;mBAGhB,MAAM;EAWxB;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU,CAAC,OAAO,mBAAmB,CAAC;CAAG;AAG9E,eAAO,MAAM,WAAW,8DAAqB,CAAA;AAE7C,eAAO,MAAM,eAAe,6DAAqD,CAAA;AAQjF,wBAAgB,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAChD,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAC9C,IAAI,EAAE,MAAM,QAcA,MAAM,mIAOnB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,SAAS,MAAM,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,EAC/E,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EACvE,IAAI,EAAE,MAAM,YAGI,CAAC,+DASlB;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,EACnF,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAC/D,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EACvE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,EACrD,IAAI,EAAE,MAAM,YAGI,CAAC,
|
|
1
|
+
{"version":3,"file":"simpledb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/simpledb.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACpE,OAAO,EAAW,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAE9D,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAC5B,qBAAa,iBAAiB;IAEhB,QAAQ,CAAC,OAAO,EAAE,MAAM;IAAE,QAAQ,CAAC,OAAO,CAAC;IADvD,QAAQ,CAAC,IAAI,uBAAsB;gBACd,OAAO,EAAE,MAAM,EAAW,OAAO,CAAC,SAAS;CACjE;AAED,wBAAgB,mBAAmB;mBAGhB,MAAM;EAWxB;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU,CAAC,OAAO,mBAAmB,CAAC;CAAG;AAG9E,eAAO,MAAM,WAAW,8DAAqB,CAAA;AAE7C,eAAO,MAAM,eAAe,6DAAqD,CAAA;AAQjF,wBAAgB,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAChD,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAC/D,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAC9C,IAAI,EAAE,MAAM,QAcA,MAAM,mIAOnB;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,SAAS,MAAM,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,EAC/E,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EACvE,IAAI,EAAE,MAAM,YAGI,CAAC,+DASlB;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,EACnF,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAC/D,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EACvE,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,EACrD,IAAI,EAAE,MAAM,YAGI,CAAC,kKA6BlB"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as tsplus_module_1 from "@effect/io/Effect";
|
|
2
2
|
import * as tsplus_module_2 from "@effect/data/Context";
|
|
3
|
-
import * as tsplus_module_3 from "@effect
|
|
4
|
-
import * as tsplus_module_4 from "@effect-app/core/
|
|
5
|
-
import * as tsplus_module_5 from "@effect/
|
|
3
|
+
import * as tsplus_module_3 from "@effect/io/Layer";
|
|
4
|
+
import * as tsplus_module_4 from "@effect-app/core/Effect";
|
|
5
|
+
import * as tsplus_module_5 from "@effect-app/core/Option";
|
|
6
|
+
import * as tsplus_module_6 from "@effect/data/Option";
|
|
6
7
|
import { makeMap, OptimisticLockException } from "./shared.js";
|
|
7
8
|
export class InvalidStateError {
|
|
8
9
|
constructor(message, details) {
|
|
@@ -27,30 +28,33 @@ export function makeLiveRecordCache() {
|
|
|
27
28
|
}
|
|
28
29
|
// module tag
|
|
29
30
|
export const RecordCache = tsplus_module_2.Tag();
|
|
30
|
-
export const LiveRecordCache =
|
|
31
|
+
export const LiveRecordCache = tsplus_module_3.effect(RecordCache)(tsplus_module_1.sync(() => makeLiveRecordCache()));
|
|
31
32
|
const getM = (type) => (eff) => tsplus_module_1.gen(function* ($) {
|
|
32
33
|
const { get } = yield* $(RecordCache);
|
|
33
34
|
return yield* $(tsplus_module_1.flatMap(get(type), eff));
|
|
34
35
|
});
|
|
35
36
|
export function find(tryRead, decode, type) {
|
|
36
37
|
const getCache = getM(type);
|
|
37
|
-
const read = (id) =>
|
|
38
|
-
|
|
38
|
+
const read = (id) => tsplus_module_4.mapOption(tsplus_module_4.tapOption(tsplus_module_4.flatMapOption(tryRead(id), ({ data, version }) => tsplus_module_1.mapBoth(decode(data), {
|
|
39
|
+
onFailure: (err) => new InvalidStateError("DB serialisation Issue", err),
|
|
40
|
+
onSuccess: (data) => ({ data, version })
|
|
41
|
+
})), (r) => getCache((c) => c.set(id, r))), (r) => r.data);
|
|
42
|
+
return (id) => getCache((c) => tsplus_module_1.orElse(tsplus_module_4.mapOption(c
|
|
39
43
|
.find(id), (existing) => existing.data), () => read(id)));
|
|
40
44
|
}
|
|
41
45
|
export function storeDirectly(save, type) {
|
|
42
46
|
const getCache = getM(type);
|
|
43
|
-
return (record) => getCache((c) => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(
|
|
47
|
+
return (record) => getCache((c) => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(tsplus_module_4.mapOption(c
|
|
44
48
|
.find(record.id), (x) => x.version), (cv) => save(record, cv)), (r) => c.set(record.id, r)), (r) => r.data));
|
|
45
49
|
}
|
|
46
50
|
export function store(tryRead, save, lock, type) {
|
|
47
51
|
const getCache = getM(type);
|
|
48
|
-
return (record) => getCache((c) => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(
|
|
49
|
-
.find(record.id), (x) => x.version), (_) =>
|
|
52
|
+
return (record) => getCache((c) => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(tsplus_module_4.mapOption(c
|
|
53
|
+
.find(record.id), (x) => x.version), (_) => tsplus_module_6.match(_, { onNone: () => save(record, tsplus_module_5.none), onSome: confirmVersionAndSave(record) })), (r) => c.set(record.id, r)), (r) => r.data));
|
|
50
54
|
function confirmVersionAndSave(record) {
|
|
51
|
-
return (cv) => tsplus_module_1.scoped(tsplus_module_1.zipRight(lock(record.id), tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_1.flatMap(tryRead(record.id), (_) =>
|
|
55
|
+
return (cv) => tsplus_module_1.scoped(tsplus_module_1.zipRight(lock(record.id), tsplus_module_1.zipRight(tsplus_module_1.tap(tsplus_module_1.flatMap(tryRead(record.id), (_) => tsplus_module_6.match(_, { onNone: () => tsplus_module_1.fail(new InvalidStateError("record is gone")), onSome: tsplus_module_1.succeed })), ({ version }) => version !== cv
|
|
52
56
|
? tsplus_module_1.fail(new OptimisticLockException(type, record.id))
|
|
53
|
-
:
|
|
57
|
+
: tsplus_module_1.unit), save(record, tsplus_module_6.some(cv)))));
|
|
54
58
|
}
|
|
55
59
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL3NpbXBsZWRiL3NpbXBsZWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFHOUQsTUFBTSxPQUFPLGlCQUFpQjtJQUU1QixZQUFxQixPQUFlLEVBQVcsT0FBaUI7UUFBM0MsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFXLFlBQU8sR0FBUCxPQUFPLENBQVU7UUFEdkQsU0FBSSxHQUFHLG1CQUFtQixDQUFBO0lBQ2dDLENBQUM7Q0FDckU7QUFFRCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFzQyxDQUFBO0lBQ3ZELE9BQU87UUFDTCxHQUFHLEVBQUUsQ0FBSSxJQUFZLEVBQUUsRUFBRSxDQUN2QixxQkFBWSxHQUFHLEVBQUU7WUFDZixNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3RCLElBQUksQ0FBQyxFQUFFLEVBQUU7Z0JBQ1AsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFtQixDQUFBO2dCQUNyQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQTtnQkFDZixPQUFPLEVBQXdDLENBQUE7YUFDaEQ7WUFDRCxPQUFPLEVBQXdDLENBQUE7UUFDakQsQ0FBQyxDQUFDO0tBQ0wsQ0FBQTtBQUNILENBQUM7QUFJRCxhQUFhO0FBQ2IsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLGdCQUFBLEdBQUcsRUFBZSxDQUFBO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyx1QkFBc0MsV0FBVyxFQUFqRCwyQkFBTyxtQkFBbUIsRUFBRSxDQUFDLENBQXFCLENBQUE7QUFFakYsTUFBTSxJQUFJLEdBQUcsQ0FBSSxJQUFZLEVB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
|