@effect/cluster 0.46.1 → 0.46.3
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/dist/cjs/ClusterCron.js +6 -2
- package/dist/cjs/ClusterCron.js.map +1 -1
- package/dist/cjs/EntityProxy.js +1 -1
- package/dist/cjs/EntityProxy.js.map +1 -1
- package/dist/cjs/EntityProxyServer.js +12 -2
- package/dist/cjs/EntityProxyServer.js.map +1 -1
- package/dist/cjs/SqlMessageStorage.js +273 -236
- package/dist/cjs/SqlMessageStorage.js.map +1 -1
- package/dist/dts/ClusterCron.d.ts.map +1 -1
- package/dist/dts/EntityProxy.d.ts.map +1 -1
- package/dist/dts/EntityProxyServer.d.ts.map +1 -1
- package/dist/dts/SqlMessageStorage.d.ts +3 -7
- package/dist/dts/SqlMessageStorage.d.ts.map +1 -1
- package/dist/esm/ClusterCron.js +6 -2
- package/dist/esm/ClusterCron.js.map +1 -1
- package/dist/esm/EntityProxy.js +1 -1
- package/dist/esm/EntityProxy.js.map +1 -1
- package/dist/esm/EntityProxyServer.js +12 -2
- package/dist/esm/EntityProxyServer.js.map +1 -1
- package/dist/esm/SqlMessageStorage.js +273 -236
- package/dist/esm/SqlMessageStorage.js.map +1 -1
- package/package.json +4 -4
- package/src/ClusterCron.ts +10 -4
- package/src/EntityProxy.ts +4 -1
- package/src/EntityProxyServer.ts +23 -2
- package/src/SqlMessageStorage.ts +315 -267
package/dist/cjs/ClusterCron.js
CHANGED
|
@@ -64,8 +64,12 @@ const make = options => {
|
|
|
64
64
|
dateTime: next
|
|
65
65
|
}, {
|
|
66
66
|
discard: true
|
|
67
|
-
});
|
|
68
|
-
}).pipe(Effect.
|
|
67
|
+
}).pipe(Effect.sandbox, Effect.retry(retryPolicy));
|
|
68
|
+
}).pipe(Effect.catchAllCause(Effect.logWarning), Effect.annotateLogs({
|
|
69
|
+
module: "ClusterCron",
|
|
70
|
+
name: options.name,
|
|
71
|
+
dateTime: request.payload.dateTime
|
|
72
|
+
})));
|
|
69
73
|
}
|
|
70
74
|
};
|
|
71
75
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClusterCron.js","names":["Rpc","_interopRequireWildcard","require","Cron","DateTime","Duration","Effect","Layer","Option","PrimaryKey","Schedule","Schema","_ClusterSchema","ClusterSchema","DeliverAt","Entity","Singleton","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","make","options","CronEntity","name","payload","CronPayload","annotate","Persisted","Uninterruptible","ShardGroup","shardGroup","ClientTracingEnabled","InitialRun","gen","client","now","next","cron","run","dateTime","unsafeFromDate","discard","skipIfOlderThan","fromNullable","pipe","map","decode","getOrElse","days","effect","fnUntraced","lessThan","subtractDuration","execute","orDie","EntityLayer","toLayer","makeClient","request","ensuring","calculateNextRunFromPrevious","formatIso","sandbox","retry","retryPolicy","merge","exports","exponential","union","spaced","Class","DateTimeUtc","symbol"],"sources":["../../src/ClusterCron.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,GAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,QAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,QAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,MAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,KAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,MAAA,GAAAP,uBAAA,CAAAC,OAAA;AACA,IAAAO,UAAA,GAAAR,uBAAA,CAAAC,OAAA;AACA,IAAAQ,QAAA,GAAAT,uBAAA,CAAAC,OAAA;AACA,IAAAS,MAAA,GAAAV,uBAAA,CAAAC,OAAA;AAEA,IAAAU,cAAA,GAAAX,uBAAA,CAAAC,OAAA;AAAmD,IAAAW,aAAA,GAAAD,cAAA;AAEnD,IAAAE,SAAA,GAAAb,uBAAA,CAAAC,OAAA;AACA,IAAAa,MAAA,GAAAd,uBAAA,CAAAC,OAAA;AAEA,IAAAc,SAAA,GAAAf,uBAAA,CAAAC,OAAA;AAA2C,SAAAD,wBAAAgB,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAlB,uBAAA,YAAAA,CAAAgB,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAnB3C;;;;AAqBA;;;;AAIO,MAAMkB,IAAI,GAAUC,OA4B1B,IAA6D;EAC5D,MAAMC,UAAU,GAAGvB,MAAM,CAACqB,IAAI,CAAC,eAAeC,OAAO,CAACE,IAAI,EAAE,EAAE,CAC5DvC,GAAG,CAACoC,IAAI,CAAC,KAAK,EAAE;IACdI,OAAO,EAAEC;GACV,CAAC,CACCC,QAAQ,CAACC,wBAAS,EAAE,IAAI,CAAC,CACzBD,QAAQ,CAACE,8BAAe,EAAE,IAAI,CAAC,CACnC,CAAC,CACCF,QAAQ,CAAC7B,aAAa,CAACgC,UAAU,EAAE,MAAMR,OAAO,CAACS,UAAU,IAAI,SAAS,CAAC,CACzEJ,QAAQ,CAAC7B,aAAa,CAACkC,oBAAoB,EAAE,KAAK,CAAC;EAEtD,MAAMC,UAAU,GAAGhC,SAAS,CAACoB,IAAI,CAC/B,eAAeC,OAAO,CAACE,IAAI,EAAE,EAC7BjC,MAAM,CAAC2C,GAAG,CAAC,aAAS;IAClB,MAAMC,MAAM,GAAG,CAAC,OAAOZ,UAAU,CAACY,MAAM,EAAE,SAAS,CAAC;IACpD,MAAMC,GAAG,GAAG,OAAO/C,QAAQ,CAAC+C,GAAG;IAC/B,MAAMC,IAAI,GAAGjD,IAAI,CAACiD,IAAI,CAACf,OAAO,CAACgB,IAAI,EAAEF,GAAG,CAAC;IACzC,OAAOD,MAAM,CAACI,GAAG,CAAC;MAChBC,QAAQ,EAAEnD,QAAQ,CAACoD,cAAc,CAACJ,IAAI;KACvC,EAAE;MAAEK,OAAO,EAAE;IAAI,CAAE,CAAC;EACvB,CAAC,CAAC,EACF;IAAEX,UAAU,EAAET,OAAO,CAACS;EAAU,CAAE,CACnC;EAED,MAAMY,eAAe,GAAGlD,MAAM,CAACmD,YAAY,CAACtB,OAAO,CAACqB,eAAe,CAAC,CAACE,IAAI,CACvEpD,MAAM,CAACqD,GAAG,CAACxD,QAAQ,CAACyD,MAAM,CAAC,EAC3BtD,MAAM,CAACuD,SAAS,CAAC,MAAM1D,QAAQ,CAAC2D,IAAI,CAAC,CAAC,CAAC,CAAC,CACzC;EAED,MAAMC,MAAM,GAAG3D,MAAM,CAAC4D,UAAU,CAAC,WAAUX,QAAsB;IAC/D,MAAMJ,GAAG,GAAG,OAAO/C,QAAQ,CAAC+C,GAAG;IAC/B,IAAI/C,QAAQ,CAAC+D,QAAQ,CAACZ,QAAQ,EAAEnD,QAAQ,CAACgE,gBAAgB,CAACjB,GAAG,EAAEO,eAAe,CAAC,CAAC,EAAE;MAChF;IACF;IACA,OAAO,OAAOrB,OAAO,CAACgC,OAAO;EAC/B,CAAC,EAAE/D,MAAM,CAACgE,KAAK,CAAC;EAEhB,MAAMC,WAAW,GAAGjC,UAAU,CAACkC,OAAO,CAAClE,MAAM,CAAC2C,GAAG,CAAC,aAAS;IACzD,MAAMwB,UAAU,GAAG,OAAOnC,UAAU,CAACY,MAAM;IAC3C,OAAO;MACLI,GAAGA,CAACoB,OAAO;QACT,OAAOpE,MAAM,CAACqE,QAAQ,CACpBV,MAAM,CAACS,OAAO,CAAClC,OAAO,CAACe,QAAQ,CAAC,EAChCjD,MAAM,CAAC2C,GAAG,CAAC,aAAS;UAClB,MAAME,GAAG,GAAG,OAAO/C,QAAQ,CAAC+C,GAAG;UAC/B,MAAMC,IAAI,GAAGhD,QAAQ,CAACoD,cAAc,CAACrD,IAAI,CAACiD,IAAI,CAC5Cf,OAAO,CAACgB,IAAI,EACZhB,OAAO,CAACuC,4BAA4B,GAAGF,OAAO,CAAClC,OAAO,CAACe,QAAQ,GAAGJ,GAAG,CACtE,CAAC;UACF,MAAMD,MAAM,GAAGuB,UAAU,CAACrE,QAAQ,CAACyE,SAAS,CAACzB,IAAI,CAAC,CAAC;UACnD,OAAO,OAAOF,MAAM,CAACI,GAAG,CAAC;YAAEC,QAAQ,EAAEH;UAAI,CAAE,EAAE;YAAEK,OAAO,EAAE;UAAI,CAAE,CAAC
|
|
1
|
+
{"version":3,"file":"ClusterCron.js","names":["Rpc","_interopRequireWildcard","require","Cron","DateTime","Duration","Effect","Layer","Option","PrimaryKey","Schedule","Schema","_ClusterSchema","ClusterSchema","DeliverAt","Entity","Singleton","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","make","options","CronEntity","name","payload","CronPayload","annotate","Persisted","Uninterruptible","ShardGroup","shardGroup","ClientTracingEnabled","InitialRun","gen","client","now","next","cron","run","dateTime","unsafeFromDate","discard","skipIfOlderThan","fromNullable","pipe","map","decode","getOrElse","days","effect","fnUntraced","lessThan","subtractDuration","execute","orDie","EntityLayer","toLayer","makeClient","request","ensuring","calculateNextRunFromPrevious","formatIso","sandbox","retry","retryPolicy","catchAllCause","logWarning","annotateLogs","module","merge","exports","exponential","union","spaced","Class","DateTimeUtc","symbol"],"sources":["../../src/ClusterCron.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/cjs/EntityProxy.js
CHANGED
|
@@ -118,7 +118,7 @@ const toHttpApiGroup = (name, entity) => {
|
|
|
118
118
|
for (const parentRpc_ of entity.protocol.requests.values()) {
|
|
119
119
|
const parentRpc = parentRpc_;
|
|
120
120
|
const endpoint = HttpApiEndpoint.post(parentRpc._tag, `/${tagToPath(parentRpc._tag)}/:entityId`).setPath(entityIdPath).setPayload(parentRpc.payloadSchema).addSuccess(parentRpc.successSchema).addError(Schema.Union(parentRpc.errorSchema, ...clientErrors)).annotateContext(parentRpc.annotations);
|
|
121
|
-
const endpointDiscard = HttpApiEndpoint.post(parentRpc._tag
|
|
121
|
+
const endpointDiscard = HttpApiEndpoint.post(`${parentRpc._tag}Discard`, `/${tagToPath(parentRpc._tag)}/:entityId/discard`).setPath(entityIdPath).setPayload(parentRpc.payloadSchema).addError(Schema.Union(...clientErrors)).annotateContext(parentRpc.annotations);
|
|
122
122
|
group = group.add(endpoint).add(endpointDiscard);
|
|
123
123
|
}
|
|
124
124
|
return group;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityProxy.js","names":["HttpApiEndpoint","_interopRequireWildcard","require","HttpApiGroup","Rpc","RpcGroup","Schema","_ClusterError","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","clientErrors","MailboxFull","AlreadyProcessingMessage","PersistenceError","EntityNotManagedByRunner","toRpcGroup","entity","rpcs","parentRpc_","protocol","requests","values","parentRpc","payloadSchema","Struct","entityId","String","payload","oldMake","make","input","options","rpc","type","_tag","error","Union","errorSchema","success","successSchema","annotateContext","annotations","rpcDiscard","push","exports","entityIdPath","toHttpApiGroup","name","group","endpoint","post","tagToPath","setPath","setPayload","addSuccess","addError","endpointDiscard","add","tag","replace","toLowerCase"],"sources":["../../src/EntityProxy.ts"],"sourcesContent":[null],"mappings":"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
|
|
1
|
+
{"version":3,"file":"EntityProxy.js","names":["HttpApiEndpoint","_interopRequireWildcard","require","HttpApiGroup","Rpc","RpcGroup","Schema","_ClusterError","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","clientErrors","MailboxFull","AlreadyProcessingMessage","PersistenceError","EntityNotManagedByRunner","toRpcGroup","entity","rpcs","parentRpc_","protocol","requests","values","parentRpc","payloadSchema","Struct","entityId","String","payload","oldMake","make","input","options","rpc","type","_tag","error","Union","errorSchema","success","successSchema","annotateContext","annotations","rpcDiscard","push","exports","entityIdPath","toHttpApiGroup","name","group","endpoint","post","tagToPath","setPath","setPayload","addSuccess","addError","endpointDiscard","add","tag","replace","toLowerCase"],"sources":["../../src/EntityProxy.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -21,12 +21,22 @@ const layerHttpApi = (api, name, entity) => HttpApiBuilder.group(api, name, Effe
|
|
|
21
21
|
handlers = handlers.handle(parentRpc._tag, ({
|
|
22
22
|
path,
|
|
23
23
|
payload
|
|
24
|
-
}) => client(path.entityId)[parentRpc._tag](payload)
|
|
24
|
+
}) => client(path.entityId)[parentRpc._tag](payload).pipe(Effect.tapDefect(Effect.logError), Effect.annotateLogs({
|
|
25
|
+
module: "EntityProxyServer",
|
|
26
|
+
entity: entity.type,
|
|
27
|
+
entityId: path.entityId,
|
|
28
|
+
method: parentRpc._tag
|
|
29
|
+
}))).handle(`${parentRpc._tag}Discard`, ({
|
|
25
30
|
path,
|
|
26
31
|
payload
|
|
27
32
|
}) => client(path.entityId)[parentRpc._tag](payload, {
|
|
28
33
|
discard: true
|
|
29
|
-
}))
|
|
34
|
+
}).pipe(Effect.tapDefect(Effect.logError), Effect.annotateLogs({
|
|
35
|
+
module: "EntityProxyServer",
|
|
36
|
+
entity: entity.type,
|
|
37
|
+
entityId: path.entityId,
|
|
38
|
+
method: `${parentRpc._tag}Discard`
|
|
39
|
+
})));
|
|
30
40
|
}
|
|
31
41
|
return handlers;
|
|
32
42
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityProxyServer.js","names":["HttpApiBuilder","_interopRequireWildcard","require","Context","Effect","Layer","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","layerHttpApi","api","name","entity","group","fnUntraced","handlers_","client","handlers","parentRpc_","protocol","requests","values","parentRpc","handle","_tag","path","payload","entityId","discard","exports","layerRpcHandlers","effectContext","gen","context","Map","tag","
|
|
1
|
+
{"version":3,"file":"EntityProxyServer.js","names":["HttpApiBuilder","_interopRequireWildcard","require","Context","Effect","Layer","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","layerHttpApi","api","name","entity","group","fnUntraced","handlers_","client","handlers","parentRpc_","protocol","requests","values","parentRpc","handle","_tag","path","payload","entityId","pipe","tapDefect","logError","annotateLogs","module","type","method","discard","exports","layerRpcHandlers","effectContext","gen","context","Map","tag","key","handler","unsafeMake"],"sources":["../../src/EntityProxyServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.make = exports.layerWith = exports.layer = void 0;
|
|
7
|
+
var Migrator = _interopRequireWildcard(require("@effect/sql/Migrator"));
|
|
7
8
|
var SqlClient = _interopRequireWildcard(require("@effect/sql/SqlClient"));
|
|
8
9
|
var Arr = _interopRequireWildcard(require("effect/Array"));
|
|
9
10
|
var Effect = _interopRequireWildcard(require("effect/Effect"));
|
|
@@ -29,248 +30,16 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
|
|
|
29
30
|
const sql = (yield* SqlClient.SqlClient).withoutTransforms();
|
|
30
31
|
const prefix = options?.prefix ?? "cluster";
|
|
31
32
|
const table = name => `${prefix}_${name}`;
|
|
33
|
+
yield* Effect.orDie(Migrator.make({})({
|
|
34
|
+
loader: migrations(options),
|
|
35
|
+
table: table("migrations")
|
|
36
|
+
}));
|
|
32
37
|
const messageKindAckChunk = sql.literal(String(messageKind.AckChunk));
|
|
33
38
|
const replyKindWithExit = sql.literal(String(replyKind.WithExit));
|
|
34
39
|
const messagesTable = table("messages");
|
|
35
40
|
const messagesTableSql = sql(messagesTable);
|
|
36
41
|
const repliesTable = table("replies");
|
|
37
42
|
const repliesTableSql = sql(repliesTable);
|
|
38
|
-
yield* sql.onDialectOrElse({
|
|
39
|
-
mssql: () => sql`
|
|
40
|
-
IF OBJECT_ID(N'${messagesTableSql}', N'U') IS NULL
|
|
41
|
-
CREATE TABLE ${messagesTableSql} (
|
|
42
|
-
id BIGINT PRIMARY KEY,
|
|
43
|
-
rowid BIGINT IDENTITY(1,1),
|
|
44
|
-
message_id VARCHAR(255),
|
|
45
|
-
shard_id VARCHAR(50) NOT NULL,
|
|
46
|
-
entity_type VARCHAR(50) NOT NULL,
|
|
47
|
-
entity_id VARCHAR(255) NOT NULL,
|
|
48
|
-
kind INT NOT NULL,
|
|
49
|
-
tag VARCHAR(50),
|
|
50
|
-
payload TEXT,
|
|
51
|
-
headers TEXT,
|
|
52
|
-
trace_id VARCHAR(32),
|
|
53
|
-
span_id VARCHAR(16),
|
|
54
|
-
sampled BIT,
|
|
55
|
-
processed BIT NOT NULL DEFAULT 0,
|
|
56
|
-
request_id BIGINT NOT NULL,
|
|
57
|
-
reply_id BIGINT,
|
|
58
|
-
last_reply_id BIGINT,
|
|
59
|
-
last_read DATETIME,
|
|
60
|
-
deliver_at BIGINT,
|
|
61
|
-
UNIQUE (message_id),
|
|
62
|
-
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
63
|
-
)
|
|
64
|
-
`,
|
|
65
|
-
mysql: () => sql`
|
|
66
|
-
CREATE TABLE IF NOT EXISTS ${messagesTableSql} (
|
|
67
|
-
id BIGINT NOT NULL,
|
|
68
|
-
rowid BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
69
|
-
message_id VARCHAR(255),
|
|
70
|
-
shard_id VARCHAR(50) NOT NULL,
|
|
71
|
-
entity_type VARCHAR(50) NOT NULL,
|
|
72
|
-
entity_id VARCHAR(255) NOT NULL,
|
|
73
|
-
kind INT NOT NULL,
|
|
74
|
-
tag VARCHAR(50),
|
|
75
|
-
payload TEXT,
|
|
76
|
-
headers TEXT,
|
|
77
|
-
trace_id VARCHAR(32),
|
|
78
|
-
span_id VARCHAR(16),
|
|
79
|
-
sampled BOOLEAN,
|
|
80
|
-
processed BOOLEAN NOT NULL DEFAULT FALSE,
|
|
81
|
-
request_id BIGINT NOT NULL,
|
|
82
|
-
reply_id BIGINT,
|
|
83
|
-
last_reply_id BIGINT,
|
|
84
|
-
last_read DATETIME,
|
|
85
|
-
deliver_at BIGINT,
|
|
86
|
-
UNIQUE (id),
|
|
87
|
-
UNIQUE (message_id),
|
|
88
|
-
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
89
|
-
)
|
|
90
|
-
`,
|
|
91
|
-
pg: () => sql`
|
|
92
|
-
CREATE TABLE IF NOT EXISTS ${messagesTableSql} (
|
|
93
|
-
id BIGINT PRIMARY KEY,
|
|
94
|
-
rowid BIGSERIAL,
|
|
95
|
-
message_id VARCHAR(255),
|
|
96
|
-
shard_id VARCHAR(50) NOT NULL,
|
|
97
|
-
entity_type VARCHAR(50) NOT NULL,
|
|
98
|
-
entity_id VARCHAR(255) NOT NULL,
|
|
99
|
-
kind INT NOT NULL,
|
|
100
|
-
tag VARCHAR(50),
|
|
101
|
-
payload TEXT,
|
|
102
|
-
headers TEXT,
|
|
103
|
-
trace_id VARCHAR(32),
|
|
104
|
-
span_id VARCHAR(16),
|
|
105
|
-
sampled BOOLEAN,
|
|
106
|
-
processed BOOLEAN NOT NULL DEFAULT FALSE,
|
|
107
|
-
request_id BIGINT NOT NULL,
|
|
108
|
-
reply_id BIGINT,
|
|
109
|
-
last_reply_id BIGINT,
|
|
110
|
-
last_read TIMESTAMP,
|
|
111
|
-
deliver_at BIGINT,
|
|
112
|
-
UNIQUE (message_id),
|
|
113
|
-
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
114
|
-
)
|
|
115
|
-
`.pipe(Effect.ignore),
|
|
116
|
-
orElse: () =>
|
|
117
|
-
// sqlite
|
|
118
|
-
sql`
|
|
119
|
-
CREATE TABLE IF NOT EXISTS ${messagesTableSql} (
|
|
120
|
-
id INTEGER PRIMARY KEY,
|
|
121
|
-
message_id TEXT,
|
|
122
|
-
shard_id TEXT NOT NULL,
|
|
123
|
-
entity_type TEXT NOT NULL,
|
|
124
|
-
entity_id TEXT NOT NULL,
|
|
125
|
-
kind INTEGER NOT NULL,
|
|
126
|
-
tag TEXT,
|
|
127
|
-
payload TEXT,
|
|
128
|
-
headers TEXT,
|
|
129
|
-
trace_id TEXT,
|
|
130
|
-
span_id TEXT,
|
|
131
|
-
sampled BOOLEAN,
|
|
132
|
-
processed BOOLEAN NOT NULL DEFAULT FALSE,
|
|
133
|
-
request_id INTEGER NOT NULL,
|
|
134
|
-
reply_id INTEGER,
|
|
135
|
-
last_reply_id INTEGER,
|
|
136
|
-
last_read TEXT,
|
|
137
|
-
deliver_at INTEGER,
|
|
138
|
-
UNIQUE (message_id),
|
|
139
|
-
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
140
|
-
)
|
|
141
|
-
`
|
|
142
|
-
});
|
|
143
|
-
// Add message indexes optimized for the specific query patterns
|
|
144
|
-
const shardLookupIndex = `${messagesTable}_shard_idx`;
|
|
145
|
-
const requestIdLookupIndex = `${messagesTable}_request_id_idx`;
|
|
146
|
-
yield* sql.onDialectOrElse({
|
|
147
|
-
mssql: () => sql`
|
|
148
|
-
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = ${shardLookupIndex})
|
|
149
|
-
CREATE INDEX ${sql(shardLookupIndex)}
|
|
150
|
-
ON ${messagesTableSql} (shard_id, processed, last_read, deliver_at);
|
|
151
|
-
|
|
152
|
-
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = ${requestIdLookupIndex})
|
|
153
|
-
CREATE INDEX ${sql(requestIdLookupIndex)}
|
|
154
|
-
ON ${messagesTableSql} (request_id);
|
|
155
|
-
`,
|
|
156
|
-
mysql: () => sql`
|
|
157
|
-
CREATE INDEX ${sql(shardLookupIndex)}
|
|
158
|
-
ON ${messagesTableSql} (shard_id, processed, last_read, deliver_at);
|
|
159
|
-
|
|
160
|
-
CREATE INDEX ${sql(requestIdLookupIndex)}
|
|
161
|
-
ON ${messagesTableSql} (request_id);
|
|
162
|
-
`.unprepared.pipe(Effect.ignore),
|
|
163
|
-
pg: () => sql`
|
|
164
|
-
CREATE INDEX IF NOT EXISTS ${sql(shardLookupIndex)}
|
|
165
|
-
ON ${messagesTableSql} (shard_id, processed, last_read, deliver_at);
|
|
166
|
-
|
|
167
|
-
CREATE INDEX IF NOT EXISTS ${sql(requestIdLookupIndex)}
|
|
168
|
-
ON ${messagesTableSql} (request_id);
|
|
169
|
-
`.pipe(Effect.tapDefect(error => Effect.annotateLogs(Effect.logDebug("Failed to create indexes", error), {
|
|
170
|
-
package: "@effect/cluster",
|
|
171
|
-
module: "SqlMessageStorage"
|
|
172
|
-
})), Effect.retry({
|
|
173
|
-
schedule: Schedule.spaced(1000)
|
|
174
|
-
})),
|
|
175
|
-
orElse: () =>
|
|
176
|
-
// sqlite
|
|
177
|
-
Effect.all([sql`
|
|
178
|
-
CREATE INDEX IF NOT EXISTS ${sql(shardLookupIndex)}
|
|
179
|
-
ON ${messagesTableSql} (shard_id, processed, last_read, deliver_at)
|
|
180
|
-
`, sql`
|
|
181
|
-
CREATE INDEX IF NOT EXISTS ${sql(requestIdLookupIndex)}
|
|
182
|
-
ON ${messagesTableSql} (request_id)
|
|
183
|
-
`]).pipe(sql.withTransaction)
|
|
184
|
-
});
|
|
185
|
-
yield* sql.onDialectOrElse({
|
|
186
|
-
mssql: () => sql`
|
|
187
|
-
IF OBJECT_ID(N'${repliesTableSql}', N'U') IS NULL
|
|
188
|
-
CREATE TABLE ${repliesTableSql} (
|
|
189
|
-
id BIGINT PRIMARY KEY,
|
|
190
|
-
rowid BIGINT IDENTITY(1,1),
|
|
191
|
-
kind INT,
|
|
192
|
-
request_id BIGINT NOT NULL,
|
|
193
|
-
payload TEXT NOT NULL,
|
|
194
|
-
sequence INT,
|
|
195
|
-
acked BIT NOT NULL DEFAULT 0,
|
|
196
|
-
CONSTRAINT ${sql(repliesTable + "_one_exit")} UNIQUE (request_id, kind),
|
|
197
|
-
CONSTRAINT ${sql(repliesTable + "_sequence")} UNIQUE (request_id, sequence),
|
|
198
|
-
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
199
|
-
)
|
|
200
|
-
`,
|
|
201
|
-
mysql: () => sql`
|
|
202
|
-
CREATE TABLE IF NOT EXISTS ${repliesTableSql} (
|
|
203
|
-
id BIGINT NOT NULL,
|
|
204
|
-
rowid BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
205
|
-
kind INT,
|
|
206
|
-
request_id BIGINT NOT NULL,
|
|
207
|
-
payload TEXT NOT NULL,
|
|
208
|
-
sequence INT,
|
|
209
|
-
acked BOOLEAN NOT NULL DEFAULT FALSE,
|
|
210
|
-
UNIQUE (id),
|
|
211
|
-
UNIQUE (request_id, kind),
|
|
212
|
-
UNIQUE (request_id, sequence),
|
|
213
|
-
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
214
|
-
)
|
|
215
|
-
`,
|
|
216
|
-
pg: () => sql`
|
|
217
|
-
CREATE TABLE IF NOT EXISTS ${repliesTableSql} (
|
|
218
|
-
id BIGINT PRIMARY KEY,
|
|
219
|
-
rowid BIGSERIAL,
|
|
220
|
-
kind INT,
|
|
221
|
-
request_id BIGINT NOT NULL,
|
|
222
|
-
payload TEXT NOT NULL,
|
|
223
|
-
sequence INT,
|
|
224
|
-
acked BOOLEAN NOT NULL DEFAULT FALSE,
|
|
225
|
-
UNIQUE (request_id, kind),
|
|
226
|
-
UNIQUE (request_id, sequence),
|
|
227
|
-
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
228
|
-
)
|
|
229
|
-
`,
|
|
230
|
-
orElse: () =>
|
|
231
|
-
// sqlite
|
|
232
|
-
sql`
|
|
233
|
-
CREATE TABLE IF NOT EXISTS ${repliesTableSql} (
|
|
234
|
-
id INTEGER PRIMARY KEY,
|
|
235
|
-
kind INTEGER,
|
|
236
|
-
request_id INTEGER NOT NULL,
|
|
237
|
-
payload TEXT NOT NULL,
|
|
238
|
-
sequence INTEGER,
|
|
239
|
-
acked BOOLEAN NOT NULL DEFAULT FALSE,
|
|
240
|
-
UNIQUE (request_id, kind),
|
|
241
|
-
UNIQUE (request_id, sequence),
|
|
242
|
-
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
243
|
-
)
|
|
244
|
-
`
|
|
245
|
-
});
|
|
246
|
-
// Add reply indexes optimized for request_id lookups
|
|
247
|
-
const replyLookupIndex = `${repliesTable}_request_lookup_idx`;
|
|
248
|
-
yield* sql.onDialectOrElse({
|
|
249
|
-
mssql: () => sql`
|
|
250
|
-
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = ${replyLookupIndex})
|
|
251
|
-
CREATE INDEX ${sql(replyLookupIndex)}
|
|
252
|
-
ON ${repliesTableSql} (request_id, kind, acked);
|
|
253
|
-
`,
|
|
254
|
-
mysql: () => sql`
|
|
255
|
-
CREATE INDEX ${sql(replyLookupIndex)}
|
|
256
|
-
ON ${repliesTableSql} (request_id, kind, acked);
|
|
257
|
-
`.unprepared.pipe(Effect.ignore),
|
|
258
|
-
pg: () => sql`
|
|
259
|
-
CREATE INDEX IF NOT EXISTS ${sql(replyLookupIndex)}
|
|
260
|
-
ON ${repliesTableSql} (request_id, kind, acked);
|
|
261
|
-
`.pipe(Effect.tapDefect(error => Effect.annotateLogs(Effect.logDebug("Failed to create indexes", error), {
|
|
262
|
-
package: "@effect/cluster",
|
|
263
|
-
module: "SqlMessageStorage"
|
|
264
|
-
})), Effect.retry({
|
|
265
|
-
schedule: Schedule.spaced(1000)
|
|
266
|
-
})),
|
|
267
|
-
orElse: () =>
|
|
268
|
-
// sqlite
|
|
269
|
-
sql`
|
|
270
|
-
CREATE INDEX IF NOT EXISTS ${sql(replyLookupIndex)}
|
|
271
|
-
ON ${repliesTableSql} (request_id, kind, acked);
|
|
272
|
-
`
|
|
273
|
-
});
|
|
274
43
|
const envelopeToRow = (envelope, message_id, deliver_at) => {
|
|
275
44
|
switch (envelope._tag) {
|
|
276
45
|
case "Request":
|
|
@@ -679,6 +448,274 @@ const layerWith = options => Layer.scoped(MessageStorage.MessageStorage, make(op
|
|
|
679
448
|
// internal
|
|
680
449
|
// -------------------------------------------------------------------------------------------------
|
|
681
450
|
exports.layerWith = layerWith;
|
|
451
|
+
const migrations = options => {
|
|
452
|
+
const prefix = options?.prefix ?? "cluster";
|
|
453
|
+
const table = name => `${prefix}_${name}`;
|
|
454
|
+
const messagesTable = table("messages");
|
|
455
|
+
const repliesTable = table("replies");
|
|
456
|
+
return Migrator.fromRecord({
|
|
457
|
+
"0001_create_tables": Effect.gen(function* () {
|
|
458
|
+
const sql = (yield* SqlClient.SqlClient).withoutTransforms();
|
|
459
|
+
const messagesTableSql = sql(messagesTable);
|
|
460
|
+
const repliesTableSql = sql(repliesTable);
|
|
461
|
+
yield* sql.onDialectOrElse({
|
|
462
|
+
mssql: () => sql`
|
|
463
|
+
IF OBJECT_ID(N'${messagesTableSql}', N'U') IS NULL
|
|
464
|
+
CREATE TABLE ${messagesTableSql} (
|
|
465
|
+
id BIGINT PRIMARY KEY,
|
|
466
|
+
rowid BIGINT IDENTITY(1,1),
|
|
467
|
+
message_id VARCHAR(255),
|
|
468
|
+
shard_id VARCHAR(50) NOT NULL,
|
|
469
|
+
entity_type VARCHAR(150) NOT NULL,
|
|
470
|
+
entity_id VARCHAR(255) NOT NULL,
|
|
471
|
+
kind INT NOT NULL,
|
|
472
|
+
tag VARCHAR(50),
|
|
473
|
+
payload TEXT,
|
|
474
|
+
headers TEXT,
|
|
475
|
+
trace_id VARCHAR(32),
|
|
476
|
+
span_id VARCHAR(16),
|
|
477
|
+
sampled BIT,
|
|
478
|
+
processed BIT NOT NULL DEFAULT 0,
|
|
479
|
+
request_id BIGINT NOT NULL,
|
|
480
|
+
reply_id BIGINT,
|
|
481
|
+
last_reply_id BIGINT,
|
|
482
|
+
last_read DATETIME,
|
|
483
|
+
deliver_at BIGINT,
|
|
484
|
+
UNIQUE (message_id),
|
|
485
|
+
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
486
|
+
)
|
|
487
|
+
`,
|
|
488
|
+
mysql: () => sql`
|
|
489
|
+
CREATE TABLE IF NOT EXISTS ${messagesTableSql} (
|
|
490
|
+
id BIGINT NOT NULL,
|
|
491
|
+
rowid BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
492
|
+
message_id VARCHAR(255),
|
|
493
|
+
shard_id VARCHAR(50) NOT NULL,
|
|
494
|
+
entity_type VARCHAR(150) NOT NULL,
|
|
495
|
+
entity_id VARCHAR(255) NOT NULL,
|
|
496
|
+
kind INT NOT NULL,
|
|
497
|
+
tag VARCHAR(50),
|
|
498
|
+
payload TEXT,
|
|
499
|
+
headers TEXT,
|
|
500
|
+
trace_id VARCHAR(32),
|
|
501
|
+
span_id VARCHAR(16),
|
|
502
|
+
sampled BOOLEAN,
|
|
503
|
+
processed BOOLEAN NOT NULL DEFAULT FALSE,
|
|
504
|
+
request_id BIGINT NOT NULL,
|
|
505
|
+
reply_id BIGINT,
|
|
506
|
+
last_reply_id BIGINT,
|
|
507
|
+
last_read DATETIME,
|
|
508
|
+
deliver_at BIGINT,
|
|
509
|
+
UNIQUE (id),
|
|
510
|
+
UNIQUE (message_id),
|
|
511
|
+
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
512
|
+
)
|
|
513
|
+
`,
|
|
514
|
+
pg: () => sql`
|
|
515
|
+
CREATE TABLE IF NOT EXISTS ${messagesTableSql} (
|
|
516
|
+
id BIGINT PRIMARY KEY,
|
|
517
|
+
rowid BIGSERIAL,
|
|
518
|
+
message_id VARCHAR(255),
|
|
519
|
+
shard_id VARCHAR(50) NOT NULL,
|
|
520
|
+
entity_type VARCHAR(150) NOT NULL,
|
|
521
|
+
entity_id VARCHAR(255) NOT NULL,
|
|
522
|
+
kind INT NOT NULL,
|
|
523
|
+
tag VARCHAR(50),
|
|
524
|
+
payload TEXT,
|
|
525
|
+
headers TEXT,
|
|
526
|
+
trace_id VARCHAR(32),
|
|
527
|
+
span_id VARCHAR(16),
|
|
528
|
+
sampled BOOLEAN,
|
|
529
|
+
processed BOOLEAN NOT NULL DEFAULT FALSE,
|
|
530
|
+
request_id BIGINT NOT NULL,
|
|
531
|
+
reply_id BIGINT,
|
|
532
|
+
last_reply_id BIGINT,
|
|
533
|
+
last_read TIMESTAMP,
|
|
534
|
+
deliver_at BIGINT,
|
|
535
|
+
UNIQUE (message_id),
|
|
536
|
+
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
537
|
+
)
|
|
538
|
+
`.pipe(Effect.ignore),
|
|
539
|
+
orElse: () =>
|
|
540
|
+
// sqlite
|
|
541
|
+
sql`
|
|
542
|
+
CREATE TABLE IF NOT EXISTS ${messagesTableSql} (
|
|
543
|
+
id INTEGER PRIMARY KEY,
|
|
544
|
+
message_id TEXT,
|
|
545
|
+
shard_id TEXT NOT NULL,
|
|
546
|
+
entity_type TEXT NOT NULL,
|
|
547
|
+
entity_id TEXT NOT NULL,
|
|
548
|
+
kind INTEGER NOT NULL,
|
|
549
|
+
tag TEXT,
|
|
550
|
+
payload TEXT,
|
|
551
|
+
headers TEXT,
|
|
552
|
+
trace_id TEXT,
|
|
553
|
+
span_id TEXT,
|
|
554
|
+
sampled BOOLEAN,
|
|
555
|
+
processed BOOLEAN NOT NULL DEFAULT FALSE,
|
|
556
|
+
request_id INTEGER NOT NULL,
|
|
557
|
+
reply_id INTEGER,
|
|
558
|
+
last_reply_id INTEGER,
|
|
559
|
+
last_read TEXT,
|
|
560
|
+
deliver_at INTEGER,
|
|
561
|
+
UNIQUE (message_id),
|
|
562
|
+
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
563
|
+
)
|
|
564
|
+
`
|
|
565
|
+
});
|
|
566
|
+
// Add message indexes optimized for the specific query patterns
|
|
567
|
+
const shardLookupIndex = `${messagesTable}_shard_idx`;
|
|
568
|
+
const requestIdLookupIndex = `${messagesTable}_request_id_idx`;
|
|
569
|
+
yield* sql.onDialectOrElse({
|
|
570
|
+
mssql: () => sql`
|
|
571
|
+
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = ${shardLookupIndex})
|
|
572
|
+
CREATE INDEX ${sql(shardLookupIndex)}
|
|
573
|
+
ON ${messagesTableSql} (shard_id, processed, last_read, deliver_at);
|
|
574
|
+
|
|
575
|
+
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = ${requestIdLookupIndex})
|
|
576
|
+
CREATE INDEX ${sql(requestIdLookupIndex)}
|
|
577
|
+
ON ${messagesTableSql} (request_id);
|
|
578
|
+
`,
|
|
579
|
+
mysql: () => sql`
|
|
580
|
+
CREATE INDEX ${sql(shardLookupIndex)}
|
|
581
|
+
ON ${messagesTableSql} (shard_id, processed, last_read, deliver_at);
|
|
582
|
+
|
|
583
|
+
CREATE INDEX ${sql(requestIdLookupIndex)}
|
|
584
|
+
ON ${messagesTableSql} (request_id);
|
|
585
|
+
`.unprepared.pipe(Effect.ignore),
|
|
586
|
+
pg: () => sql`
|
|
587
|
+
CREATE INDEX IF NOT EXISTS ${sql(shardLookupIndex)}
|
|
588
|
+
ON ${messagesTableSql} (shard_id, processed, last_read, deliver_at);
|
|
589
|
+
|
|
590
|
+
CREATE INDEX IF NOT EXISTS ${sql(requestIdLookupIndex)}
|
|
591
|
+
ON ${messagesTableSql} (request_id);
|
|
592
|
+
`.pipe(Effect.tapDefect(error => Effect.annotateLogs(Effect.logDebug("Failed to create indexes", error), {
|
|
593
|
+
package: "@effect/cluster",
|
|
594
|
+
module: "SqlMessageStorage"
|
|
595
|
+
})), Effect.retry({
|
|
596
|
+
schedule: Schedule.spaced(1000)
|
|
597
|
+
})),
|
|
598
|
+
orElse: () =>
|
|
599
|
+
// sqlite
|
|
600
|
+
Effect.all([sql`
|
|
601
|
+
CREATE INDEX IF NOT EXISTS ${sql(shardLookupIndex)}
|
|
602
|
+
ON ${messagesTableSql} (shard_id, processed, last_read, deliver_at)
|
|
603
|
+
`, sql`
|
|
604
|
+
CREATE INDEX IF NOT EXISTS ${sql(requestIdLookupIndex)}
|
|
605
|
+
ON ${messagesTableSql} (request_id)
|
|
606
|
+
`]).pipe(sql.withTransaction)
|
|
607
|
+
});
|
|
608
|
+
yield* sql.onDialectOrElse({
|
|
609
|
+
mssql: () => sql`
|
|
610
|
+
IF OBJECT_ID(N'${repliesTableSql}', N'U') IS NULL
|
|
611
|
+
CREATE TABLE ${repliesTableSql} (
|
|
612
|
+
id BIGINT PRIMARY KEY,
|
|
613
|
+
rowid BIGINT IDENTITY(1,1),
|
|
614
|
+
kind INT,
|
|
615
|
+
request_id BIGINT NOT NULL,
|
|
616
|
+
payload TEXT NOT NULL,
|
|
617
|
+
sequence INT,
|
|
618
|
+
acked BIT NOT NULL DEFAULT 0,
|
|
619
|
+
CONSTRAINT ${sql(repliesTable + "_one_exit")} UNIQUE (request_id, kind),
|
|
620
|
+
CONSTRAINT ${sql(repliesTable + "_sequence")} UNIQUE (request_id, sequence),
|
|
621
|
+
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
622
|
+
)
|
|
623
|
+
`,
|
|
624
|
+
mysql: () => sql`
|
|
625
|
+
CREATE TABLE IF NOT EXISTS ${repliesTableSql} (
|
|
626
|
+
id BIGINT NOT NULL,
|
|
627
|
+
rowid BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
628
|
+
kind INT,
|
|
629
|
+
request_id BIGINT NOT NULL,
|
|
630
|
+
payload TEXT NOT NULL,
|
|
631
|
+
sequence INT,
|
|
632
|
+
acked BOOLEAN NOT NULL DEFAULT FALSE,
|
|
633
|
+
UNIQUE (id),
|
|
634
|
+
UNIQUE (request_id, kind),
|
|
635
|
+
UNIQUE (request_id, sequence),
|
|
636
|
+
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
637
|
+
)
|
|
638
|
+
`,
|
|
639
|
+
pg: () => sql`
|
|
640
|
+
CREATE TABLE IF NOT EXISTS ${repliesTableSql} (
|
|
641
|
+
id BIGINT PRIMARY KEY,
|
|
642
|
+
rowid BIGSERIAL,
|
|
643
|
+
kind INT,
|
|
644
|
+
request_id BIGINT NOT NULL,
|
|
645
|
+
payload TEXT NOT NULL,
|
|
646
|
+
sequence INT,
|
|
647
|
+
acked BOOLEAN NOT NULL DEFAULT FALSE,
|
|
648
|
+
UNIQUE (request_id, kind),
|
|
649
|
+
UNIQUE (request_id, sequence),
|
|
650
|
+
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
651
|
+
)
|
|
652
|
+
`,
|
|
653
|
+
orElse: () =>
|
|
654
|
+
// sqlite
|
|
655
|
+
sql`
|
|
656
|
+
CREATE TABLE IF NOT EXISTS ${repliesTableSql} (
|
|
657
|
+
id INTEGER PRIMARY KEY,
|
|
658
|
+
kind INTEGER,
|
|
659
|
+
request_id INTEGER NOT NULL,
|
|
660
|
+
payload TEXT NOT NULL,
|
|
661
|
+
sequence INTEGER,
|
|
662
|
+
acked BOOLEAN NOT NULL DEFAULT FALSE,
|
|
663
|
+
UNIQUE (request_id, kind),
|
|
664
|
+
UNIQUE (request_id, sequence),
|
|
665
|
+
FOREIGN KEY (request_id) REFERENCES ${messagesTableSql} (id) ON DELETE CASCADE
|
|
666
|
+
)
|
|
667
|
+
`
|
|
668
|
+
});
|
|
669
|
+
// Add reply indexes optimized for request_id lookups
|
|
670
|
+
const replyLookupIndex = `${repliesTable}_request_lookup_idx`;
|
|
671
|
+
yield* sql.onDialectOrElse({
|
|
672
|
+
mssql: () => sql`
|
|
673
|
+
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = ${replyLookupIndex})
|
|
674
|
+
CREATE INDEX ${sql(replyLookupIndex)}
|
|
675
|
+
ON ${repliesTableSql} (request_id, kind, acked);
|
|
676
|
+
`,
|
|
677
|
+
mysql: () => sql`
|
|
678
|
+
CREATE INDEX ${sql(replyLookupIndex)}
|
|
679
|
+
ON ${repliesTableSql} (request_id, kind, acked);
|
|
680
|
+
`.unprepared.pipe(Effect.ignore),
|
|
681
|
+
pg: () => sql`
|
|
682
|
+
CREATE INDEX IF NOT EXISTS ${sql(replyLookupIndex)}
|
|
683
|
+
ON ${repliesTableSql} (request_id, kind, acked);
|
|
684
|
+
`.pipe(Effect.tapDefect(error => Effect.annotateLogs(Effect.logDebug("Failed to create indexes", error), {
|
|
685
|
+
package: "@effect/cluster",
|
|
686
|
+
module: "SqlMessageStorage"
|
|
687
|
+
})), Effect.retry({
|
|
688
|
+
schedule: Schedule.spaced(1000)
|
|
689
|
+
})),
|
|
690
|
+
orElse: () =>
|
|
691
|
+
// sqlite
|
|
692
|
+
sql`
|
|
693
|
+
CREATE INDEX IF NOT EXISTS ${sql(replyLookupIndex)}
|
|
694
|
+
ON ${repliesTableSql} (request_id, kind, acked);
|
|
695
|
+
`
|
|
696
|
+
});
|
|
697
|
+
}),
|
|
698
|
+
"0002_entity_type_size": Effect.gen(function* () {
|
|
699
|
+
const sql = (yield* SqlClient.SqlClient).withoutTransforms();
|
|
700
|
+
const messagesTableSql = sql(messagesTable);
|
|
701
|
+
// resize entity_type to 150 characters
|
|
702
|
+
yield* sql.onDialectOrElse({
|
|
703
|
+
mssql: () => sql`
|
|
704
|
+
ALTER TABLE ${messagesTableSql} ALTER COLUMN entity_type VARCHAR(150) NOT NULL;
|
|
705
|
+
`,
|
|
706
|
+
mysql: () => sql`
|
|
707
|
+
ALTER TABLE ${messagesTableSql} MODIFY entity_type VARCHAR(150) NOT NULL;
|
|
708
|
+
`.unprepared.pipe(Effect.ignore),
|
|
709
|
+
pg: () => sql`
|
|
710
|
+
ALTER TABLE ${messagesTableSql} ALTER COLUMN entity_type TYPE VARCHAR(150);
|
|
711
|
+
`,
|
|
712
|
+
orElse: () =>
|
|
713
|
+
// sqlite
|
|
714
|
+
Effect.void
|
|
715
|
+
});
|
|
716
|
+
})
|
|
717
|
+
});
|
|
718
|
+
};
|
|
682
719
|
const messageKind = {
|
|
683
720
|
"Request": 0,
|
|
684
721
|
"AckChunk": 1,
|