@effect-app/infra 4.0.0-beta.69 → 4.0.0-beta.70
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
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLQueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/SQLQueue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,sCAAsC,CAAA;AAEhF,OAAO,EAAE,MAAM,EAA6C,CAAC,EAAU,MAAM,YAAY,CAAA;AACzF,OAAO,
|
|
1
|
+
{"version":3,"file":"SQLQueue.d.ts","sourceRoot":"","sources":["../../src/QueueMaker/SQLQueue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,sCAAsC,CAAA;AAEhF,OAAO,EAAE,MAAM,EAA6C,CAAC,EAAU,MAAM,YAAY,CAAA;AACzF,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAI/C,eAAO,MAAM,OAAO,oDAAoC,CAAA;AACxD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAGzC,wBAAgB,YAAY,CAC1B,GAAG,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC5C,QAAQ,SAAS;IAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACjD,IAAI,EACJ,SAAS,EAET,SAAS,EAAE,iBAAiB,EAC5B,cAAc,EAAE,iBAAiB,EACjC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,EAC1B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,uEAqK1C"}
|
|
@@ -3,9 +3,7 @@ import { reportNonInterruptedFailure } from "@effect-app/infra/QueueMaker/errors
|
|
|
3
3
|
import { QueueMeta } from "@effect-app/infra/QueueMaker/service";
|
|
4
4
|
import { subMinutes } from "date-fns";
|
|
5
5
|
import { Effect, Fiber, Option, S, Tracer } from "effect-app";
|
|
6
|
-
import { DateTimeUtcFromDate } from "effect-app/Schema";
|
|
7
6
|
import { pretty } from "effect-app/utils";
|
|
8
|
-
import { Override } from "effect/unstable/schema/Model";
|
|
9
7
|
import { SqlClient } from "effect/unstable/sql";
|
|
10
8
|
import { SQLModel } from "../adapters/SQL.js";
|
|
11
9
|
import { InfraLogger } from "../logger.js";
|
|
@@ -59,26 +57,22 @@ export function makeSQLQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
59
57
|
LIMIT 1`));
|
|
60
58
|
const q = {
|
|
61
59
|
offer: Effect.fnUntraced(function* (body, meta) {
|
|
62
|
-
|
|
63
|
-
yield* queueRepo.insertVoid({
|
|
60
|
+
yield* queueRepo.insertVoid(Queue.insert.make({
|
|
64
61
|
body,
|
|
65
62
|
meta,
|
|
66
63
|
name: queueName,
|
|
67
64
|
processingAt: Option.none(),
|
|
68
65
|
finishedAt: Option.none(),
|
|
69
|
-
etag: crypto.randomUUID()
|
|
70
|
-
|
|
71
|
-
updatedAt: Override(now)
|
|
72
|
-
});
|
|
66
|
+
etag: crypto.randomUUID()
|
|
67
|
+
}));
|
|
73
68
|
}),
|
|
74
69
|
take: Effect.gen(function* () {
|
|
75
70
|
while (true) {
|
|
76
|
-
const now = S.decodeSync(DateTimeUtcFromDate)(new Date());
|
|
77
71
|
const [first] = yield* drain.pipe(Effect.withTracerEnabled(false)); // disable sql tracer otherwise we spam it..
|
|
78
72
|
if (first) {
|
|
79
73
|
const dec = yield* decodeDrain(first);
|
|
80
|
-
const { updatedAt, ...rest } = dec;
|
|
81
|
-
return yield* drainRepo.update({ ...rest,
|
|
74
|
+
const { createdAt, updatedAt, ...rest } = dec;
|
|
75
|
+
return yield* drainRepo.update(Drain.update.make({ ...rest, processingAt: Option.some(new Date()) }) // auto in lib , etag: crypto.randomUUID()
|
|
82
76
|
);
|
|
83
77
|
}
|
|
84
78
|
if (first)
|
|
@@ -86,9 +80,8 @@ export function makeSQLQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
86
80
|
yield* Effect.sleep(250);
|
|
87
81
|
}
|
|
88
82
|
}),
|
|
89
|
-
finish: Effect.fn(function* ({ updatedAt, ...q }) {
|
|
90
|
-
|
|
91
|
-
return yield* drainRepo.updateVoid({ ...q, updatedAt: Override(now), finishedAt: Option.some(new Date()) }); // auto in lib , etag: crypto.randomUUID()
|
|
83
|
+
finish: Effect.fn(function* ({ createdAt, updatedAt, ...q }) {
|
|
84
|
+
return yield* drainRepo.updateVoid(Drain.update.make({ ...q, finishedAt: Option.some(new Date()) })); // auto in lib , etag: crypto.randomUUID()
|
|
92
85
|
})
|
|
93
86
|
};
|
|
94
87
|
const queue = {
|
|
@@ -136,4 +129,4 @@ export function makeSQLQueue(queueName, queueDrainName, schema, drainSchema) {
|
|
|
136
129
|
return queue;
|
|
137
130
|
});
|
|
138
131
|
}
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU1FMUXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUXVldWVNYWtlci9TUUxRdWV1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQTtBQUN6RyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUNqRixPQUFPLEVBQWtCLFNBQVMsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBQ2hGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDckMsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQThCLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXpGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFMUMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtBQUd4RCxvRkFBb0Y7QUFDcEYsTUFBTSxVQUFVLFlBQVksQ0FNMUIsU0FBNEIsRUFDNUIsY0FBaUMsRUFDakMsTUFBMEIsRUFDMUIsV0FBeUM7SUFFekMsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRztZQUNYLEVBQUUsRUFBRSxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztZQUMvQixJQUFJLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7WUFDeEMs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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/infra",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.70",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"dependencies": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"proper-lockfile": "^4.1.2",
|
|
14
14
|
"pure-rand": "7.0.1",
|
|
15
15
|
"query-string": "^9.3.1",
|
|
16
|
-
"effect-app": "4.0.0-beta.
|
|
16
|
+
"effect-app": "4.0.0-beta.70"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@azure/cosmos": "^4.9.2",
|
|
@@ -3,9 +3,8 @@ import { reportNonInterruptedFailure } from "@effect-app/infra/QueueMaker/errors
|
|
|
3
3
|
import { type QueueBase, QueueMeta } from "@effect-app/infra/QueueMaker/service"
|
|
4
4
|
import { subMinutes } from "date-fns"
|
|
5
5
|
import { Effect, Fiber, type NonEmptyReadonlyArray, Option, S, Tracer } from "effect-app"
|
|
6
|
-
import {
|
|
6
|
+
import { type NonEmptyString255 } from "effect-app/Schema"
|
|
7
7
|
import { pretty } from "effect-app/utils"
|
|
8
|
-
import { Override } from "effect/unstable/schema/Model"
|
|
9
8
|
import { SqlClient } from "effect/unstable/sql"
|
|
10
9
|
import { SQLModel } from "../adapters/SQL.js"
|
|
11
10
|
import { InfraLogger } from "../logger.js"
|
|
@@ -79,37 +78,31 @@ export function makeSQLQueue<
|
|
|
79
78
|
|
|
80
79
|
const q = {
|
|
81
80
|
offer: Effect.fnUntraced(function*(body: Evt, meta: typeof QueueMeta.Type) {
|
|
82
|
-
|
|
83
|
-
yield* queueRepo.insertVoid({
|
|
81
|
+
yield* queueRepo.insertVoid(Queue.insert.make({
|
|
84
82
|
body,
|
|
85
83
|
meta,
|
|
86
84
|
name: queueName,
|
|
87
85
|
processingAt: Option.none(),
|
|
88
86
|
finishedAt: Option.none(),
|
|
89
|
-
etag: crypto.randomUUID()
|
|
90
|
-
|
|
91
|
-
updatedAt: Override(now)
|
|
92
|
-
})
|
|
87
|
+
etag: crypto.randomUUID()
|
|
88
|
+
}))
|
|
93
89
|
}),
|
|
94
90
|
take: Effect.gen(function*() {
|
|
95
91
|
while (true) {
|
|
96
|
-
const now = S.decodeSync(DateTimeUtcFromDate)(new Date())
|
|
97
92
|
const [first] = yield* drain.pipe(Effect.withTracerEnabled(false)) // disable sql tracer otherwise we spam it..
|
|
98
93
|
if (first) {
|
|
99
94
|
const dec = yield* decodeDrain(first)
|
|
100
|
-
const { updatedAt, ...rest } = dec
|
|
95
|
+
const { createdAt, updatedAt, ...rest } = dec
|
|
101
96
|
return yield* drainRepo.update(
|
|
102
|
-
{ ...rest,
|
|
97
|
+
Drain.update.make({ ...rest, processingAt: Option.some(new Date()) }) // auto in lib , etag: crypto.randomUUID()
|
|
103
98
|
)
|
|
104
99
|
}
|
|
105
100
|
if (first) return first
|
|
106
101
|
yield* Effect.sleep(250)
|
|
107
102
|
}
|
|
108
103
|
}),
|
|
109
|
-
finish: Effect.fn(function*({ updatedAt, ...q }: Drain) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
return yield* drainRepo.updateVoid({ ...q, updatedAt: Override(now), finishedAt: Option.some(new Date()) }) // auto in lib , etag: crypto.randomUUID()
|
|
104
|
+
finish: Effect.fn(function*({ createdAt, updatedAt, ...q }: Drain) {
|
|
105
|
+
return yield* drainRepo.updateVoid(Drain.update.make({ ...q, finishedAt: Option.some(new Date()) })) // auto in lib , etag: crypto.randomUUID()
|
|
113
106
|
})
|
|
114
107
|
}
|
|
115
108
|
const queue = {
|