@rindle/daemon-client 0.3.1 → 0.4.2
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/index.d.ts +98 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +125 -0
package/dist/index.d.ts
CHANGED
|
@@ -124,6 +124,50 @@ export interface RoomLmidsInput {
|
|
|
124
124
|
export interface RoomLmidsOutput {
|
|
125
125
|
lmids: Record<string, number>;
|
|
126
126
|
}
|
|
127
|
+
/** `/mutate-session/begin` (DAEMON-INTERACTIVE-TXN-DESIGN.md §4.1): open an interactive write
|
|
128
|
+
* transaction on the master, held open across round trips under the daemon-owned deadline.
|
|
129
|
+
* Client-attributed sessions (`clientID` + `mid`) get mid dedup/gap resolution UP FRONT — an
|
|
130
|
+
* absorbed replay opens no session and the caller must skip the mutator. `statements` is the
|
|
131
|
+
* accumulated write prefix to replay into the fresh transaction (sound: nothing before the
|
|
132
|
+
* first read observed DB state); `query` rides the begin so a one-read mutator pays exactly
|
|
133
|
+
* one extra round trip over the batch path. */
|
|
134
|
+
export interface MutationSessionBegin {
|
|
135
|
+
clientID?: string;
|
|
136
|
+
mid?: number;
|
|
137
|
+
idempotencyKey?: string;
|
|
138
|
+
statements?: SqlStatement[];
|
|
139
|
+
query?: SqlStatement;
|
|
140
|
+
}
|
|
141
|
+
export interface MutationSessionBeginOutput {
|
|
142
|
+
/** Present iff a session opened. */
|
|
143
|
+
sessionId?: string;
|
|
144
|
+
/** The `query` read's result, when one rode the begin (`{cols, rows}`, bare cell arrays). */
|
|
145
|
+
read?: SqlReadOutput;
|
|
146
|
+
/** True when mid/idempotency dedup absorbed the envelope at begin: NO session opened, the
|
|
147
|
+
* mutator must not run — the remaining fields are the authoritative replay output, the same
|
|
148
|
+
* shape {@link RindleDaemonClient.executeSqlTxn} answers for a deduped mid. */
|
|
149
|
+
absorbed?: boolean;
|
|
150
|
+
applied?: boolean;
|
|
151
|
+
lmid?: number;
|
|
152
|
+
lmidAdvances?: Array<{
|
|
153
|
+
clientID: string;
|
|
154
|
+
lmid: number;
|
|
155
|
+
}>;
|
|
156
|
+
}
|
|
157
|
+
export interface MutationSessionExec {
|
|
158
|
+
sessionId: string;
|
|
159
|
+
statements: SqlStatement[];
|
|
160
|
+
}
|
|
161
|
+
/** A read through the open transaction (read-your-writes) — flat `{sessionId, sql, params}`,
|
|
162
|
+
* answered in the `/execute-sql-read` shape. */
|
|
163
|
+
export interface MutationSessionQuery {
|
|
164
|
+
sessionId: string;
|
|
165
|
+
sql: string;
|
|
166
|
+
params?: WireValue[];
|
|
167
|
+
}
|
|
168
|
+
export interface MutationSessionRef {
|
|
169
|
+
sessionId: string;
|
|
170
|
+
}
|
|
127
171
|
export interface MutationRejection {
|
|
128
172
|
clientID: string;
|
|
129
173
|
mid: number;
|
|
@@ -151,6 +195,29 @@ export interface MigrateOutput {
|
|
|
151
195
|
schemaVersion?: string;
|
|
152
196
|
restarting?: boolean;
|
|
153
197
|
}
|
|
198
|
+
/** One entry in a {@link MigrateBatchOutput}: the migration `id` and whether this apply ran it
|
|
199
|
+
* (false = the `id` was already journaled, an idempotent no-op). */
|
|
200
|
+
export interface MigrateResultItem {
|
|
201
|
+
id: string;
|
|
202
|
+
applied: boolean;
|
|
203
|
+
schemaVersion?: string;
|
|
204
|
+
}
|
|
205
|
+
/** The response to the ARRAY form of `/migrate` ({@link HttpRindleDaemonClient.migrateBatch}): a
|
|
206
|
+
* whole ordered set applied in one round-trip so a supervised daemon self-restarts ONCE for the
|
|
207
|
+
* set instead of once per migration. `results` are the migrations processed before any failure, in
|
|
208
|
+
* order; `applied` counts the newly-applied ones; `schemaVersion` is the latest applied id;
|
|
209
|
+
* `restarting` is true when the daemon is self-restarting to re-introspect (wait for it before the
|
|
210
|
+
* next call). On a failed migration `error`/`failedId` name it — the batch stops there, earlier
|
|
211
|
+
* migrations are committed (forward-only), and the daemon does NOT restart: fix forward and
|
|
212
|
+
* re-send. Unlike the single-migration form, this always arrives as HTTP 200; inspect `error`. */
|
|
213
|
+
export interface MigrateBatchOutput {
|
|
214
|
+
results: MigrateResultItem[];
|
|
215
|
+
applied: number;
|
|
216
|
+
schemaVersion?: string;
|
|
217
|
+
restarting?: boolean;
|
|
218
|
+
error?: string;
|
|
219
|
+
failedId?: string;
|
|
220
|
+
}
|
|
154
221
|
/** The SSR one-shot read (`SSR-DESIGN.md` §3). Materialize-or-reuse the query, read its current
|
|
155
222
|
* view ONCE, return it assembled; registers no subscriber. `visibilityKey`/`ttlMs` are optional. */
|
|
156
223
|
export interface QueryOnceInput {
|
|
@@ -182,6 +249,10 @@ export interface SchemaColumn {
|
|
|
182
249
|
* `"boolean"`/`"json"` intent is not recoverable from the file (`DRIZZLE-MIGRATIONS-DESIGN.md`
|
|
183
250
|
* §6.2). The full vocabulary is `"string" | "number" | "boolean" | "json"`. */
|
|
184
251
|
type: string;
|
|
252
|
+
/** `true` when the column is nullable (introspected `pragma_table_info.notnull == 0`); the
|
|
253
|
+
* generated column becomes `.nullable()`, typing it `T | null`. PK columns are always `false`
|
|
254
|
+
* (row identity). Absent on older daemons ⇒ treat as non-nullable. See design 206. */
|
|
255
|
+
nullable?: boolean;
|
|
185
256
|
}
|
|
186
257
|
/** One base table in the daemon's introspected schema: its name, ordered columns, and PK columns. */
|
|
187
258
|
export interface SchemaTable {
|
|
@@ -213,6 +284,18 @@ export interface RindleDaemonClient {
|
|
|
213
284
|
* the daemon is bounced (migrate-at-bounce, §5.2) — this applies DDL to the file but does not
|
|
214
285
|
* re-introspect the running engine. Drive it from a migration runner, not the request path. */
|
|
215
286
|
migrate(input: MigrateInput): Promise<MigrateOutput>;
|
|
287
|
+
/** Open an interactive mutation session (DAEMON-INTERACTIVE-TXN-DESIGN.md §4) — the write
|
|
288
|
+
* transaction a read-bearing mutator lazily upgrades onto. Optional as a group with the four
|
|
289
|
+
* ops below: only the daemon's control plane serves sessions (master-only — a follower's
|
|
290
|
+
* write-fence rejects begin); a client that lacks them forces the legacy committed-state
|
|
291
|
+
* read path. Session ops against a finished/expired session reject with a
|
|
292
|
+
* {@link DaemonHttpError} whose `status` is 410 — treat it as infra (retry the envelope;
|
|
293
|
+
* begin-time dedup absorbs a committed outcome). */
|
|
294
|
+
beginMutationSession?(input: MutationSessionBegin): Promise<MutationSessionBeginOutput>;
|
|
295
|
+
execInMutationSession?(input: MutationSessionExec): Promise<unknown>;
|
|
296
|
+
queryInMutationSession?(input: MutationSessionQuery): Promise<SqlReadOutput>;
|
|
297
|
+
commitMutationSession?(input: MutationSessionRef): Promise<SqlTxnOutput>;
|
|
298
|
+
rollbackMutationSession?(input: MutationSessionRef): Promise<unknown>;
|
|
216
299
|
/** Claim the next placement epoch for a room's doc (RINDLE-REALTIME §2.5). Optional:
|
|
217
300
|
* only daemons serving as a room write authority implement it; the API server's
|
|
218
301
|
* room host refuses loudly when its configured client lacks it. */
|
|
@@ -232,6 +315,11 @@ export interface HttpRindleDaemonClientPaths {
|
|
|
232
315
|
schema: string;
|
|
233
316
|
claimRoomEpoch: string;
|
|
234
317
|
roomLmids: string;
|
|
318
|
+
mutateSessionBegin: string;
|
|
319
|
+
mutateSessionExec: string;
|
|
320
|
+
mutateSessionQuery: string;
|
|
321
|
+
mutateSessionCommit: string;
|
|
322
|
+
mutateSessionRollback: string;
|
|
235
323
|
}
|
|
236
324
|
export type HeaderValue = string | undefined;
|
|
237
325
|
export type HeadersInput = Record<string, HeaderValue>;
|
|
@@ -286,8 +374,18 @@ export declare class HttpRindleDaemonClient implements RindleDaemonClient {
|
|
|
286
374
|
claimRoomEpoch(input: ClaimRoomEpochInput): Promise<ClaimRoomEpochOutput>;
|
|
287
375
|
roomLmids(input: RoomLmidsInput): Promise<RoomLmidsOutput>;
|
|
288
376
|
rejectMutation(input: MutationRejection): Promise<MutationRejectionOutput>;
|
|
377
|
+
beginMutationSession(input: MutationSessionBegin): Promise<MutationSessionBeginOutput>;
|
|
378
|
+
execInMutationSession(input: MutationSessionExec): Promise<unknown>;
|
|
379
|
+
queryInMutationSession(input: MutationSessionQuery): Promise<SqlReadOutput>;
|
|
380
|
+
commitMutationSession(input: MutationSessionRef): Promise<SqlTxnOutput>;
|
|
381
|
+
rollbackMutationSession(input: MutationSessionRef): Promise<unknown>;
|
|
289
382
|
query(input: QueryOnceInput): Promise<QueryOnceOutput>;
|
|
290
383
|
migrate(input: MigrateInput): Promise<MigrateOutput>;
|
|
384
|
+
/** Apply an ordered SET of migrations in one round-trip — the array form of {@link migrate}. The
|
|
385
|
+
* daemon applies them in order (stopping at the first failure) and, when supervised, self-restarts
|
|
386
|
+
* ONCE for the whole set. Drive it from a migration runner (`rindle migrate apply` does). See
|
|
387
|
+
* {@link MigrateBatchOutput} — inspect its `error` field rather than relying on the HTTP status. */
|
|
388
|
+
migrateBatch(inputs: MigrateInput[]): Promise<MigrateBatchOutput>;
|
|
291
389
|
/** The daemon's introspected base-table schema for client-schema codegen
|
|
292
390
|
* (`DRIZZLE-MIGRATIONS-DESIGN.md` §6.2). Read-only `GET /schema`, bearer-auth'd when the daemon
|
|
293
391
|
* has a token configured. Deliberately NOT on {@link RindleDaemonClient}: schema codegen is a
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,11 @@ const defaultPaths = {
|
|
|
10
10
|
schema: "/schema",
|
|
11
11
|
claimRoomEpoch: "/claim-room-epoch",
|
|
12
12
|
roomLmids: "/room-lmids",
|
|
13
|
+
mutateSessionBegin: "/mutate-session/begin",
|
|
14
|
+
mutateSessionExec: "/mutate-session/exec",
|
|
15
|
+
mutateSessionQuery: "/mutate-session/query",
|
|
16
|
+
mutateSessionCommit: "/mutate-session/commit",
|
|
17
|
+
mutateSessionRollback: "/mutate-session/rollback",
|
|
13
18
|
};
|
|
14
19
|
export class DaemonHttpError extends Error {
|
|
15
20
|
status;
|
|
@@ -64,12 +69,34 @@ export class HttpRindleDaemonClient {
|
|
|
64
69
|
rejectMutation(input) {
|
|
65
70
|
return this.post(this.paths.rejectMutation, input);
|
|
66
71
|
}
|
|
72
|
+
beginMutationSession(input) {
|
|
73
|
+
return this.post(this.paths.mutateSessionBegin, input);
|
|
74
|
+
}
|
|
75
|
+
execInMutationSession(input) {
|
|
76
|
+
return this.post(this.paths.mutateSessionExec, input);
|
|
77
|
+
}
|
|
78
|
+
queryInMutationSession(input) {
|
|
79
|
+
return this.post(this.paths.mutateSessionQuery, input);
|
|
80
|
+
}
|
|
81
|
+
commitMutationSession(input) {
|
|
82
|
+
return this.post(this.paths.mutateSessionCommit, input);
|
|
83
|
+
}
|
|
84
|
+
rollbackMutationSession(input) {
|
|
85
|
+
return this.post(this.paths.mutateSessionRollback, input);
|
|
86
|
+
}
|
|
67
87
|
query(input) {
|
|
68
88
|
return this.post(this.paths.query, input);
|
|
69
89
|
}
|
|
70
90
|
migrate(input) {
|
|
71
91
|
return this.post(this.paths.migrate, input);
|
|
72
92
|
}
|
|
93
|
+
/** Apply an ordered SET of migrations in one round-trip — the array form of {@link migrate}. The
|
|
94
|
+
* daemon applies them in order (stopping at the first failure) and, when supervised, self-restarts
|
|
95
|
+
* ONCE for the whole set. Drive it from a migration runner (`rindle migrate apply` does). See
|
|
96
|
+
* {@link MigrateBatchOutput} — inspect its `error` field rather than relying on the HTTP status. */
|
|
97
|
+
migrateBatch(inputs) {
|
|
98
|
+
return this.post(this.paths.migrate, inputs);
|
|
99
|
+
}
|
|
73
100
|
/** The daemon's introspected base-table schema for client-schema codegen
|
|
74
101
|
* (`DRIZZLE-MIGRATIONS-DESIGN.md` §6.2). Read-only `GET /schema`, bearer-auth'd when the daemon
|
|
75
102
|
* has a token configured. Deliberately NOT on {@link RindleDaemonClient}: schema codegen is a
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -124,6 +124,52 @@ export interface RoomLmidsOutput {
|
|
|
124
124
|
lmids: Record<string, number>;
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
/** `/mutate-session/begin` (DAEMON-INTERACTIVE-TXN-DESIGN.md §4.1): open an interactive write
|
|
128
|
+
* transaction on the master, held open across round trips under the daemon-owned deadline.
|
|
129
|
+
* Client-attributed sessions (`clientID` + `mid`) get mid dedup/gap resolution UP FRONT — an
|
|
130
|
+
* absorbed replay opens no session and the caller must skip the mutator. `statements` is the
|
|
131
|
+
* accumulated write prefix to replay into the fresh transaction (sound: nothing before the
|
|
132
|
+
* first read observed DB state); `query` rides the begin so a one-read mutator pays exactly
|
|
133
|
+
* one extra round trip over the batch path. */
|
|
134
|
+
export interface MutationSessionBegin {
|
|
135
|
+
clientID?: string;
|
|
136
|
+
mid?: number;
|
|
137
|
+
idempotencyKey?: string;
|
|
138
|
+
statements?: SqlStatement[];
|
|
139
|
+
query?: SqlStatement;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export interface MutationSessionBeginOutput {
|
|
143
|
+
/** Present iff a session opened. */
|
|
144
|
+
sessionId?: string;
|
|
145
|
+
/** The `query` read's result, when one rode the begin (`{cols, rows}`, bare cell arrays). */
|
|
146
|
+
read?: SqlReadOutput;
|
|
147
|
+
/** True when mid/idempotency dedup absorbed the envelope at begin: NO session opened, the
|
|
148
|
+
* mutator must not run — the remaining fields are the authoritative replay output, the same
|
|
149
|
+
* shape {@link RindleDaemonClient.executeSqlTxn} answers for a deduped mid. */
|
|
150
|
+
absorbed?: boolean;
|
|
151
|
+
applied?: boolean;
|
|
152
|
+
lmid?: number;
|
|
153
|
+
lmidAdvances?: Array<{ clientID: string; lmid: number }>;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export interface MutationSessionExec {
|
|
157
|
+
sessionId: string;
|
|
158
|
+
statements: SqlStatement[];
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/** A read through the open transaction (read-your-writes) — flat `{sessionId, sql, params}`,
|
|
162
|
+
* answered in the `/execute-sql-read` shape. */
|
|
163
|
+
export interface MutationSessionQuery {
|
|
164
|
+
sessionId: string;
|
|
165
|
+
sql: string;
|
|
166
|
+
params?: WireValue[];
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export interface MutationSessionRef {
|
|
170
|
+
sessionId: string;
|
|
171
|
+
}
|
|
172
|
+
|
|
127
173
|
export interface MutationRejection {
|
|
128
174
|
clientID: string;
|
|
129
175
|
mid: number;
|
|
@@ -155,6 +201,31 @@ export interface MigrateOutput {
|
|
|
155
201
|
restarting?: boolean;
|
|
156
202
|
}
|
|
157
203
|
|
|
204
|
+
/** One entry in a {@link MigrateBatchOutput}: the migration `id` and whether this apply ran it
|
|
205
|
+
* (false = the `id` was already journaled, an idempotent no-op). */
|
|
206
|
+
export interface MigrateResultItem {
|
|
207
|
+
id: string;
|
|
208
|
+
applied: boolean;
|
|
209
|
+
schemaVersion?: string;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/** The response to the ARRAY form of `/migrate` ({@link HttpRindleDaemonClient.migrateBatch}): a
|
|
213
|
+
* whole ordered set applied in one round-trip so a supervised daemon self-restarts ONCE for the
|
|
214
|
+
* set instead of once per migration. `results` are the migrations processed before any failure, in
|
|
215
|
+
* order; `applied` counts the newly-applied ones; `schemaVersion` is the latest applied id;
|
|
216
|
+
* `restarting` is true when the daemon is self-restarting to re-introspect (wait for it before the
|
|
217
|
+
* next call). On a failed migration `error`/`failedId` name it — the batch stops there, earlier
|
|
218
|
+
* migrations are committed (forward-only), and the daemon does NOT restart: fix forward and
|
|
219
|
+
* re-send. Unlike the single-migration form, this always arrives as HTTP 200; inspect `error`. */
|
|
220
|
+
export interface MigrateBatchOutput {
|
|
221
|
+
results: MigrateResultItem[];
|
|
222
|
+
applied: number;
|
|
223
|
+
schemaVersion?: string;
|
|
224
|
+
restarting?: boolean;
|
|
225
|
+
error?: string;
|
|
226
|
+
failedId?: string;
|
|
227
|
+
}
|
|
228
|
+
|
|
158
229
|
/** The SSR one-shot read (`SSR-DESIGN.md` §3). Materialize-or-reuse the query, read its current
|
|
159
230
|
* view ONCE, return it assembled; registers no subscriber. `visibilityKey`/`ttlMs` are optional. */
|
|
160
231
|
export interface QueryOnceInput {
|
|
@@ -185,6 +256,10 @@ export interface SchemaColumn {
|
|
|
185
256
|
* `"boolean"`/`"json"` intent is not recoverable from the file (`DRIZZLE-MIGRATIONS-DESIGN.md`
|
|
186
257
|
* §6.2). The full vocabulary is `"string" | "number" | "boolean" | "json"`. */
|
|
187
258
|
type: string;
|
|
259
|
+
/** `true` when the column is nullable (introspected `pragma_table_info.notnull == 0`); the
|
|
260
|
+
* generated column becomes `.nullable()`, typing it `T | null`. PK columns are always `false`
|
|
261
|
+
* (row identity). Absent on older daemons ⇒ treat as non-nullable. See design 206. */
|
|
262
|
+
nullable?: boolean;
|
|
188
263
|
}
|
|
189
264
|
|
|
190
265
|
/** One base table in the daemon's introspected schema: its name, ordered columns, and PK columns. */
|
|
@@ -219,6 +294,18 @@ export interface RindleDaemonClient {
|
|
|
219
294
|
* the daemon is bounced (migrate-at-bounce, §5.2) — this applies DDL to the file but does not
|
|
220
295
|
* re-introspect the running engine. Drive it from a migration runner, not the request path. */
|
|
221
296
|
migrate(input: MigrateInput): Promise<MigrateOutput>;
|
|
297
|
+
/** Open an interactive mutation session (DAEMON-INTERACTIVE-TXN-DESIGN.md §4) — the write
|
|
298
|
+
* transaction a read-bearing mutator lazily upgrades onto. Optional as a group with the four
|
|
299
|
+
* ops below: only the daemon's control plane serves sessions (master-only — a follower's
|
|
300
|
+
* write-fence rejects begin); a client that lacks them forces the legacy committed-state
|
|
301
|
+
* read path. Session ops against a finished/expired session reject with a
|
|
302
|
+
* {@link DaemonHttpError} whose `status` is 410 — treat it as infra (retry the envelope;
|
|
303
|
+
* begin-time dedup absorbs a committed outcome). */
|
|
304
|
+
beginMutationSession?(input: MutationSessionBegin): Promise<MutationSessionBeginOutput>;
|
|
305
|
+
execInMutationSession?(input: MutationSessionExec): Promise<unknown>;
|
|
306
|
+
queryInMutationSession?(input: MutationSessionQuery): Promise<SqlReadOutput>;
|
|
307
|
+
commitMutationSession?(input: MutationSessionRef): Promise<SqlTxnOutput>;
|
|
308
|
+
rollbackMutationSession?(input: MutationSessionRef): Promise<unknown>;
|
|
222
309
|
/** Claim the next placement epoch for a room's doc (RINDLE-REALTIME §2.5). Optional:
|
|
223
310
|
* only daemons serving as a room write authority implement it; the API server's
|
|
224
311
|
* room host refuses loudly when its configured client lacks it. */
|
|
@@ -239,6 +326,11 @@ export interface HttpRindleDaemonClientPaths {
|
|
|
239
326
|
schema: string;
|
|
240
327
|
claimRoomEpoch: string;
|
|
241
328
|
roomLmids: string;
|
|
329
|
+
mutateSessionBegin: string;
|
|
330
|
+
mutateSessionExec: string;
|
|
331
|
+
mutateSessionQuery: string;
|
|
332
|
+
mutateSessionCommit: string;
|
|
333
|
+
mutateSessionRollback: string;
|
|
242
334
|
}
|
|
243
335
|
|
|
244
336
|
export type HeaderValue = string | undefined;
|
|
@@ -285,6 +377,11 @@ const defaultPaths: HttpRindleDaemonClientPaths = {
|
|
|
285
377
|
schema: "/schema",
|
|
286
378
|
claimRoomEpoch: "/claim-room-epoch",
|
|
287
379
|
roomLmids: "/room-lmids",
|
|
380
|
+
mutateSessionBegin: "/mutate-session/begin",
|
|
381
|
+
mutateSessionExec: "/mutate-session/exec",
|
|
382
|
+
mutateSessionQuery: "/mutate-session/query",
|
|
383
|
+
mutateSessionCommit: "/mutate-session/commit",
|
|
384
|
+
mutateSessionRollback: "/mutate-session/rollback",
|
|
288
385
|
};
|
|
289
386
|
|
|
290
387
|
export class DaemonHttpError extends Error {
|
|
@@ -352,6 +449,26 @@ export class HttpRindleDaemonClient implements RindleDaemonClient {
|
|
|
352
449
|
return this.post(this.paths.rejectMutation, input);
|
|
353
450
|
}
|
|
354
451
|
|
|
452
|
+
beginMutationSession(input: MutationSessionBegin): Promise<MutationSessionBeginOutput> {
|
|
453
|
+
return this.post(this.paths.mutateSessionBegin, input);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
execInMutationSession(input: MutationSessionExec): Promise<unknown> {
|
|
457
|
+
return this.post(this.paths.mutateSessionExec, input);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
queryInMutationSession(input: MutationSessionQuery): Promise<SqlReadOutput> {
|
|
461
|
+
return this.post(this.paths.mutateSessionQuery, input);
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
commitMutationSession(input: MutationSessionRef): Promise<SqlTxnOutput> {
|
|
465
|
+
return this.post(this.paths.mutateSessionCommit, input);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
rollbackMutationSession(input: MutationSessionRef): Promise<unknown> {
|
|
469
|
+
return this.post(this.paths.mutateSessionRollback, input);
|
|
470
|
+
}
|
|
471
|
+
|
|
355
472
|
query(input: QueryOnceInput): Promise<QueryOnceOutput> {
|
|
356
473
|
return this.post(this.paths.query, input);
|
|
357
474
|
}
|
|
@@ -360,6 +477,14 @@ export class HttpRindleDaemonClient implements RindleDaemonClient {
|
|
|
360
477
|
return this.post(this.paths.migrate, input);
|
|
361
478
|
}
|
|
362
479
|
|
|
480
|
+
/** Apply an ordered SET of migrations in one round-trip — the array form of {@link migrate}. The
|
|
481
|
+
* daemon applies them in order (stopping at the first failure) and, when supervised, self-restarts
|
|
482
|
+
* ONCE for the whole set. Drive it from a migration runner (`rindle migrate apply` does). See
|
|
483
|
+
* {@link MigrateBatchOutput} — inspect its `error` field rather than relying on the HTTP status. */
|
|
484
|
+
migrateBatch(inputs: MigrateInput[]): Promise<MigrateBatchOutput> {
|
|
485
|
+
return this.post(this.paths.migrate, inputs);
|
|
486
|
+
}
|
|
487
|
+
|
|
363
488
|
/** The daemon's introspected base-table schema for client-schema codegen
|
|
364
489
|
* (`DRIZZLE-MIGRATIONS-DESIGN.md` §6.2). Read-only `GET /schema`, bearer-auth'd when the daemon
|
|
365
490
|
* has a token configured. Deliberately NOT on {@link RindleDaemonClient}: schema codegen is a
|