litedbmodel 2.2.1 → 2.2.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/README.md +2 -1
- package/dist/DBModel.d.ts.map +1 -1
- package/dist/DBModel.js +3 -0
- package/dist/DBModel.js.map +1 -1
- package/dist/Middleware.d.ts +19 -2
- package/dist/Middleware.d.ts.map +1 -1
- package/dist/Middleware.js +1 -0
- package/dist/Middleware.js.map +1 -1
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +8 -0
- package/dist/decorators.js.map +1 -1
- package/dist/drivers/MysqlHelper.d.ts +1 -1
- package/dist/drivers/MysqlHelper.d.ts.map +1 -1
- package/dist/drivers/MysqlHelper.js.map +1 -1
- package/dist/drivers/PostgresHelper.d.ts +1 -1
- package/dist/drivers/PostgresHelper.d.ts.map +1 -1
- package/dist/drivers/PostgresHelper.js.map +1 -1
- package/dist/drivers/SqliteHelper.d.ts +1 -1
- package/dist/drivers/SqliteHelper.d.ts.map +1 -1
- package/dist/drivers/SqliteHelper.js.map +1 -1
- package/dist/index.cjs +99 -33
- package/dist/scp/connection-routing.d.ts +38 -1
- package/dist/scp/connection-routing.d.ts.map +1 -1
- package/dist/scp/connection-routing.js +64 -5
- package/dist/scp/connection-routing.js.map +1 -1
- package/dist/scp/dbmodel-runtime.d.ts +2 -1
- package/dist/scp/dbmodel-runtime.d.ts.map +1 -1
- package/dist/scp/dbmodel-runtime.js +2 -1
- package/dist/scp/dbmodel-runtime.js.map +1 -1
- package/dist/scp/decorator-adapter.d.ts +22 -0
- package/dist/scp/decorator-adapter.d.ts.map +1 -1
- package/dist/scp/decorator-adapter.js +26 -0
- package/dist/scp/decorator-adapter.js.map +1 -1
- package/dist/scp/emit/emitter.d.ts +21 -8
- package/dist/scp/emit/emitter.d.ts.map +1 -1
- package/dist/scp/emit/emitter.js +121 -39
- package/dist/scp/emit/emitter.js.map +1 -1
- package/dist/scp/emit/endpoint.d.ts +3 -8
- package/dist/scp/emit/endpoint.d.ts.map +1 -1
- package/dist/scp/exec-context.d.ts +39 -17
- package/dist/scp/exec-context.d.ts.map +1 -1
- package/dist/scp/exec-context.js +69 -35
- package/dist/scp/exec-context.js.map +1 -1
- package/dist/scp/grouping.d.ts.map +1 -1
- package/dist/scp/grouping.js +0 -0
- package/dist/scp/grouping.js.map +1 -1
- package/dist/scp/index.cjs +251 -624
- package/dist/scp/index.d.ts +8 -12
- package/dist/scp/index.d.ts.map +1 -1
- package/dist/scp/index.js +10 -28
- package/dist/scp/index.js.map +1 -1
- package/dist/scp/index.mjs +251 -612
- package/dist/scp/leaf-transport.d.ts +155 -12
- package/dist/scp/leaf-transport.d.ts.map +1 -1
- package/dist/scp/leaf-transport.js +31 -12
- package/dist/scp/leaf-transport.js.map +1 -1
- package/dist/scp/leaves.d.ts +59 -33
- package/dist/scp/leaves.d.ts.map +1 -1
- package/dist/scp/leaves.js +225 -65
- package/dist/scp/leaves.js.map +1 -1
- package/dist/scp/makesql/compile-select.d.ts +28 -1
- package/dist/scp/makesql/compile-select.d.ts.map +1 -1
- package/dist/scp/makesql/compile-select.js +19 -17
- package/dist/scp/makesql/compile-select.js.map +1 -1
- package/dist/scp/makesql/index.d.ts +2 -2
- package/dist/scp/makesql/index.d.ts.map +1 -1
- package/dist/scp/makesql/index.js +4 -6
- package/dist/scp/makesql/index.js.map +1 -1
- package/dist/scp/makesql/tx.d.ts +27 -69
- package/dist/scp/makesql/tx.d.ts.map +1 -1
- package/dist/scp/makesql/tx.js +26 -448
- package/dist/scp/makesql/tx.js.map +1 -1
- package/dist/scp/middleware.d.ts +4 -4
- package/dist/scp/middleware.d.ts.map +1 -1
- package/dist/scp/middleware.js +2 -2
- package/dist/scp/middleware.js.map +1 -1
- package/dist/scp/relation.d.ts +31 -12
- package/dist/scp/relation.d.ts.map +1 -1
- package/dist/scp/relation.js +16 -6
- package/dist/scp/relation.js.map +1 -1
- package/dist/scp/typed-object.d.ts +23 -19
- package/dist/scp/typed-object.d.ts.map +1 -1
- package/dist/scp/typed-object.js +24 -30
- package/dist/scp/typed-object.js.map +1 -1
- package/dist/scp/write-bundle.d.ts +21 -70
- package/dist/scp/write-bundle.d.ts.map +1 -1
- package/dist/scp/write-bundle.js +15 -79
- package/dist/scp/write-bundle.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/docs/architecture.md +452 -0
- package/docs/design/phase-a-execution-context.md +2 -0
- package/package.json +15 -4
- package/dist/scp/writes.d.ts +0 -251
- package/dist/scp/writes.d.ts.map +0 -1
- package/dist/scp/writes.js +0 -176
- package/dist/scp/writes.js.map +0 -1
- package/docs/proposal/contracts-architecture-feasibility.md +0 -328
- package/docs/proposal/contracts-architecture.md +0 -579
- package/docs/proposal/litedbmodel-v2-scp-architecture.md +0 -433
- package/docs/proposal/sql-dynamic-expansion-spec.md +0 -175
- package/docs/proposal/v0-coverage-matrix.md +0 -157
- package/docs/proposal/v2-completeness-plan.md +0 -90
- package/docs/proposal/v2-sql-parity-checklist.md +0 -162
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
* ## The `connectionFor(intent)` resolution order (design §3, v1 `DBModel.ts:313` parity)
|
|
13
13
|
*
|
|
14
14
|
* A statement's connection is resolved in THIS priority (first match wins):
|
|
15
|
-
* 1. **active tx connection** — inside a transaction,
|
|
15
|
+
* 1. **active tx connection** — inside a transaction, the tx-owned connection (Phase A). A statement
|
|
16
|
+
* naming a DIFFERENT database than the transaction opened on is REJECTED there rather than routed
|
|
17
|
+
* ({@link assertTxDbAgrees}) — a transaction cannot span two databases.
|
|
16
18
|
* 2. **writer scope / writer-sticky** — inside {@link withWriter}, or within `writerStickyDuration`
|
|
17
19
|
* after a transaction (read-your-writes), a READ goes to the WRITER pool (Phase C — here).
|
|
18
20
|
* 3. **read=reader / write=writer** — otherwise a read goes to the reader pool, a write to the
|
|
@@ -38,6 +40,8 @@ exports.resolveConnectionConfig = resolveConnectionConfig;
|
|
|
38
40
|
exports.sessionStatements = sessionStatements;
|
|
39
41
|
exports.singlePoolPair = singlePoolPair;
|
|
40
42
|
exports.readerWriterPair = readerWriterPair;
|
|
43
|
+
exports.assertRoutableNamedDb = assertRoutableNamedDb;
|
|
44
|
+
exports.assertTxDbAgrees = assertTxDbAgrees;
|
|
41
45
|
exports.inWriterScope = inWriterScope;
|
|
42
46
|
exports.withWriter = withWriter;
|
|
43
47
|
exports.resolvePool = resolvePool;
|
|
@@ -104,6 +108,55 @@ function readerWriterPair(reader, writer) {
|
|
|
104
108
|
// ── The connection registry (C2) — name → reader/writer pools ──────────────────
|
|
105
109
|
/** The reserved name of the DEFAULT (unnamed) connection. An `intent.db` of `undefined` uses this. */
|
|
106
110
|
exports.DEFAULT_CONNECTION = 'default';
|
|
111
|
+
/**
|
|
112
|
+
* Reject a statement that NAMES a database on a context that holds NO connection registry (the single
|
|
113
|
+
* -connection / non-routed contexts: the TS `BasicContext`, and each language's `for_driver` twin). The
|
|
114
|
+
* companion of {@link ConnectionRegistry.pairFor}'s unknown-name throw, and for the same reason: a name
|
|
115
|
+
* that cannot be resolved must be LOUD, because the alternative is running the statement against
|
|
116
|
+
* whatever single connection the context happens to hold — a DIFFERENT database than the statement's
|
|
117
|
+
* model declares. That silent substitution is the defect named-DB lowering closes (#217), and a
|
|
118
|
+
* single-DB deployment is exactly where it would go unnoticed.
|
|
119
|
+
*
|
|
120
|
+
* `undefined`/`null` (the default connection) passes — that IS the single-connection case.
|
|
121
|
+
*/
|
|
122
|
+
function assertRoutableNamedDb(db, contextDescription) {
|
|
123
|
+
if (effectiveConnection(db) === exports.DEFAULT_CONNECTION)
|
|
124
|
+
return;
|
|
125
|
+
throw new Error(`scp connection routing: a statement names connection '${db}', but it is executing on ` +
|
|
126
|
+
`${contextDescription} — there is no connection registry to resolve the name against. Build the ` +
|
|
127
|
+
`context from a RoutingConfig (setConfig/ConnectionRegistry), or drop the connection tag on the model.`);
|
|
128
|
+
}
|
|
129
|
+
/** A connection name reduced to its effective identity: unnamed ⇒ {@link DEFAULT_CONNECTION}. */
|
|
130
|
+
function effectiveConnection(db) {
|
|
131
|
+
return db === undefined || db === null ? exports.DEFAULT_CONNECTION : db;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Reject a statement whose named database is NOT the one the active transaction opened on.
|
|
135
|
+
*
|
|
136
|
+
* A transaction is ONE connection on ONE database: a statement that names a DIFFERENT database cannot
|
|
137
|
+
* be executed atomically with it, in any language, by any amount of routing. So there are exactly two
|
|
138
|
+
* possible behaviors and no third — run it on the transaction's database (silently the WRONG one), or
|
|
139
|
+
* refuse. The first is the silent default §7 forbids, and it is what the tx pin did: the pin is resolved
|
|
140
|
+
* BEFORE routing (it must be — per-execution ownership depends on it), so `intent.db` was dropped
|
|
141
|
+
* unread and even an UNREGISTERED name never surfaced.
|
|
142
|
+
*
|
|
143
|
+
* `txDb` is the transaction's own connection name, which every language's tx-scoped ctx carries (the go /
|
|
144
|
+
* python / rust `connection` field, the php `RoutingExecutionContext`'s, the TS ALS pin's). An UNNAMED
|
|
145
|
+
* statement agrees with any transaction — that is the ordinary in-body statement, and it is the shape
|
|
146
|
+
* every named-DB tx gate pins (a tx on `B` runs its body on `B`). A statement naming the SAME database
|
|
147
|
+
* agrees too, and runs on the pin.
|
|
148
|
+
*/
|
|
149
|
+
function assertTxDbAgrees(db, txDb) {
|
|
150
|
+
if (db === undefined || db === null)
|
|
151
|
+
return; // an unnamed statement belongs to whatever the tx pinned
|
|
152
|
+
const want = effectiveConnection(db);
|
|
153
|
+
const open = effectiveConnection(txDb);
|
|
154
|
+
if (want === open)
|
|
155
|
+
return;
|
|
156
|
+
throw new Error(`scp connection routing: a statement names connection '${want}', but it is executing inside a ` +
|
|
157
|
+
`transaction opened on '${open}' — a transaction is ONE connection on ONE database, so the two ` +
|
|
158
|
+
`cannot both be honored. Open the transaction on '${want}', or issue the statement outside it.`);
|
|
159
|
+
}
|
|
107
160
|
/**
|
|
108
161
|
* The multi-DB connection registry (C2): a map from a connection NAME → its {@link ReaderWriterPools}.
|
|
109
162
|
* `connectionFor(intent)` selects the pair by `intent.db` (the connection name the bundle/model
|
|
@@ -135,7 +188,7 @@ class ConnectionRegistry {
|
|
|
135
188
|
}
|
|
136
189
|
/** The reader/writer pair for `name` (or {@link DEFAULT_CONNECTION} when `undefined`). Loud on a missing name. */
|
|
137
190
|
pairFor(name) {
|
|
138
|
-
const key = name
|
|
191
|
+
const key = effectiveConnection(name);
|
|
139
192
|
const pair = this.connections.get(key);
|
|
140
193
|
if (pair === undefined) {
|
|
141
194
|
const known = [...this.connections.keys()].map((k) => `'${k}'`).join(', ');
|
|
@@ -212,7 +265,13 @@ function withWriter(fn) {
|
|
|
212
265
|
* deployment (reader === writer) is unaffected by stickiness — the diverted pool is the same object.
|
|
213
266
|
*/
|
|
214
267
|
class WriterStickyClock {
|
|
215
|
-
|
|
268
|
+
/**
|
|
269
|
+
* `null` until the first `mark()` — absence, NOT a value sentinel. The injectable clocks legitimately
|
|
270
|
+
* return 0 (a monotonic clock right after process start; rust's `SystemClock` does), so encoding
|
|
271
|
+
* "never marked" as the value 0 would mis-classify a `mark()` at clock t=0 as unmarked and leak the
|
|
272
|
+
* read-your-writes read to the reader replica. Absence must be distinct from the value 0.
|
|
273
|
+
*/
|
|
274
|
+
lastWriteAt = null;
|
|
216
275
|
enabled;
|
|
217
276
|
stickyDurationMs;
|
|
218
277
|
/** Injectable clock (tests advance it); defaults to `Date.now`. */
|
|
@@ -229,13 +288,13 @@ class WriterStickyClock {
|
|
|
229
288
|
}
|
|
230
289
|
/** Is a read currently sticky-to-writer (within `writerStickyDuration` of the last write)? */
|
|
231
290
|
isSticky() {
|
|
232
|
-
if (!this.enabled || this.lastWriteAt ===
|
|
291
|
+
if (!this.enabled || this.lastWriteAt === null)
|
|
233
292
|
return false;
|
|
234
293
|
return this.now() - this.lastWriteAt < this.stickyDurationMs;
|
|
235
294
|
}
|
|
236
295
|
/** Reset the clock (e.g. between tests / on `closeAllPools`). */
|
|
237
296
|
reset() {
|
|
238
|
-
this.lastWriteAt =
|
|
297
|
+
this.lastWriteAt = null;
|
|
239
298
|
}
|
|
240
299
|
}
|
|
241
300
|
exports.WriterStickyClock = WriterStickyClock;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-routing.js","sourceRoot":"","sources":["../../src/scp/connection-routing.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"connection-routing.js","sourceRoot":"","sources":["../../src/scp/connection-routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* `pgPoolFactory` / `mysqlPoolFactory` + `buildRoutingConfig`) and a `close()`. This is the C3
|
|
11
11
|
* `setConfig → ConnectionRegistry → pool` path. Every statement DBModel issues — a v1-built SELECT
|
|
12
12
|
* as much as a compiled write bundle — goes through this ONE ctx, so routing, middleware and an
|
|
13
|
-
* ambient transaction pin apply uniformly
|
|
13
|
+
* ambient transaction pin apply uniformly (the pin serves every statement of the tx's own database; a statement
|
|
14
|
+
* naming a DIFFERENT database is rejected).
|
|
14
15
|
*
|
|
15
16
|
* 2. **Write execution** ({@link executeWriteAsync}) — run a compiled write bundle's transaction plan
|
|
16
17
|
* on the writer through the SCP tx runtime (write=tx guard).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbmodel-runtime.d.ts","sourceRoot":"","sources":["../../src/scp/dbmodel-runtime.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dbmodel-runtime.d.ts","sourceRoot":"","sources":["../../src/scp/dbmodel-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,UAAU,EAIhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAKpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,iGAAiG;AACjG,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;CACnD;AAED,yGAAyG;AACzG,MAAM,WAAW,qBAAqB;IACpC,qGAAqG;IACrG,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAC;IACxC,qGAAqG;IACrG,QAAQ,CAAC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAC7C,qDAAqD;IACrD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC;AAED,gFAAgF;AAChF,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAC;IACjC,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AA0CD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAsCnH;AAqBD,yGAAyG;AACzG,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKzD;AAID,uGAAuG;AACvG,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,cAAc,EACnB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAK5B;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAEtE;AAGD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AACzE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
* `pgPoolFactory` / `mysqlPoolFactory` + `buildRoutingConfig`) and a `close()`. This is the C3
|
|
12
12
|
* `setConfig → ConnectionRegistry → pool` path. Every statement DBModel issues — a v1-built SELECT
|
|
13
13
|
* as much as a compiled write bundle — goes through this ONE ctx, so routing, middleware and an
|
|
14
|
-
* ambient transaction pin apply uniformly
|
|
14
|
+
* ambient transaction pin apply uniformly (the pin serves every statement of the tx's own database; a statement
|
|
15
|
+
* naming a DIFFERENT database is rejected).
|
|
15
16
|
*
|
|
16
17
|
* 2. **Write execution** ({@link executeWriteAsync}) — run a compiled write bundle's transaction plan
|
|
17
18
|
* on the writer through the SCP tx runtime (write=tx guard).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dbmodel-runtime.js","sourceRoot":"","sources":["../../src/scp/dbmodel-runtime.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"dbmodel-runtime.js","sourceRoot":"","sources":["../../src/scp/dbmodel-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -112,9 +112,31 @@ export declare function deriveModelColumns(modelClass: ModelClassLike, options?:
|
|
|
112
112
|
export interface ModelClassLike {
|
|
113
113
|
readonly name: string;
|
|
114
114
|
readonly TABLE_NAME?: string;
|
|
115
|
+
/**
|
|
116
|
+
* The NAME of the connection (database) this model lives in — `@model(table, { connection })`
|
|
117
|
+
* (`src/decorators.ts`). Absent ⇒ the default connection. See {@link connectionOf}.
|
|
118
|
+
*/
|
|
119
|
+
readonly CONNECTION?: string;
|
|
115
120
|
}
|
|
116
121
|
/** The effective table name (v1 `@model` rule): explicit `TABLE_NAME`, else the model name lowercased. */
|
|
117
122
|
export declare function tableNameOf(modelClass: ModelClassLike): string;
|
|
123
|
+
/**
|
|
124
|
+
* The NAME of the connection a model's statements run on — the multi-DB routing key, and the ONE
|
|
125
|
+
* reader of the model's `CONNECTION` static (the twin of {@link tableNameOf}). `undefined` ⇒ the
|
|
126
|
+
* DEFAULT connection, which is what a single-DB deployment always is.
|
|
127
|
+
*
|
|
128
|
+
* The MODEL is the authority, exactly as in v1: a v1 model selects its database by extending a
|
|
129
|
+
* `DBModel.createDBBase(config)` base class whose handler owns the connection, and every statement a
|
|
130
|
+
* model issues goes through THAT handler (`DBModel.getHandler()` → `getDriverType()`). Both codegen
|
|
131
|
+
* consumers derive from here and neither re-derives it:
|
|
132
|
+
*
|
|
133
|
+
* - an ENDPOINT's statements take their own model's connection (`emit/emitter.ts`);
|
|
134
|
+
* - a RELATION's batch child fetch takes the TARGET model's ({@link relationDeclOf} →
|
|
135
|
+
* {@link RelationDecl.connection}), which is v1 `LazyRelation.ts:236`'s
|
|
136
|
+
* "Use target model's driver type (important for multi-DB scenarios)" — the target's connection
|
|
137
|
+
* regardless of the parent's, because the child rows live in the target's database.
|
|
138
|
+
*/
|
|
139
|
+
export declare function connectionOf(modelClass: ModelClassLike): string | undefined;
|
|
118
140
|
/**
|
|
119
141
|
* Compile a decorated model's `createMany` — and a `create` WITH `onConflict` (upsert) — into a batch
|
|
120
142
|
* write {@link SqlBundle} via `compileCreateManyBundle`. This is the UPSERT carry: `onConflict` /
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorator-adapter.d.ts","sourceRoot":"","sources":["../../src/scp/decorator-adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"decorator-adapter.d.ts","sourceRoot":"","sources":["../../src/scp/decorator-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAqB,KAAK,YAAY,EAAqB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACtG,OAAO,EAAkF,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACnJ,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAkC,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGnG;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC;AAI1E;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWnE,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACzD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB1F;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,GAAE,oBAAyB,GAAG,YAAY,CAS/G;AAED,mGAAmG;AACnG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,0GAA0G;AAC1G,wBAAgB,WAAW,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAE9D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAE3E;AAGD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,sBAAsB,GAAG;IAAE,EAAE,CAAC,EAAE;QAAE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CAAE,EACjG,OAAO,GAAE,WAAsB,EAC/B,cAAc,CAAC,EAAE,oBAAoB,GACpC,SAAS,CAGX;AAED,iHAAiH;AACjH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,WAAsB,GAC9B,SAAS,CAEX;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EACzG,OAAO,GAAE,WAAsB,GAC9B,SAAS,CAEX;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,cAAc,EAC1B,cAAc,CAAC,EAAE,oBAAoB,GACpC,eAAe,GAAG,SAAS,CAa7B;AAED,kIAAkI;AAClI,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,cAAc,EAC1B,cAAc,CAAC,EAAE,oBAAoB,GACpC,kBAAkB,GAAG,SAAS,CAOhC;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,cAAc,EAC1B,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,cAAc,EACzD,OAAO,GAAE,WAAsB,GAC9B,YAAY,EAAE,CAEhB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,YAAY,EACjB,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,cAAc,EACzD,OAAO,GAAE,WAAsB,GAC9B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,cAAc,CAAA;CAAE,CA2BrD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,cAAc,EAC1B,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,cAAc,EACzD,OAAO,GAAE,WAAsB,EAC/B,cAAc,CAAC,EAAE,oBAAoB,GACpC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAO5B"}
|
|
@@ -30,6 +30,7 @@ exports.DEFAULT_UNCAST_SQL_TYPE = exports.COLUMN_FAMILY_SQL_TYPE = void 0;
|
|
|
30
30
|
exports.columnSqlType = columnSqlType;
|
|
31
31
|
exports.deriveModelColumns = deriveModelColumns;
|
|
32
32
|
exports.tableNameOf = tableNameOf;
|
|
33
|
+
exports.connectionOf = connectionOf;
|
|
33
34
|
exports.compileCreateBundle = compileCreateBundle;
|
|
34
35
|
exports.compileUpdateBundle = compileUpdateBundle;
|
|
35
36
|
exports.compileDeleteBundle = compileDeleteBundle;
|
|
@@ -136,6 +137,25 @@ function deriveModelColumns(modelClass, options = {}) {
|
|
|
136
137
|
function tableNameOf(modelClass) {
|
|
137
138
|
return modelClass.TABLE_NAME ?? modelClass.name.toLowerCase();
|
|
138
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* The NAME of the connection a model's statements run on — the multi-DB routing key, and the ONE
|
|
142
|
+
* reader of the model's `CONNECTION` static (the twin of {@link tableNameOf}). `undefined` ⇒ the
|
|
143
|
+
* DEFAULT connection, which is what a single-DB deployment always is.
|
|
144
|
+
*
|
|
145
|
+
* The MODEL is the authority, exactly as in v1: a v1 model selects its database by extending a
|
|
146
|
+
* `DBModel.createDBBase(config)` base class whose handler owns the connection, and every statement a
|
|
147
|
+
* model issues goes through THAT handler (`DBModel.getHandler()` → `getDriverType()`). Both codegen
|
|
148
|
+
* consumers derive from here and neither re-derives it:
|
|
149
|
+
*
|
|
150
|
+
* - an ENDPOINT's statements take their own model's connection (`emit/emitter.ts`);
|
|
151
|
+
* - a RELATION's batch child fetch takes the TARGET model's ({@link relationDeclOf} →
|
|
152
|
+
* {@link RelationDecl.connection}), which is v1 `LazyRelation.ts:236`'s
|
|
153
|
+
* "Use target model's driver type (important for multi-DB scenarios)" — the target's connection
|
|
154
|
+
* regardless of the parent's, because the child rows live in the target's database.
|
|
155
|
+
*/
|
|
156
|
+
function connectionOf(modelClass) {
|
|
157
|
+
return modelClass.CONNECTION;
|
|
158
|
+
}
|
|
139
159
|
// ── 2. Write bundles (createMany / updateMany / deleteMany) ─────────────────────────────────────
|
|
140
160
|
/**
|
|
141
161
|
* Compile a decorated model's `createMany` — and a `create` WITH `onConflict` (upsert) — into a batch
|
|
@@ -232,12 +252,18 @@ function relationDeclOf(rel, resolveTargetModel, dialect = 'sqlite') {
|
|
|
232
252
|
const targetTable = tableNameOf(targetModel);
|
|
233
253
|
const select = targetProjection(targetModel);
|
|
234
254
|
const order = rel.options?.order ? (0, Column_1.orderToString)(rel.options.order()) : undefined;
|
|
255
|
+
// CROSS-DB (V0 R1): the batch child SELECT runs on the TARGET model's connection — v1
|
|
256
|
+
// `LazyRelation.ts:236` loads a relation on `TargetClass.getDriverType()`'s driver, so the target's
|
|
257
|
+
// database is the authority whatever the parent's is. Absent ⇒ the default connection (untagged, the
|
|
258
|
+
// same-DB case every single-DB deployment is).
|
|
259
|
+
const connection = connectionOf(targetModel);
|
|
235
260
|
const base = {
|
|
236
261
|
name: rel.propertyKey,
|
|
237
262
|
kind: rel.type,
|
|
238
263
|
targetTable,
|
|
239
264
|
select,
|
|
240
265
|
dialect,
|
|
266
|
+
...(connection !== undefined ? { connection } : {}),
|
|
241
267
|
...(order !== undefined ? { order } : {}),
|
|
242
268
|
...(rel.options?.limit !== undefined ? { limit: rel.options.limit } : {}),
|
|
243
269
|
...(rel.options?.hardLimit !== undefined ? { hardLimit: rel.options.hardLimit } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorator-adapter.js","sourceRoot":"","sources":["../../src/scp/decorator-adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAmGH,sCAgBC;AAYD,gDASC;
|
|
1
|
+
{"version":3,"file":"decorator-adapter.js","sourceRoot":"","sources":["../../src/scp/decorator-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
* | row types | `makesql/outtype.deriveReadRow` over the model's `@column` SoT |
|
|
29
29
|
* | column SQL types | `decorator-adapter.deriveModelColumns` / `modelColumnResolver` |
|
|
30
30
|
* | relation declarations | `decorator-adapter.relationDeclOf` |
|
|
31
|
+
* | the statement's NAMED db | `decorator-adapter.connectionOf` (a relation's: the op's own) |
|
|
31
32
|
* | find hard-limit cap | `limit-config.resolveFindHardLimit` |
|
|
32
33
|
* | the leaf catalog | `leaf-transport.Db` (imported by the emitted module) |
|
|
33
34
|
*
|
|
@@ -42,15 +43,27 @@
|
|
|
42
43
|
* ## SKIP / dynamic WHERE (CLAUDE.md §2 — settled)
|
|
43
44
|
*
|
|
44
45
|
* A predicate declared `optional` is present-or-absent PER CALL, so the final SQL can only be
|
|
45
|
-
* determined at execution time.
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
46
|
+
* determined at execution time. A BOUNDED predicate is not — it is the same on every call — so it is
|
|
47
|
+
* lowered into the static `sql` HERE, at emit time (native-clean), exactly as it is on a read that
|
|
48
|
+
* declares no optional predicate at all. A read's WHERE therefore splits by that ONE property: the
|
|
49
|
+
* bounded predicates ARE the emitted statement's WHERE, and only the ACTUALLY-optional ones accumulate
|
|
50
|
+
* a plan — one `{skipped, sql, params}` FRAGMENT each, which the `executeSQL` leaf continues the static
|
|
51
|
+
* WHERE with when it runs ({@link import('../leaves').assembleDynamicWhere}); the `?`→`$N` render
|
|
52
|
+
* happens after that, on the final SQL. There is no intermediate IR vocabulary: a fragment is SQL text
|
|
53
|
+
* + params + a SKIP FLAG (`skipped` = `param === null`). Every fragment is the SAME struct — never a
|
|
54
|
+
* `cond`-to-null element — so the go/rust native-codegen emitters resolve the plan (a variant/nullable
|
|
55
|
+
* array element is the one shape they reject).
|
|
51
56
|
*
|
|
52
|
-
* A
|
|
53
|
-
*
|
|
57
|
+
* A read with NO optional predicate carries no plan at all. One statement, one plan holding exactly the
|
|
58
|
+
* predicates that are optional.
|
|
59
|
+
*
|
|
60
|
+
* The plan also carries WHERE the clause goes, because the emitter is what put the WHERE there: a SKIP
|
|
61
|
+
* read's `sql` port is the statement's HEAD (up to the end of its WHERE region) and the plan carries the
|
|
62
|
+
* connector plus the `tail` text and its bound values, straight off the same
|
|
63
|
+
* {@link import('../makesql/compile-select').SelectBundle} this read compiled. The leaf concatenates the
|
|
64
|
+
* three pieces; it never scans the statement to find the boundary again — a scan that took a NESTED
|
|
65
|
+
* statement's tail keyword for the outer one's (#198) and counted a QUOTED `?` the placeholder render
|
|
66
|
+
* skips (#202).
|
|
54
67
|
*/
|
|
55
68
|
import { type DeriveColumnsOptions, type ModelClassLike } from '../decorator-adapter';
|
|
56
69
|
import type { DialectName } from '../dialect';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../src/scp/emit/emitter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../src/scp/emit/emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAcH,OAAO,EAML,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAQV,WAAW,EAYZ,MAAM,YAAY,CAAC;AAIpB,oBAAoB;AACpB,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,yFAAyF;IACzF,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,0GAA0G;IAC1G,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,cAAc,CAAC;IACxD,kFAAkF;IAClF,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAC;CAC/C;AAED,yFAAyF;AACzF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qGAAqG;IACrG,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7E,iDAAiD;IACjD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,4BAA4B;AAC5B,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;CAChD;AAsBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAM7D"}
|