@effect-app/infra 0.48.0 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/_cjs/_ext/Array.cjs.map +1 -1
- package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.cjs +2 -2
- package/_cjs/api/express/makeJsonSchema.cjs.map +1 -1
- package/_cjs/api/express/schema/jwt.cjs.map +1 -1
- package/_cjs/api/express/schema/requestHandler.cjs.map +1 -1
- package/_cjs/api/express/schema/routing.cjs.map +1 -1
- package/_cjs/api/reportError.cjs.map +1 -1
- package/_cjs/api/routing.cjs.map +1 -1
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/api/writeDocs.cjs.map +1 -1
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/Repository.cjs +8 -8
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +13 -13
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +9 -9
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.test.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +42 -42
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +13 -13
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs.map +1 -1
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +2 -3
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +12 -4
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +15 -5
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +13 -7
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_src/_ext/Array.ts +3 -2
- package/_src/api/defaultErrorHandler.ts +14 -12
- package/_src/api/express/makeJsonSchema.ts +6 -5
- package/_src/api/express/schema/jwt.ts +1 -1
- package/_src/api/express/schema/requestHandler.ts +112 -100
- package/_src/api/express/schema/routing.ts +61 -55
- package/_src/api/reportError.ts +16 -12
- package/_src/api/routing.ts +157 -135
- package/_src/api/setupRequest.ts +3 -1
- package/_src/api/writeDocs.ts +4 -3
- package/_src/rateLimit.ts +21 -14
- package/_src/services/Emailer/Sendgrid.ts +11 -10
- package/_src/services/Emailer/fake.ts +2 -1
- package/_src/services/Operations/live.ts +18 -12
- package/_src/services/Operations/service.ts +26 -17
- package/_src/services/QueueMaker/errors.ts +7 -6
- package/_src/services/QueueMaker/memQueue.ts +13 -11
- package/_src/services/QueueMaker/sbqueue.ts +16 -14
- package/_src/services/Repository.ts +53 -51
- package/_src/services/RepositoryBase.ts +33 -28
- package/_src/services/RequestContextContainer.ts +4 -3
- package/_src/services/Store/Cosmos.test.ts +31 -29
- package/_src/services/Store/Cosmos.ts +203 -180
- package/_src/services/Store/Disk.ts +19 -18
- package/_src/services/Store/Memory.ts +37 -32
- package/_src/services/Store/Redis.ts +31 -27
- package/_src/services/Store/codeFilter.test.ts +26 -16
- package/_src/services/Store/index.ts +26 -24
- package/_src/services/Store/service.ts +5 -5
- package/_src/services/Store/utils.ts +27 -24
- package/_src/services/simpledb/cosmosdb.ts +61 -51
- package/_src/services/simpledb/diskdb.ts +38 -31
- package/_src/services/simpledb/memdb.ts +25 -21
- package/_src/services/simpledb/mongodb.ts +40 -35
- package/_src/services/simpledb/redisdb.ts +66 -55
- package/_src/services/simpledb/simpledb.ts +32 -30
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +2 -2
- package/dist/api/defaultErrorHandler.d.ts.map +1 -1
- package/dist/api/defaultErrorHandler.js +5 -5
- package/dist/api/express/makeJsonSchema.d.ts +0 -1
- package/dist/api/express/makeJsonSchema.d.ts.map +1 -1
- package/dist/api/express/makeJsonSchema.js +4 -4
- package/dist/api/express/schema/jwt.js +2 -2
- package/dist/api/express/schema/requestHandler.d.ts.map +1 -1
- package/dist/api/express/schema/requestHandler.js +17 -17
- package/dist/api/express/schema/routing.d.ts.map +1 -1
- package/dist/api/express/schema/routing.js +13 -11
- package/dist/api/reportError.d.ts.map +1 -1
- package/dist/api/reportError.js +6 -6
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +29 -25
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +2 -2
- package/dist/api/writeDocs.d.ts.map +1 -1
- package/dist/api/writeDocs.js +5 -4
- package/dist/rateLimit.d.ts +4 -4
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +5 -4
- package/dist/services/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/services/Emailer/Sendgrid.js +9 -9
- package/dist/services/Emailer/fake.d.ts.map +1 -1
- package/dist/services/Emailer/fake.js +1 -1
- package/dist/services/Operations/live.d.ts.map +1 -1
- package/dist/services/Operations/live.js +11 -8
- package/dist/services/Operations/service.d.ts.map +1 -1
- package/dist/services/Operations/service.js +10 -4
- package/dist/services/QueueMaker/errors.d.ts.map +1 -1
- package/dist/services/QueueMaker/errors.js +5 -5
- package/dist/services/QueueMaker/memQueue.d.ts +1 -1
- package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/memQueue.js +5 -4
- package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/sbqueue.js +5 -5
- package/dist/services/Repository.d.ts +34 -35
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +16 -16
- package/dist/services/RepositoryBase.d.ts +4 -4
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +25 -22
- package/dist/services/RequestContextContainer.d.ts.map +1 -1
- package/dist/services/RequestContextContainer.js +3 -3
- package/dist/services/Store/Cosmos.d.ts +3 -3
- package/dist/services/Store/Cosmos.d.ts.map +1 -1
- package/dist/services/Store/Cosmos.js +53 -39
- package/dist/services/Store/Disk.d.ts.map +1 -1
- package/dist/services/Store/Disk.js +18 -18
- package/dist/services/Store/Memory.d.ts +2 -3
- package/dist/services/Store/Memory.d.ts.map +1 -1
- package/dist/services/Store/Memory.js +44 -44
- package/dist/services/Store/Redis.d.ts +4 -4
- package/dist/services/Store/Redis.d.ts.map +1 -1
- package/dist/services/Store/Redis.js +19 -17
- package/dist/services/Store/index.d.ts.map +1 -1
- package/dist/services/Store/index.js +4 -4
- package/dist/services/Store/service.d.ts +4 -5
- package/dist/services/Store/service.d.ts.map +1 -1
- package/dist/services/Store/service.js +3 -3
- package/dist/services/Store/utils.d.ts +2 -2
- package/dist/services/Store/utils.d.ts.map +1 -1
- package/dist/services/Store/utils.js +16 -14
- package/dist/services/simpledb/cosmosdb.d.ts.map +1 -1
- package/dist/services/simpledb/cosmosdb.js +16 -12
- package/dist/services/simpledb/diskdb.d.ts.map +1 -1
- package/dist/services/simpledb/diskdb.js +15 -15
- package/dist/services/simpledb/memdb.d.ts.map +1 -1
- package/dist/services/simpledb/memdb.js +6 -6
- package/dist/services/simpledb/mongodb.d.ts +5 -5
- package/dist/services/simpledb/mongodb.d.ts.map +1 -1
- package/dist/services/simpledb/mongodb.js +9 -9
- package/dist/services/simpledb/redisdb.d.ts +4 -4
- package/dist/services/simpledb/redisdb.d.ts.map +1 -1
- package/dist/services/simpledb/redisdb.js +18 -18
- package/dist/services/simpledb/simpledb.d.ts.map +1 -1
- package/dist/services/simpledb/simpledb.js +9 -9
- package/package.json +7 -7
|
@@ -11,9 +11,10 @@ class CosmosDbOperationError {
|
|
|
11
11
|
this.message = message;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
const setup = (type, indexingPolicy) => tsplus_module_1.tap(Cosmos.
|
|
14
|
+
const setup = (type, indexingPolicy) => tsplus_module_1.tap(Cosmos.CosmosClient, ({ db }) => tsplus_module_1.tryPromise(() => db
|
|
15
|
+
.containers
|
|
15
16
|
.create({ id: type, indexingPolicy })
|
|
16
|
-
.catch(err => console.warn(err))));
|
|
17
|
+
.catch((err) => console.warn(err))));
|
|
17
18
|
// TODO: Error if current indexingPolicy does not match
|
|
18
19
|
// Effect.flatMap((db) => Effect.tryPromise(() => db.container(type).(indexes)))
|
|
19
20
|
export function createContext() {
|
|
@@ -26,38 +27,41 @@ export function createContext() {
|
|
|
26
27
|
save: simpledb.storeDirectly(store, type)
|
|
27
28
|
}));
|
|
28
29
|
function find(id) {
|
|
29
|
-
return tsplus_module_1.map(tsplus_module_1.map(tsplus_module_1.flatMap(Cosmos
|
|
30
|
+
return tsplus_module_1.map(tsplus_module_1.map(tsplus_module_1.flatMap(Cosmos
|
|
31
|
+
.CosmosClient, ({ db }) => tsplus_module_1.tryPromise(() => db.container(type).item(id).read())), (i) => tsplus_module_2.fromNullable(i.resource)), (_) => tsplus_module_2.map(_, ({ _etag, data }) => ({ version: _etag, data })));
|
|
30
32
|
}
|
|
31
33
|
function findBy(parameters) {
|
|
32
|
-
return tsplus_module_1.map(tsplus_module_1.map(tsplus_module_1.flatMap(Cosmos
|
|
34
|
+
return tsplus_module_1.map(tsplus_module_1.map(tsplus_module_1.flatMap(Cosmos
|
|
35
|
+
.CosmosClient, ({ db }) => tsplus_module_1.tryPromise(() => db
|
|
33
36
|
.container(type)
|
|
34
|
-
.items
|
|
37
|
+
.items
|
|
38
|
+
.query({
|
|
35
39
|
query: `
|
|
36
40
|
SELECT TOP 1 ${type}.id
|
|
37
41
|
FROM ${type} i
|
|
38
42
|
WHERE (
|
|
39
43
|
${typedKeysOf(parameters)
|
|
40
|
-
.map(k => `i.${k} = @${k}`)
|
|
44
|
+
.map((k) => `i.${k} = @${k}`)
|
|
41
45
|
.join(" and ")}
|
|
42
46
|
)
|
|
43
47
|
`,
|
|
44
|
-
parameters: typedKeysOf(parameters).map(p => ({
|
|
48
|
+
parameters: typedKeysOf(parameters).map((p) => ({
|
|
45
49
|
name: `@${p}`,
|
|
46
50
|
value: parameters[p]
|
|
47
51
|
}))
|
|
48
52
|
})
|
|
49
|
-
.fetchAll())), x => tsplus_module_3.head(x.resources)), _ => tsplus_module_2.map(_, _ => _.id));
|
|
53
|
+
.fetchAll())), (x) => tsplus_module_3.head(x.resources)), (_) => tsplus_module_2.map(_, (_) => _.id));
|
|
50
54
|
}
|
|
51
55
|
function store(record, currentVersion) {
|
|
52
56
|
return tsplus_module_1.gen(function* ($) {
|
|
53
57
|
const version = "_etag"; // we get this from the etag anyway.
|
|
54
|
-
const db = yield* $(Cosmos.
|
|
58
|
+
const { db } = yield* $(Cosmos.CosmosClient);
|
|
55
59
|
const data = yield* $(encode(record));
|
|
56
60
|
yield* $(tsplus_module_2.match(currentVersion, () => tsplus_module_1.orDie(tsplus_module_1.asUnit(tsplus_module_1.tryPromise(() => db.container(type).items.create({
|
|
57
61
|
id: record.id,
|
|
58
62
|
timestamp: new Date(),
|
|
59
63
|
data
|
|
60
|
-
})))), currentVersion => tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => db
|
|
64
|
+
})))), (currentVersion) => tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => db
|
|
61
65
|
.container(type)
|
|
62
66
|
.item(record.id)
|
|
63
67
|
.replace({
|
|
@@ -69,7 +73,7 @@ WHERE (
|
|
|
69
73
|
type: "IfMatch",
|
|
70
74
|
condition: currentVersion
|
|
71
75
|
}
|
|
72
|
-
}))), x => {
|
|
76
|
+
}))), (x) => {
|
|
73
77
|
if (x.statusCode === 412) {
|
|
74
78
|
return tsplus_module_1.fail(new OptimisticLockException(type, record.id));
|
|
75
79
|
}
|
|
@@ -83,4 +87,4 @@ WHERE (
|
|
|
83
87
|
}
|
|
84
88
|
};
|
|
85
89
|
}
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zbW9zZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL3NpbXBsZWRiL2Nvc21vc2RiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFcEQsT0FBTyxLQUFLLE1BQU0sTUFBTSwwQ0FBMEMsQ0FBQTtBQUVsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDckQsT0FBTyxLQUFLLFFBQVEsTUFBTSxlQUFlLENBQUE7QUFHekMsTUFBTSxzQkFBc0I7SUFDMUIsWUFBcUIsT0FBZTtRQUFmLFlBQU8sR0FBUCxPQUFPLENBQVE7SUFBRyxDQUFDO0NBQ3pDO0FBRUQsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFZLEVBQUUsY0FBOEIsRUFBRSxFQUFFLENBQzdELG9CQUFBLE1BQU0sQ0FBQyxZQUFZLEVBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FDakMsMkJBQWtCLEdBQUcsRUFBRSxDQUNyQixFQUFFO0tBQ0MsVUFBVTtLQUNWLE1BQU0sQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLENBQUM7S0FDcEMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQ3JDLENBQ0YsQ0FBQTtBQUNILHVEQUF1RDtBQUN2RCxnRkFBZ0Y7QUFDaEYsTUFBTSxVQUFVLGFBQWE7SUFDM0IsT0FBTyxDQUNMLElBQVksRUFDWixNQUFpRCxFQUNqRCxNQUE4QztJQUM5Qyx5QkFBeUI7SUFDekIsT0FBdUIsRUFDdkIsRUFBRTtRQUNGLE9BQU8sb0JBQUEsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsRUFBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JDLElBQUksRUFBRSxRQUFRLENBQUMsSUFB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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;;
|
|
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;;EAgC/B;AAQD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,QASrC"}
|
|
@@ -22,14 +22,14 @@ export function createContext() {
|
|
|
22
22
|
save: simpledb.store(find(type), store, lockRecordOnDisk(type), type)
|
|
23
23
|
};
|
|
24
24
|
function store(record, currentVersion) {
|
|
25
|
-
const version = tsplus_module_1.getOrElse(tsplus_module_1.map(currentVersion, cv => (parseInt(cv) + 1).toString()), () => "1");
|
|
26
|
-
const getData = flow(encode, _ => tsplus_module_2.map(_, data => pretty({ version, timestamp: new Date(), data })));
|
|
25
|
+
const version = tsplus_module_1.getOrElse(tsplus_module_1.map(currentVersion, (cv) => (parseInt(cv) + 1).toString()), () => "1");
|
|
26
|
+
const getData = flow(encode, (_) => tsplus_module_2.map(_, (data) => pretty({ version, timestamp: new Date(), data })));
|
|
27
27
|
const idx = makeIndexKey(record);
|
|
28
28
|
return tsplus_module_1.isSome(currentVersion)
|
|
29
|
-
? tsplus_module_2.map(tsplus_module_2.scoped(tsplus_module_2.zipRight(lockIndex(record), tsplus_module_2.orDie(tsplus_module_2.flatMap(readIndex(idx), x => x[record.id]
|
|
29
|
+
? tsplus_module_2.map(tsplus_module_2.scoped(tsplus_module_2.zipRight(lockIndex(record), tsplus_module_2.orDie(tsplus_module_2.flatMap(readIndex(idx), (x) => x[record.id]
|
|
30
30
|
? tsplus_module_2.fail(() => new Error("Combination already exists, abort"))
|
|
31
|
-
: tsplus_module_2.zipRight(tsplus_module_2.flatMap(getData(record), serialised => fu.writeTextFile(getFilename(type, record.id), serialised)), writeIndex(idx, { ...x, [idx.key]: record.id })))))), () => ({ version, data: record }))
|
|
32
|
-
: tsplus_module_2.map(tsplus_module_2.flatMap(getData(record), serialised => fu.writeTextFile(getFilename(type, record.id), serialised)), () => ({ version, data: record }));
|
|
31
|
+
: tsplus_module_2.zipRight(tsplus_module_2.flatMap(getData(record), (serialised) => fu.writeTextFile(getFilename(type, record.id), serialised)), writeIndex(idx, { ...x, [idx.key]: record.id })))))), () => ({ version, data: record }))
|
|
32
|
+
: tsplus_module_2.map(tsplus_module_2.flatMap(getData(record), (serialised) => fu.writeTextFile(getFilename(type, record.id), serialised)), () => ({ version, data: record }));
|
|
33
33
|
}
|
|
34
34
|
function lockIndex(record) {
|
|
35
35
|
const index = makeIndexKey(record);
|
|
@@ -44,32 +44,32 @@ 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)), err => new CouldNotAquireDbLockException(type, id, err), release => ({ release })), l => l.release);
|
|
47
|
+
return (id) => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(lockFile(getFilename(type, id)), (err) => new CouldNotAquireDbLockException(type, id, err), (release) => ({ release })), (l) => l.release);
|
|
48
48
|
}
|
|
49
49
|
function lockIndexOnDisk(type) {
|
|
50
|
-
return (id) => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(lockFile(getIdxName(type, id)), err => new CouldNotAquireDbLockException(type, id, err), release => ({ release })), l => l.release);
|
|
50
|
+
return (id) => tsplus_module_2.acquireRelease(tsplus_module_2.mapBoth(lockFile(getIdxName(type, id)), (err) => new CouldNotAquireDbLockException(type, id, err), (release) => ({ release })), (l) => l.release);
|
|
51
51
|
}
|
|
52
52
|
function readFile(filePath) {
|
|
53
53
|
return tsplus_module_2.catchAll(fu
|
|
54
|
-
.readTextFile(filePath), err => tsplus_module_2.die(new ConnectionException(err)));
|
|
54
|
+
.readTextFile(filePath), (err) => tsplus_module_2.die(new ConnectionException(err)));
|
|
55
55
|
}
|
|
56
56
|
function find(type) {
|
|
57
57
|
return (id) => {
|
|
58
|
-
return tsplus_module_2.map(tryRead(getFilename(type, id)), _ => tsplus_module_1.map(_, s => JSON.parse(s)));
|
|
58
|
+
return tsplus_module_2.map(tryRead(getFilename(type, id)), (_) => tsplus_module_1.map(_, (s) => JSON.parse(s)));
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
function getIdx(index) {
|
|
62
|
-
return tsplus_module_2.map(readIndex(index), idx => tsplus_module_1.fromNullable(idx[index.key]));
|
|
62
|
+
return tsplus_module_2.map(readIndex(index), (idx) => tsplus_module_1.fromNullable(idx[index.key]));
|
|
63
63
|
}
|
|
64
64
|
function readIndex(index) {
|
|
65
|
-
return tsplus_module_2.map(tryRead(getIdxName(type, index.doc)), _ => tsplus_module_1.match(_, () => ({}), x => JSON.parse(x)));
|
|
65
|
+
return tsplus_module_2.map(tryRead(getIdxName(type, index.doc)), (_) => tsplus_module_1.match(_, () => ({}), (x) => JSON.parse(x)));
|
|
66
66
|
}
|
|
67
67
|
function writeIndex(index, content) {
|
|
68
|
-
return pipe(JSON.stringify(content), serialised => fu.writeTextFile(getIdxName(type, index.doc), serialised));
|
|
68
|
+
return pipe(JSON.stringify(content), (serialised) => fu.writeTextFile(getIdxName(type, index.doc), serialised));
|
|
69
69
|
}
|
|
70
70
|
function tryRead(filePath) {
|
|
71
71
|
return tsplus_module_2.flatMap(fu
|
|
72
|
-
.fileExists(filePath), exists => !exists ? tsplus_module_2.sync(() => tsplus_module_3.none) : tsplus_module_2.map(readFile(filePath), tsplus_module_1.some));
|
|
72
|
+
.fileExists(filePath), (exists) => !exists ? tsplus_module_2.sync(() => tsplus_module_3.none) : tsplus_module_2.map(readFile(filePath), tsplus_module_1.some));
|
|
73
73
|
}
|
|
74
74
|
function getFilename(type, id) {
|
|
75
75
|
return `${dir}/v${schemaVersion}.${getRecordName(type, id)}.json`;
|
|
@@ -80,7 +80,7 @@ export function createContext() {
|
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
82
|
function lockFile(fileName) {
|
|
83
|
-
return tsplus_module_2.tryPromise(() => PLF.lock(fileName).then(flow(tsplus_module_2.tryPromise, _ => tsplus_module_2.orDie(_))));
|
|
83
|
+
return tsplus_module_2.tryPromise(() => PLF.lock(fileName).then(flow(tsplus_module_2.tryPromise, (_) => tsplus_module_2.orDie(_))));
|
|
84
84
|
}
|
|
85
85
|
// TODO: ugh.
|
|
86
86
|
let initialised = false;
|
|
@@ -93,4 +93,4 @@ export function initialise(dir) {
|
|
|
93
93
|
}
|
|
94
94
|
initialised = true;
|
|
95
95
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlza2RiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vX3NyYy9zZXJ2aWNlcy9zaW1wbGVkYi9kaXNrZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUE7QUFDbkIsT0FBTyxLQUFLLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQTtBQUV0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFDL0MsT0FBTyxLQUFLLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUV6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsNkJBQTZCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM3RyxPQUFPLEtBQUssUUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUd6QyxNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLENBQ0wsSUFBWSxFQUNaLE1BQWlELEVBQ2pELE1BQThDLEVBQzlDLGFBQXFCLEVBQ3JCLFlBQTZCLEVBQzdCLEdBQUcsR0FBRyxXQUFXLEVBQ2pCLEVBQUU7UUFDRixVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDZixNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUE7UUFDaEMsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUNoRCxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMvQixFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUE7U0FDM0M7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDN0MsV0FBVyxF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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memdb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/memdb.ts"],"names":[],"mappings":";;;AACA,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAExC,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AASzC,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,uCAErE,MAAM,mBACK,CAAC,yEACN,EAAE;;;;
|
|
1
|
+
{"version":3,"file":"memdb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/memdb.ts"],"names":[],"mappings":";;;AACA,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAExC,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AASzC,wBAAgB,aAAa,CAAC,IAAI,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,QAAQ,CAAC,IAAI,CAAC,uCAErE,MAAM,mBACK,CAAC,yEACN,EAAE;;;;EA2DjB"}
|
|
@@ -19,7 +19,7 @@ export function createContext() {
|
|
|
19
19
|
};
|
|
20
20
|
function find(id) {
|
|
21
21
|
return tsplus_module_3.mapOption(tsplus_module_3.flatMapOption(tsplus_module_2.map(storage
|
|
22
|
-
.find(getRecordName(type, id)), _ => tsplus_module_1.map(_, s => JSON.parse(s))), parseSDB), ({ data, version }) => ({
|
|
22
|
+
.find(getRecordName(type, id)), (_) => tsplus_module_1.map(_, (s) => JSON.parse(s))), parseSDB), ({ data, version }) => ({
|
|
23
23
|
data: JSON.parse(data),
|
|
24
24
|
version
|
|
25
25
|
}));
|
|
@@ -31,7 +31,7 @@ export function createContext() {
|
|
|
31
31
|
const sdb_ = JSON.parse(value);
|
|
32
32
|
const sdb = yield* $(parseSDB(sdb_));
|
|
33
33
|
const cr = { data: JSON.parse(sdb.data), version: sdb.version };
|
|
34
|
-
const r = yield* $(tsplus_module_2.exit(tsplus_module_2.flatMap(decode(cr.data), d => eq(keys, d)
|
|
34
|
+
const r = yield* $(tsplus_module_2.exit(tsplus_module_2.flatMap(decode(cr.data), (d) => eq(keys, d)
|
|
35
35
|
? tsplus_module_2.sync(() => d)
|
|
36
36
|
: tsplus_module_2.fail("not equals"))));
|
|
37
37
|
if (tsplus_module_4.isSuccess(r)) {
|
|
@@ -42,13 +42,13 @@ export function createContext() {
|
|
|
42
42
|
}), tsplus_module_1.fromNullable);
|
|
43
43
|
}
|
|
44
44
|
function store(record, currentVersion) {
|
|
45
|
-
const version = tsplus_module_1.getOrElse(tsplus_module_1.map(currentVersion, cv => (parseInt(cv) + 1).toString()), () => "1");
|
|
46
|
-
const getData = flow(encode, _ => tsplus_module_2.map(tsplus_module_2.map(_, JSON.stringify), data => JSON.stringify({ version, timestamp: new Date(), data })));
|
|
47
|
-
return tsplus_module_2.map(tsplus_module_2.flatMap(getData(record), serialised => storage.set(getRecordName(type, record.id), serialised)), () => ({ version, data: record }));
|
|
45
|
+
const version = tsplus_module_1.getOrElse(tsplus_module_1.map(currentVersion, (cv) => (parseInt(cv) + 1).toString()), () => "1");
|
|
46
|
+
const getData = flow(encode, (_) => tsplus_module_2.map(tsplus_module_2.map(_, JSON.stringify), (data) => JSON.stringify({ version, timestamp: new Date(), data })));
|
|
47
|
+
return tsplus_module_2.map(tsplus_module_2.flatMap(getData(record), (serialised) => storage.set(getRecordName(type, record.id), serialised)), () => ({ version, data: record }));
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
function bogusLock() {
|
|
52
52
|
return tsplus_module_2.acquireRelease(tsplus_module_3.unit, () => tsplus_module_3.unit);
|
|
53
53
|
}
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL3NpbXBsZWRiL21lbWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDaEQsT0FBTyxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN4RSxPQUFPLEtBQUssUUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUd6Qyw0REFBNEQ7QUFDNUQsMkJBQTJCO0FBQzNCLE1BQU0sT0FBTyxHQUFHLE9BQU8sRUFBa0IsQ0FBQTtBQUV6QyxNQUFNLFFBQVEsR0FBZ0MsRUFBRSxDQUFDLFdBQVcsQ0FBM0Msa0JBQWtCLENBQUMsTUFBTSxDQUFrQixDQUFBO0FBRTVELE1BQU0sVUFBVSxhQUFhO0lBQzNCLE9BQU8sQ0FDTCxJQUFZLEVBQ1osTUFBaUQsRUFDakQsTUFBOEMsRUFDOUMsRUFBRTtRQUNGLE9BQU87WUFDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQztZQUN2QyxNQUFNO1lBQ04sSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDO1NBQ25ELENBQUE7UUFFRCxTQUFTLElBQUksQ0FBQyxFQUFVO1lBQ3RCLE9BQU8sMEJBQUEsOEJBQUEsb0JBQUEsT0FBTztpQkFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUN6QixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsb0JBQUEsQ0FBQyxFQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FB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
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Effect } from "@effect/io/Effect";
|
|
2
2
|
import { Option } from "@effect-app/core/Option";
|
|
3
|
+
import { MongoClient } from "@effect-app/infra-adapters/mongo-client";
|
|
3
4
|
import type { IndexDescription } from "mongodb";
|
|
4
|
-
import * as Mongo from "@effect-app/infra-adapters/mongo-client";
|
|
5
5
|
import type { DBRecord } from "./shared.js";
|
|
6
6
|
import { OptimisticLockException } from "./shared.js";
|
|
7
7
|
import * as simpledb from "./simpledb.js";
|
|
8
|
-
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>, indexes: IndexDescription[]) => import("@effect/io/Effect").Effect<
|
|
9
|
-
find: (id: string) => import("@effect/io/Effect").Effect<simpledb.RecordCache | RDecode |
|
|
10
|
-
findBy: (keys: Record<string, string>) => import("@effect/io/Effect").Effect<
|
|
11
|
-
save: (record: A) => import("@effect/io/Effect").Effect<simpledb.RecordCache | REncode |
|
|
8
|
+
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>, indexes: IndexDescription[]) => import("@effect/io/Effect").Effect<MongoClient, unknown, {
|
|
9
|
+
find: (id: string) => import("@effect/io/Effect").Effect<simpledb.RecordCache | RDecode | MongoClient, unknown, import("@effect/data/Option").Option<A>>;
|
|
10
|
+
findBy: (keys: Record<string, string>) => import("@effect/io/Effect").Effect<MongoClient, unknown, import("@effect/data/Option").Option<TKey>>;
|
|
11
|
+
save: (record: A) => import("@effect/io/Effect").Effect<simpledb.RecordCache | REncode | MongoClient, OptimisticLockException, A>;
|
|
12
12
|
}>;
|
|
13
13
|
//# sourceMappingURL=mongodb.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/mongodb.ts"],"names":[],"mappings":";;AAAA,OAAO,
|
|
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;;GA2D/C"}
|
|
@@ -1,14 +1,14 @@
|
|
|
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-app/core/Effect";
|
|
4
|
-
import
|
|
4
|
+
import { MongoClient } from "@effect-app/infra-adapters/mongo-client";
|
|
5
5
|
import { OptimisticLockException } from "./shared.js";
|
|
6
6
|
import * as simpledb from "./simpledb.js";
|
|
7
7
|
// const makeFromIndexKeys = (indexKeys: string[], unique: boolean) => indexKeys.reduce((prev, cur) => {
|
|
8
8
|
// prev[cur] = 1
|
|
9
9
|
// return prev
|
|
10
10
|
// }, {} as Record<string, number>)
|
|
11
|
-
const setup = (type, indexes) => tsplus_module_1.flatMap(tsplus_module_1.tap(
|
|
11
|
+
const setup = (type, indexes) => tsplus_module_1.flatMap(tsplus_module_1.tap(MongoClient, ({ db }) => tsplus_module_1.tryPromise(() => db.createCollection(type).catch((err) => console.warn(err)))), ({ db }) => tsplus_module_1.tryPromise(() => db.collection(type).createIndexes(indexes)));
|
|
12
12
|
export function createContext() {
|
|
13
13
|
return (type, encode, decode,
|
|
14
14
|
// schemaVersion: string,
|
|
@@ -19,27 +19,27 @@ export function createContext() {
|
|
|
19
19
|
save: simpledb.storeDirectly(store, type)
|
|
20
20
|
}));
|
|
21
21
|
function find(id) {
|
|
22
|
-
return tsplus_module_3.mapOption(tsplus_module_1.map(tsplus_module_1.flatMap(
|
|
22
|
+
return tsplus_module_3.mapOption(tsplus_module_1.map(tsplus_module_1.flatMap(MongoClient, ({ db }) => tsplus_module_1.tryPromise(() => db
|
|
23
23
|
.collection(type)
|
|
24
24
|
.findOne({ _id: { equals: id } }))), tsplus_module_2.fromNullable), ({ data, version }) => ({ version, data }));
|
|
25
25
|
}
|
|
26
26
|
function findBy(keys) {
|
|
27
|
-
return tsplus_module_3.mapOption(tsplus_module_1.map(tsplus_module_1.flatMap(
|
|
27
|
+
return tsplus_module_3.mapOption(tsplus_module_1.map(tsplus_module_1.flatMap(MongoClient, ({ db }) => tsplus_module_1.tryPromise(() => db.collection(type).findOne(keys, { projection: { _id: 1 } }))), tsplus_module_2.fromNullable), ({ _id }) => _id);
|
|
28
28
|
}
|
|
29
29
|
function store(record, currentVersion) {
|
|
30
30
|
return tsplus_module_1.gen(function* ($) {
|
|
31
|
-
const version = tsplus_module_2.getOrElse(tsplus_module_2.map(currentVersion, cv => (parseInt(cv) + 1).toString()), () => "1");
|
|
32
|
-
const db = yield* $(
|
|
31
|
+
const version = tsplus_module_2.getOrElse(tsplus_module_2.map(currentVersion, (cv) => (parseInt(cv) + 1).toString()), () => "1");
|
|
32
|
+
const { db } = yield* $(MongoClient);
|
|
33
33
|
const data = yield* $(encode(record));
|
|
34
34
|
yield* $(tsplus_module_2.match(currentVersion, () => tsplus_module_1.orDie(tsplus_module_1.asUnit(tsplus_module_1.tryPromise(() => db
|
|
35
35
|
.collection(type)
|
|
36
36
|
.insertOne({ _id: record.id, version, timestamp: new Date(), data }, {
|
|
37
37
|
checkKeys: false // support for keys with `.` and `$`. NOTE: you can write them, read them, but NOT query for them.
|
|
38
|
-
})))), currentVersion => tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => db.collection(type).replaceOne({ _id: record.id, version: currentVersion }, {
|
|
38
|
+
})))), (currentVersion) => tsplus_module_1.flatMap(tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => db.collection(type).replaceOne({ _id: record.id, version: currentVersion }, {
|
|
39
39
|
version,
|
|
40
40
|
timestamp: new Date(),
|
|
41
41
|
data
|
|
42
|
-
}, { upsert: false }))), x => {
|
|
42
|
+
}, { upsert: false }))), (x) => {
|
|
43
43
|
if (!x.modifiedCount) {
|
|
44
44
|
return tsplus_module_1.fail(new OptimisticLockException(type, record.id));
|
|
45
45
|
}
|
|
@@ -50,4 +50,4 @@ export function createContext() {
|
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZ29kYi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvc2ltcGxlZGIvbW9uZ29kYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUNBQXlDLENBQUE7QUFHckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3JELE9BQU8sS0FBSyxRQUFRLE1BQU0sZUFBZSxDQUFBO0FBR3pDLHdHQUF3RztBQUN4RyxrQkFBa0I7QUFDbEIsZ0JBQWdCO0FBQ2hCLG1DQUFtQztBQUVuQyxNQUFNLEtBQUssR0FBRyxDQUFDLElBQVksRUFBRSxPQUEyQixFQUFFLEVBQUUsQ0FDMUQsd0JBQUEsb0JBQUEsV0FBVyxFQUNKLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsMkJBQWtCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzdGLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsMkJBQWtCLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtBQUU3RixNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLENBQ0wsSUFBWSxFQUNaLE1BQWlELEVBQ2pELE1BQThDO0lBQzlDLHlCQUF5QjtJQUN6QixPQUEyQixFQUMzQixFQUFFO1FBQ0YsT0FBTyxvQkFBQSxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMs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
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Effect } from "@effect/io/Effect";
|
|
2
2
|
import { Option } from "@effect-app/core/Option";
|
|
3
|
+
import { RedisClient } from "@effect-app/infra-adapters/redis-client";
|
|
3
4
|
import * as MO from "@effect-app/schema";
|
|
4
|
-
import * as RED from "@effect-app/infra-adapters/redis-client";
|
|
5
5
|
import type { DBRecord, Index } from "./shared.js";
|
|
6
6
|
import { CouldNotAquireDbLockException } from "./shared.js";
|
|
7
7
|
import * as simpledb from "./simpledb.js";
|
|
8
8
|
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>, schemaVersion: string, makeIndexKey: (r: A) => Index) => {
|
|
9
|
-
find: (id: string) => import("@effect/io/Effect").Effect<
|
|
10
|
-
findByIndex: (index: Index) => import("@effect/io/Effect").Effect<
|
|
11
|
-
save: (record: A) => import("@effect/io/Effect").Effect<
|
|
9
|
+
find: (id: string) => import("@effect/io/Effect").Effect<RedisClient | simpledb.RecordCache | RDecode, simpledb.InvalidStateError, import("@effect/data/Option").Option<A>>;
|
|
10
|
+
findByIndex: (index: Index) => import("@effect/io/Effect").Effect<RedisClient, import("@effect-app/infra-adapters/redis-client").ConnectionException, import("@effect/data/Option").Option<TKey>>;
|
|
11
|
+
save: (record: A) => import("@effect/io/Effect").Effect<RedisClient | simpledb.RecordCache | REncode, CouldNotAquireDbLockException | import("./shared.js").OptimisticLockException | simpledb.InvalidStateError, A>;
|
|
12
12
|
};
|
|
13
13
|
declare const RedisSerializedDBRecord_base: MO.Model<RedisSerializedDBRecord, MO.SchemaProperties<{
|
|
14
14
|
version: MO.Property<MO.SchemaDefaultSchema<unknown, string, string, string, {}>, "required", import("@effect/data/Option").None<any>, import("@effect/data/Option").None<any>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redisdb.d.ts","sourceRoot":"","sources":["../../../_src/services/simpledb/redisdb.ts"],"names":[],"mappings":";;AAGA,OAAO,
|
|
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;;yBAgFN,KAAK;;EAwF/B;;;;;;;;;;AAED,qBAAa,uBAAwB,SAAQ,4BAI3C;CAAG"}
|
|
@@ -3,34 +3,34 @@ import * as tsplus_module_2 from "@effect-app/core/Effect";
|
|
|
3
3
|
import * as tsplus_module_3 from "@effect/data/Option";
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
5
|
import { flow, pipe } from "@effect-app/core/Function";
|
|
6
|
+
import { RedisClient } from "@effect-app/infra-adapters/redis-client";
|
|
6
7
|
import * as MO from "@effect-app/schema";
|
|
7
|
-
import * as RED from "@effect-app/infra-adapters/redis-client";
|
|
8
8
|
import { ConnectionException, CouldNotAquireDbLockException, getIndexName, getRecordName } from "./shared.js";
|
|
9
9
|
import * as simpledb from "./simpledb.js";
|
|
10
10
|
const ttl = 10 * 1000;
|
|
11
11
|
export function createContext() {
|
|
12
12
|
return (type, encode, decode, schemaVersion, makeIndexKey) => {
|
|
13
|
-
const getData = flow(encode, _ => tsplus_module_1.map(_, JSON.stringify));
|
|
13
|
+
const getData = flow(encode, (_) => tsplus_module_1.map(_, JSON.stringify));
|
|
14
14
|
return {
|
|
15
15
|
find: simpledb.find(find, decode, type),
|
|
16
16
|
findByIndex: getIdx,
|
|
17
17
|
save: simpledb.store(find, store, lockRedisRecord, type)
|
|
18
18
|
};
|
|
19
19
|
function find(id) {
|
|
20
|
-
return tsplus_module_1.orDie(tsplus_module_2.flatMapOption(
|
|
20
|
+
return tsplus_module_1.orDie(tsplus_module_2.flatMapOption(tsplus_module_1.flatMap(RedisClient, (_) => _.hmgetAll(getKey(id))), (v) => tsplus_module_1.mapError(tsplus_module_1.map(pipe(RedisSerializedDBRecord.Parser, MO.condemnFail)(v), ({ data, version }) => ({
|
|
21
21
|
data: JSON.parse(data),
|
|
22
22
|
version
|
|
23
|
-
})), e => new ConnectionException(new Error(e.toString())))));
|
|
23
|
+
})), (e) => new ConnectionException(new Error(e.toString())))));
|
|
24
24
|
}
|
|
25
25
|
function store(record, currentVersion) {
|
|
26
|
-
const version = tsplus_module_3.getOrElse(tsplus_module_3.map(currentVersion, cv => (parseInt(cv) + 1).toString()), () => "1");
|
|
26
|
+
const version = tsplus_module_3.getOrElse(tsplus_module_3.map(currentVersion, (cv) => (parseInt(cv) + 1).toString()), () => "1");
|
|
27
27
|
return tsplus_module_3.match(currentVersion, () => 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))
|
|
28
28
|
// TODO: instead use MULTI & EXEC to make it in one command?
|
|
29
|
-
, data => hmSetRec(getKey(record.id), {
|
|
29
|
+
, (data) => hmSetRec(getKey(record.id), {
|
|
30
30
|
version,
|
|
31
31
|
timestamp: new Date(),
|
|
32
32
|
data
|
|
33
|
-
})), setIndex(record))), () => ({ version, data: record })))), () => tsplus_module_1.map(tsplus_module_1.orDie(tsplus_module_1.flatMap(getData(record), data => hmSetRec(getKey(record.id), {
|
|
33
|
+
})), setIndex(record))), () => ({ version, data: record })))), () => tsplus_module_1.map(tsplus_module_1.orDie(tsplus_module_1.flatMap(getData(record), (data) => hmSetRec(getKey(record.id), {
|
|
34
34
|
version,
|
|
35
35
|
timestamp: new Date(),
|
|
36
36
|
data
|
|
@@ -49,28 +49,28 @@ export function createContext() {
|
|
|
49
49
|
return lockRedisIdx(index);
|
|
50
50
|
}
|
|
51
51
|
function getIdx(index) {
|
|
52
|
-
return tsplus_module_1.map(
|
|
52
|
+
return tsplus_module_1.flatMap(RedisClient, (_) => tsplus_module_1.map(_.hget(getIdxKey(index), index.key), (_) => tsplus_module_3.map(_, (i) => i)));
|
|
53
53
|
}
|
|
54
54
|
function setIdx(index, r) {
|
|
55
|
-
return
|
|
55
|
+
return tsplus_module_1.flatMap(RedisClient, (_) => _.hset(getIdxKey(index), index.key, r.id));
|
|
56
56
|
}
|
|
57
57
|
function lockRedisIdx(index) {
|
|
58
58
|
const lockKey = getIdxLockKey(index);
|
|
59
59
|
// acquire
|
|
60
|
-
return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(tsplus_module_1.flatMap(
|
|
60
|
+
return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(tsplus_module_1.flatMap(RedisClient, ({ lock }) => tsplus_module_1.tryPromise(() => lock.lock(lockKey, ttl))), (err) => new CouldNotAquireDbLockException(type, lockKey, err),
|
|
61
61
|
// release
|
|
62
|
-
lock => ({
|
|
62
|
+
(lock) => ({
|
|
63
63
|
release: tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => lock.unlock()))
|
|
64
|
-
})), l => l.release);
|
|
64
|
+
})), (l) => l.release);
|
|
65
65
|
}
|
|
66
66
|
function lockRedisRecord(id) {
|
|
67
67
|
// acquire
|
|
68
|
-
return tsplus_module_1.acquireRelease(tsplus_module_1.mapBoth(tsplus_module_1.flatMap(
|
|
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))), (err) => new CouldNotAquireDbLockException(type, id, err),
|
|
69
69
|
// release
|
|
70
|
-
lock => ({
|
|
70
|
+
(lock) => ({
|
|
71
71
|
// TODO
|
|
72
72
|
release: tsplus_module_1.orDie(tsplus_module_1.tryPromise(() => lock.unlock()))
|
|
73
|
-
})), l => l.release);
|
|
73
|
+
})), (l) => l.release);
|
|
74
74
|
}
|
|
75
75
|
function getKey(id) {
|
|
76
76
|
return `v${schemaVersion}.${getRecordName(type, id)}`;
|
|
@@ -87,8 +87,8 @@ export function createContext() {
|
|
|
87
87
|
};
|
|
88
88
|
function hmSetRec(key, val) {
|
|
89
89
|
const enc = RedisSerializedDBRecord.Encoder(val);
|
|
90
|
-
return tsplus_module_1.flatMap(
|
|
91
|
-
client.hmset(key, "version", enc.version, "timestamp", enc.timestamp, "data", enc.data, err => err
|
|
90
|
+
return tsplus_module_1.flatMap(RedisClient, ({ client }) => tsplus_module_1.uninterruptible(tsplus_module_1.async((res) => {
|
|
91
|
+
client.hmset(key, "version", enc.version, "timestamp", enc.timestamp, "data", enc.data, (err) => err
|
|
92
92
|
? res(tsplus_module_1.fail(new ConnectionException(err)))
|
|
93
93
|
: res(tsplus_module_1.sync(() => void 0)));
|
|
94
94
|
})));
|
|
@@ -100,4 +100,4 @@ export class RedisSerializedDBRecord extends MO.Model()({
|
|
|
100
100
|
data: MO.prop(MO.string)
|
|
101
101
|
}) {
|
|
102
102
|
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# 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,kKA8BlB"}
|
|
@@ -34,23 +34,23 @@ const getM = (type) => (eff) => tsplus_module_1.gen(function* ($) {
|
|
|
34
34
|
});
|
|
35
35
|
export function find(tryRead, decode, type) {
|
|
36
36
|
const getCache = getM(type);
|
|
37
|
-
const read = (id) => tsplus_module_3.mapOption(tsplus_module_3.tapOption(tsplus_module_3.flatMapOption(tryRead(id), ({ data, version }) => tsplus_module_1.mapBoth(decode(data), err => new InvalidStateError("DB serialisation Issue", err), data => ({ data, version }))), r => getCache(c => c.set(id, r))), r => r.data);
|
|
38
|
-
return (id) => getCache(c => tsplus_module_1.orElse(tsplus_module_3.mapOption(c
|
|
39
|
-
.find(id), existing => existing.data), () => read(id)));
|
|
37
|
+
const read = (id) => tsplus_module_3.mapOption(tsplus_module_3.tapOption(tsplus_module_3.flatMapOption(tryRead(id), ({ data, version }) => tsplus_module_1.mapBoth(decode(data), (err) => new InvalidStateError("DB serialisation Issue", err), (data) => ({ data, version }))), (r) => getCache((c) => c.set(id, r))), (r) => r.data);
|
|
38
|
+
return (id) => getCache((c) => tsplus_module_1.orElse(tsplus_module_3.mapOption(c
|
|
39
|
+
.find(id), (existing) => existing.data), () => read(id)));
|
|
40
40
|
}
|
|
41
41
|
export function storeDirectly(save, type) {
|
|
42
42
|
const getCache = getM(type);
|
|
43
|
-
return (record) => getCache(c => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(tsplus_module_3.mapOption(c
|
|
44
|
-
.find(record.id), x => x.version), cv => save(record, cv)), r => c.set(record.id, r)), r => r.data));
|
|
43
|
+
return (record) => getCache((c) => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(tsplus_module_3.mapOption(c
|
|
44
|
+
.find(record.id), (x) => x.version), (cv) => save(record, cv)), (r) => c.set(record.id, r)), (r) => r.data));
|
|
45
45
|
}
|
|
46
46
|
export function store(tryRead, save, lock, type) {
|
|
47
47
|
const getCache = getM(type);
|
|
48
|
-
return (record) => getCache(c => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(tsplus_module_3.mapOption(c
|
|
49
|
-
.find(record.id), x => x.version), _ => tsplus_module_5.match(_, () => save(record, tsplus_module_4.none), confirmVersionAndSave(record))), r => c.set(record.id, r)), r => r.data));
|
|
48
|
+
return (record) => getCache((c) => tsplus_module_1.map(tsplus_module_1.tap(tsplus_module_1.flatMap(tsplus_module_3.mapOption(c
|
|
49
|
+
.find(record.id), (x) => x.version), (_) => tsplus_module_5.match(_, () => save(record, tsplus_module_4.none), confirmVersionAndSave(record))), (r) => c.set(record.id, r)), (r) => r.data));
|
|
50
50
|
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), _ => tsplus_module_5.match(_, () => tsplus_module_1.fail(new InvalidStateError("record is gone")), tsplus_module_1.succeed)), ({ version }) => version !== cv
|
|
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), (_) => tsplus_module_5.match(_, () => tsplus_module_1.fail(new InvalidStateError("record is gone")), tsplus_module_1.succeed)), ({ version }) => version !== cv
|
|
52
52
|
? tsplus_module_1.fail(new OptimisticLockException(type, record.id))
|
|
53
53
|
: tsplus_module_3.unit), save(record, tsplus_module_5.some(cv)))));
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxlZGIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9fc3JjL3NlcnZpY2VzL3NpbXBsZWRiL3NpbXBsZWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUc5RCxNQUFNLE9BQU8saUJBQWlCO0lBRTVCLFlBQXFCLE9BQWUsRUFBVyxPQUFpQjtRQUEzQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVcsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUR2RCxTQUFJLEdBQUcsbUJBQW1CLENBQUE7SUFDZ0MsQ0FBQztDQUNyRTtBQUVELE1BQU0sVUFBVSxtQkFBbUI7SUFDakMsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQXNDLENBQUE7SUFDdkQsT0FBTztRQUNMLEdBQUcsRUFBRSxDQUFJLElBQVksRUFBRSxFQUFFLENBQ3ZCLHFCQUFZLEdBQUcsRUFBRTtZQUNmLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdEIsSUFBSSxDQUFDLEVBQUUsRUFBRTtnQkFDUCxNQUFNLEVBQUUsR0FBRyxPQUFPLEVBQW1CLENBQUE7Z0JBQ3JDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO2dCQUNmLE9BQU8sRUFBd0MsQ0FBQTthQUNoRDtZQUNELE9BQU8sRUFBd0MsQ0FBQTtRQUNqRCxDQUFDLENBQUM7S0FDTCxDQUFBO0FBQ0gsQ0FBQztBQUlELGFBQWE7QUFDYixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsZ0JBQUEsR0FBRyxFQUFlLENBQUE7QUFFN0MsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLHdCQUFBLDJCQUFPLG1CQUFtQixFQUFFLENBQUMsRUFBUyxXQUFXLENBQUMsQ0FBQTtBQUVqRixNQUFNLElBQUksR0FBRyxDQUFJLElBQVksRUFBRSxF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
|