litedbmodel 2.0.1 → 2.0.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/scp/catalog.d.ts +4 -1
- package/dist/scp/catalog.d.ts.map +1 -1
- package/dist/scp/catalog.js +5 -1
- package/dist/scp/catalog.js.map +1 -1
- package/dist/scp/codegen.d.ts +118 -24
- package/dist/scp/codegen.d.ts.map +1 -1
- package/dist/scp/codegen.js +360 -33
- package/dist/scp/codegen.js.map +1 -1
- package/dist/scp/coltype.d.ts +41 -0
- package/dist/scp/coltype.d.ts.map +1 -0
- package/dist/scp/coltype.js +188 -0
- package/dist/scp/coltype.js.map +1 -0
- package/dist/scp/dialect.d.ts +12 -3
- package/dist/scp/dialect.d.ts.map +1 -1
- package/dist/scp/dialect.js +12 -3
- package/dist/scp/dialect.js.map +1 -1
- package/dist/scp/fragment/assemble.d.ts.map +1 -1
- package/dist/scp/fragment/assemble.js +10 -2
- package/dist/scp/fragment/assemble.js.map +1 -1
- package/dist/scp/fragment/compile-pg.js +4 -4
- package/dist/scp/index.cjs +8132 -816
- package/dist/scp/index.d.ts +3 -1
- package/dist/scp/index.d.ts.map +1 -1
- package/dist/scp/index.js +17 -6
- package/dist/scp/index.js.map +1 -1
- package/dist/scp/index.mjs +660 -81
- package/dist/scp/makesql/compile-select.d.ts +8 -1
- package/dist/scp/makesql/compile-select.d.ts.map +1 -1
- package/dist/scp/makesql/compile-select.js +1 -1
- package/dist/scp/makesql/compile-select.js.map +1 -1
- package/dist/scp/makesql/outtype.d.ts +44 -0
- package/dist/scp/makesql/outtype.d.ts.map +1 -0
- package/dist/scp/makesql/outtype.js +197 -0
- package/dist/scp/makesql/outtype.js.map +1 -0
- package/dist/scp/makesql/static-bundle.d.ts +3 -1
- package/dist/scp/makesql/static-bundle.d.ts.map +1 -1
- package/dist/scp/makesql/static-bundle.js +95 -6
- package/dist/scp/makesql/static-bundle.js.map +1 -1
- package/dist/scp/makesql/tx.d.ts +1 -1
- package/dist/scp/makesql/tx.d.ts.map +1 -1
- package/dist/scp/makesql/tx.js +48 -3
- package/dist/scp/makesql/tx.js.map +1 -1
- package/dist/scp/makesql/writeouttype.d.ts +66 -0
- package/dist/scp/makesql/writeouttype.d.ts.map +1 -0
- package/dist/scp/makesql/writeouttype.js +195 -0
- package/dist/scp/makesql/writeouttype.js.map +1 -0
- package/dist/scp/runtime.d.ts +14 -3
- package/dist/scp/runtime.d.ts.map +1 -1
- package/dist/scp/runtime.js +28 -9
- package/dist/scp/runtime.js.map +1 -1
- package/docs/proposal/litedbmodel-v2-scp-architecture.md +51 -0
- package/package.json +2 -2
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* litedbmodel v2 SCP — codegen `outType` derivation for WRITE bundles (spec §4.1 / §9; issues
|
|
4
|
+
* #58/#56 extended to writes). The READ de-box ({@link ./outtype}) types a SELECT projection into a
|
|
5
|
+
* concrete row struct; this module types the WRITE bundle's OUTPUT — a {@link TransactionResult} —
|
|
6
|
+
* into the SAME de-boxable typed shape so bc's typed(-raw) emitters materialize a concrete struct
|
|
7
|
+
* for the write result instead of a dynamic `Value::Obj` tree.
|
|
8
|
+
*
|
|
9
|
+
* ## The write output type (the TransactionResult typed shape — spec §6 / tx.ts)
|
|
10
|
+
*
|
|
11
|
+
* `executeTransaction` returns:
|
|
12
|
+
* ```
|
|
13
|
+
* { committed: boolean
|
|
14
|
+
* shortCircuit?: { statementId: string; reason: ShortCircuitReason } // reason is a string enum
|
|
15
|
+
* entity: Record<string,unknown> | null // the written entity ROW (RETURNING row)
|
|
16
|
+
* executed: readonly string[]
|
|
17
|
+
* returnedRows?: readonly (readonly Record<string,unknown>[])[] // batch RETURNING rows }
|
|
18
|
+
* ```
|
|
19
|
+
* which de-boxes to the bc portable type
|
|
20
|
+
* ```
|
|
21
|
+
* obj{ committed:bool, executed:arr<string>,
|
|
22
|
+
* shortCircuit:opt<obj{statementId:string, reason:string}>,
|
|
23
|
+
* entity:opt<ROW>, returnedRows:opt<arr<arr<ROW>>> }
|
|
24
|
+
* ```
|
|
25
|
+
* where ROW is the written table's RETURNING columns typed via the SAME
|
|
26
|
+
* {@link ColumnTypeResolver} the read de-box uses (spec §4.1 column SoT).
|
|
27
|
+
*
|
|
28
|
+
* ## Fail-closed (spec §4.1 discipline — no-assume, no-fallback)
|
|
29
|
+
*
|
|
30
|
+
* The ROW type is derived from the write's target table + its RETURNING column list, both extracted
|
|
31
|
+
* STRUCTURALLY from the write bundle's transaction plan (the `body`-role statements). An un-typeable
|
|
32
|
+
* write — a target table the DDL SoT does not declare, a RETURNING column with no schema type, a
|
|
33
|
+
* `RETURNING *`, a computed/aliased RETURNING column, or divergent RETURNING shapes across batch
|
|
34
|
+
* groups — THROWS. It is NEVER degraded to a boxed/untyped output; that would silently defeat the
|
|
35
|
+
* de-box. A write with NO RETURNING anywhere types `entity`/`returnedRows` rows as an EMPTY row obj
|
|
36
|
+
* (`obj{}`) — there is genuinely no row shape to de-box, and the runtime never populates those
|
|
37
|
+
* fields, so the empty-obj element type is exact (not an assumed default).
|
|
38
|
+
*/
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.deriveWriteOutputType = deriveWriteOutputType;
|
|
41
|
+
exports.annotateWriteBundleOutType = annotateWriteBundleOutType;
|
|
42
|
+
const coltype_1 = require("../coltype");
|
|
43
|
+
/** Identity narrow (BcScalar is exactly bc's PortableScalarType); DATE→string happens in coltype. */
|
|
44
|
+
function toPortableScalar(scalar) {
|
|
45
|
+
return scalar;
|
|
46
|
+
}
|
|
47
|
+
/** The reserved ShortCircuit sub-object type — reason is a string enum, statementId a string. */
|
|
48
|
+
const SHORT_CIRCUIT_TYPE = { obj: { statementId: 'string', reason: 'string' } };
|
|
49
|
+
/**
|
|
50
|
+
* The target table + RETURNING columns of ONE `body`-role write statement, extracted STRUCTURALLY
|
|
51
|
+
* from its complete tuned SQL text (the makeSQL `body` op — `INSERT INTO <t> … [RETURNING …]` /
|
|
52
|
+
* `UPDATE <t> …` / `DELETE FROM <t> …`). The MySQL PK-hint comment (the `scp:pk=…` marker) is ignored
|
|
53
|
+
* (it trails the RETURNING and carries no column). Returns `undefined` for a non-body / gate
|
|
54
|
+
* statement's SQL that is not a base write (the caller only inspects `body`-role ops).
|
|
55
|
+
*/
|
|
56
|
+
function targetAndReturning(sql) {
|
|
57
|
+
const s = sql.trim();
|
|
58
|
+
const ins = /^INSERT\s+(?:IGNORE\s+)?INTO\s+([A-Za-z_][A-Za-z0-9_]*)/i.exec(s);
|
|
59
|
+
const upd = /^UPDATE\s+([A-Za-z_][A-Za-z0-9_]*)/i.exec(s);
|
|
60
|
+
const del = /^DELETE\s+FROM\s+([A-Za-z_][A-Za-z0-9_]*)/i.exec(s);
|
|
61
|
+
const m = ins ?? upd ?? del;
|
|
62
|
+
if (m === null) {
|
|
63
|
+
throw new Error(`writeouttype: a write body statement's SQL is not a recognized INSERT/UPDATE/DELETE ` +
|
|
64
|
+
`(${JSON.stringify(sql)}). The typed de-box must read the target table from the base write. No-assume, no-fallback.`);
|
|
65
|
+
}
|
|
66
|
+
const table = m[1];
|
|
67
|
+
// RETURNING columns (strip a trailing MySQL PK-hint comment first). No RETURNING → null.
|
|
68
|
+
const clean = s.replace(/\s*\/\*scp:pk=[^*]*\*\//i, '');
|
|
69
|
+
const ret = /\bRETURNING\s+(.+?)\s*$/i.exec(clean);
|
|
70
|
+
if (ret === null)
|
|
71
|
+
return { table, returning: null };
|
|
72
|
+
const cols = ret[1].split(',').map((c) => c.trim()).filter((c) => c.length > 0);
|
|
73
|
+
return { table, returning: cols };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build the `{obj:{col:<bcScalar>,…}}` ROW type for a write's RETURNING columns, typed via the
|
|
77
|
+
* schema SoT resolver. A `*`, computed, aliased, or qualified RETURNING column is a HARD ERROR
|
|
78
|
+
* (it cannot map to a single schema column). An unknown table/column throws inside the resolver.
|
|
79
|
+
*/
|
|
80
|
+
function rowObjType(table, returning, resolve) {
|
|
81
|
+
const obj = {};
|
|
82
|
+
for (const col of returning) {
|
|
83
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(col)) {
|
|
84
|
+
throw new Error(`writeouttype: RETURNING column '${col}' on '${table}' is not a bare column name (alias / ` +
|
|
85
|
+
`qualified / computed). The typed de-box needs bare schema columns so each maps to a SQL ` +
|
|
86
|
+
`type. No-assume, no-fallback.`);
|
|
87
|
+
}
|
|
88
|
+
if (col in obj)
|
|
89
|
+
throw new Error(`writeouttype: duplicate RETURNING column '${col}' on '${table}'`);
|
|
90
|
+
obj[col] = toPortableScalar((0, coltype_1.sqlTypeToBcScalar)(resolve(table, col)));
|
|
91
|
+
}
|
|
92
|
+
return { obj };
|
|
93
|
+
}
|
|
94
|
+
/** The `body`-role statements of a transaction plan (the base writes whose RETURNING rows surface). */
|
|
95
|
+
function bodyStatements(plan) {
|
|
96
|
+
return plan.statements.filter((s) => s.role === 'body');
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Is this plan a BATCH (createMany/updateMany/deleteMany)? Mirrors the runtime's batch test
|
|
100
|
+
* (`executeTransaction`): a gate-free, ref-free plan (`entityFrom` null, every statement a plain
|
|
101
|
+
* `body` with no gate / no `binds`). A batch is the ONLY shape that populates `returnedRows`; a
|
|
102
|
+
* gate-first single/composite Command exposes its written row via `entity` instead.
|
|
103
|
+
*/
|
|
104
|
+
function isBatchPlan(plan) {
|
|
105
|
+
return (plan.entityFrom === null &&
|
|
106
|
+
plan.statements.length > 0 &&
|
|
107
|
+
plan.statements.every((s) => s.gate === undefined && s.binds === undefined && s.role === 'body'));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The write's `(table, RETURNING)` — every `body`-role statement must agree (a batch's groups all
|
|
111
|
+
* target the SAME table with the SAME RETURNING projection; a single/composite Command's body write
|
|
112
|
+
* defines the entity row). A divergent table/RETURNING across a batch is a HARD ERROR.
|
|
113
|
+
*/
|
|
114
|
+
function writeTargetReturning(plan) {
|
|
115
|
+
const bodies = bodyStatements(plan);
|
|
116
|
+
if (bodies.length === 0) {
|
|
117
|
+
throw new Error(`writeouttype: the transaction plan has no 'body' write statement — a write bundle must carry ` +
|
|
118
|
+
`at least one base write. Cannot derive its output row type. No-assume, no-fallback.`);
|
|
119
|
+
}
|
|
120
|
+
let table;
|
|
121
|
+
let returning;
|
|
122
|
+
for (const b of bodies) {
|
|
123
|
+
const { table: t, returning: r } = targetAndReturning(b.op.sql);
|
|
124
|
+
if (table === undefined) {
|
|
125
|
+
table = t;
|
|
126
|
+
returning = r;
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (t !== table) {
|
|
130
|
+
throw new Error(`writeouttype: batch write body statements target DIFFERENT tables ('${table}' vs '${t}'); ` +
|
|
131
|
+
`the typed de-box requires a homogeneous RETURNING row shape across a batch. No-assume, no-fallback.`);
|
|
132
|
+
}
|
|
133
|
+
if (JSON.stringify(returning) !== JSON.stringify(r)) {
|
|
134
|
+
throw new Error(`writeouttype: batch write body statements on '${table}' have DIFFERENT RETURNING projections ` +
|
|
135
|
+
`(${JSON.stringify(returning)} vs ${JSON.stringify(r)}); the de-boxed row struct must be identical ` +
|
|
136
|
+
`across a batch. No-assume, no-fallback.`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return { table: table, returning: returning ?? null };
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* The full write-bundle output type: the {@link TransactionResult} typed shape. `committed`,
|
|
143
|
+
* `executed`, `shortCircuit` are always present. `entity` and `returnedRows` are included ONLY when
|
|
144
|
+
* the plan shape can actually POPULATE them — precise typing, not a fallback:
|
|
145
|
+
* - `entity` (`opt<ROW>`) — present when the body write RETURNs (a gate-first single Command exposes
|
|
146
|
+
* its written row here). A no-RETURNING write leaves `entity` always null → typed `opt<obj{}>`.
|
|
147
|
+
* - `returnedRows` (`opt<arr<arr<ROW>>>`) — present ONLY for a BATCH plan whose body RETURNs (the
|
|
148
|
+
* sole shape the runtime accumulates it in: `executeTransaction` pushes a body's RETURNING rows to
|
|
149
|
+
* `returnedRows` iff batch mode AND the statement returned rows). A non-batch Command, or a batch
|
|
150
|
+
* with no RETURNING, never emits `returnedRows`, so it is provably absent from the output and
|
|
151
|
+
* omitted from the type (the de-box marshaller then never references a field the runtime does not
|
|
152
|
+
* produce). ROW is typed via the schema SoT + the write's target/RETURNING.
|
|
153
|
+
* Fail-closed throughout (any un-typeable table/column/shape throws — never a boxed fallback).
|
|
154
|
+
*/
|
|
155
|
+
function deriveWriteOutputType(plan, resolve) {
|
|
156
|
+
const { table, returning } = writeTargetReturning(plan);
|
|
157
|
+
// A write WITHOUT a RETURNING clause NEVER produces a row (the runtime leaves `entity` null and
|
|
158
|
+
// never accumulates `returnedRows`), so the row type is the bc `null` scalar — EXACT (the field is
|
|
159
|
+
// provably always null), not an empty `obj{}` (which would type a zero-field row struct). A write
|
|
160
|
+
// WITH a RETURNING types the row struct from the projected columns via the schema SoT.
|
|
161
|
+
const hasReturning = returning !== null;
|
|
162
|
+
// A no-RETURNING write's row is provably always null → the bc `null` scalar (EXACT, not an empty
|
|
163
|
+
// `obj{}` zero-field struct). `entity` stays `opt<row>` uniformly: opt<null> types a provably-null
|
|
164
|
+
// field (the runtime always returns entity=null there) and, unlike a bare `null` field, keeps the
|
|
165
|
+
// de-box marshaller reading the wire slot (bc's go null-scalar-field emit leaves it unread otherwise).
|
|
166
|
+
const row = hasReturning ? rowObjType(table, returning, resolve) : 'null';
|
|
167
|
+
const fields = {
|
|
168
|
+
committed: 'bool',
|
|
169
|
+
executed: { arr: 'string' },
|
|
170
|
+
shortCircuit: { opt: SHORT_CIRCUIT_TYPE },
|
|
171
|
+
entity: { opt: row },
|
|
172
|
+
};
|
|
173
|
+
// returnedRows is populated ONLY by a batch plan whose body RETURNs rows; include it in the type
|
|
174
|
+
// only then (precise typing — the field is provably absent otherwise, so omitting it is exact).
|
|
175
|
+
if (isBatchPlan(plan) && hasReturning)
|
|
176
|
+
fields.returnedRows = { opt: { arr: { arr: row } } };
|
|
177
|
+
return { obj: fields };
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Attach the derived write output type to a write {@link SqlBundle} as `outType` (on the surrogate
|
|
181
|
+
* write IR's single `makeSQL` node) + `outputType` (on the component), matching how the read de-box
|
|
182
|
+
* annotates its surrogate IR. Returns a NEW bundle carrying an `outputType` field the codegen path
|
|
183
|
+
* reads (the makeSqlComponentIR surrogate node picks it up in {@link ../codegen.bundleToPortableIR}).
|
|
184
|
+
* A bundle with no transaction plan (a plain single-statement write with no tx) throws — this de-box
|
|
185
|
+
* is for the write-Command / batch bundles the bench/conformance codegen surface covers.
|
|
186
|
+
*/
|
|
187
|
+
function annotateWriteBundleOutType(bundle, resolve) {
|
|
188
|
+
if (bundle.transaction === undefined) {
|
|
189
|
+
throw new Error(`writeouttype: bundle '${bundle.name}' carries no transaction plan — the write de-box types the ` +
|
|
190
|
+
`TransactionResult of a write-Command / batch bundle. No-assume, no-fallback.`);
|
|
191
|
+
}
|
|
192
|
+
const outputType = deriveWriteOutputType(bundle.transaction, resolve);
|
|
193
|
+
return { ...bundle, outputType };
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=writeouttype.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeouttype.js","sourceRoot":"","sources":["../../../src/scp/makesql/writeouttype.ts"],"names":[],"mappings":"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"}
|
package/dist/scp/runtime.d.ts
CHANGED
|
@@ -28,6 +28,8 @@ import { SqlFailure } from './errors';
|
|
|
28
28
|
import { type RelationDecl, type RelationOp } from './relation';
|
|
29
29
|
import { type ReadOptions } from './typed-object';
|
|
30
30
|
import type { DialectName } from './dialect';
|
|
31
|
+
import type { FindFilterSource } from './find-filter-guard';
|
|
32
|
+
import type { ColumnTypeResolver } from './coltype';
|
|
31
33
|
import { type ReadGraph, type StaticStatement, type SqliteDb as StaticSqliteDb, type SqlExecutorAsync } from './makesql/static-bundle';
|
|
32
34
|
import { type TransactionPlan, type TransactionResult } from './makesql/tx';
|
|
33
35
|
import { type InsertManyBuildOptions } from './makesql/compile-crud';
|
|
@@ -74,6 +76,15 @@ export interface SqlBundle {
|
|
|
74
76
|
readonly relations: Record<string, RelationOp>;
|
|
75
77
|
/** The derived write-time-relations transaction plan (present ONLY for a write Command bundle). */
|
|
76
78
|
readonly transaction?: TransactionPlan;
|
|
79
|
+
/**
|
|
80
|
+
* Codegen typed-de-box `outputType` for a WRITE bundle (spec §4.1 / §9): the bc portable type of
|
|
81
|
+
* the write's {@link TransactionResult} (entity / returnedRows rows typed via the schema SoT). A
|
|
82
|
+
* READ bundle carries its outType/outputType inside `readGraph.ir` instead; a write bundle has no
|
|
83
|
+
* such surrogate, so its output type rides HERE and is attached to the write's `makeSqlComponentIR`
|
|
84
|
+
* node/component by {@link bundleToPortableIR}. Present ONLY when a column-type resolver was
|
|
85
|
+
* supplied at compile (additive/back-compat: absent → the write IR stays un-annotated, as before).
|
|
86
|
+
*/
|
|
87
|
+
readonly outputType?: unknown;
|
|
77
88
|
}
|
|
78
89
|
/**
|
|
79
90
|
* Execute a published behavior contract (WS2 {@link BehaviorModelContract}) end-to-end via the
|
|
@@ -88,7 +99,7 @@ export declare function executeBehavior(contract: BehaviorModelContract, input:
|
|
|
88
99
|
* published multi-language artifact. SYMBOLIC (no concrete input). A read method compiles to a
|
|
89
100
|
* {@link ReadGraph}; a single-write method to a `makeSQL` statement. Pure JSON throughout.
|
|
90
101
|
*/
|
|
91
|
-
export declare function compileBundle(contract: BehaviorModelContract, entry?: string, relations?: readonly RelationDecl[], dialectName?: DialectName): SqlBundle;
|
|
102
|
+
export declare function compileBundle(contract: BehaviorModelContract, entry?: string, relations?: readonly RelationDecl[], dialectName?: DialectName, findFilterModel?: FindFilterSource, resolveColumnType?: ColumnTypeResolver): SqlBundle;
|
|
92
103
|
/**
|
|
93
104
|
* Execute a {@link SqlBundle} (the §8 published artifact) end-to-end via the static makeSQL
|
|
94
105
|
* runtime + REAL SQLite. Read bundles run the read graph via bc `runBehavior`; single-statement
|
|
@@ -140,7 +151,7 @@ export declare function executeBehaviorAsync(contract: BehaviorModelContract, in
|
|
|
140
151
|
* Expression-IR params); {@link deriveTransactionPlan} lowers the lifecycle's §6 effect arrays
|
|
141
152
|
* around it into the ordered statement list. Pure JSON; a WS7 runtime honors the SAME plan.
|
|
142
153
|
*/
|
|
143
|
-
export declare function compileWriteBundle(contract: BehaviorModelContract, entry: string, writes: EntityWritesDefinition, phase: WriteLifecyclePhase, dialectName?: DialectName): SqlBundle;
|
|
154
|
+
export declare function compileWriteBundle(contract: BehaviorModelContract, entry: string, writes: EntityWritesDefinition, phase: WriteLifecyclePhase, dialectName?: DialectName, resolveColumnType?: ColumnTypeResolver): SqlBundle;
|
|
144
155
|
/**
|
|
145
156
|
* One member of a COMPOSITE (multi-write) Command (WS8a, #28 — spec §6 nested write / §14 tx-DAG):
|
|
146
157
|
* a named base write (its sole Insert/Update/Delete node in `entry`) carrying its OWN save-contract
|
|
@@ -173,7 +184,7 @@ export declare function compileCreateManyBundle(name: string, options: InsertMan
|
|
|
173
184
|
columns: readonly string[];
|
|
174
185
|
autoInc: string | null;
|
|
175
186
|
};
|
|
176
|
-
}, dialectName?: DialectName): SqlBundle;
|
|
187
|
+
}, dialectName?: DialectName, resolveColumnType?: ColumnTypeResolver): SqlBundle;
|
|
177
188
|
/**
|
|
178
189
|
* Compile an `updateMany` into a batch write {@link SqlBundle} (one UNNEST/JSON/CASE statement,
|
|
179
190
|
* byte-identical to `compileUpdateMany` driving the v1 `buildUpdateMany` / JSON-batch builder).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/scp/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAa,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAKL,KAAK,SAAS,EAEd,KAAK,eAAe,EACpB,KAAK,QAAQ,IAAI,cAAc,EAC/B,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAOL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/scp/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/scp/runtime.js
CHANGED
|
@@ -48,6 +48,7 @@ const static_bundle_1 = require("./makesql/static-bundle");
|
|
|
48
48
|
const tx_1 = require("./makesql/tx");
|
|
49
49
|
const compile_crud_1 = require("./makesql/compile-crud");
|
|
50
50
|
const makesql_1 = require("./makesql/makesql");
|
|
51
|
+
const writeouttype_1 = require("./makesql/writeouttype");
|
|
51
52
|
const writes_1 = require("./writes");
|
|
52
53
|
/** The primary catalog node of a component (the first non-cond, non-map body node). */
|
|
53
54
|
function primaryNodeOf(component) {
|
|
@@ -83,7 +84,7 @@ function executeBehavior(contract, input, options) {
|
|
|
83
84
|
* published multi-language artifact. SYMBOLIC (no concrete input). A read method compiles to a
|
|
84
85
|
* {@link ReadGraph}; a single-write method to a `makeSQL` statement. Pure JSON throughout.
|
|
85
86
|
*/
|
|
86
|
-
function compileBundle(contract, entry, relations = [], dialectName = 'sqlite') {
|
|
87
|
+
function compileBundle(contract, entry, relations = [], dialectName = 'sqlite', findFilterModel, resolveColumnType) {
|
|
87
88
|
const component = entry ? contract.components.find((c) => c.name === entry) : contract.components[0];
|
|
88
89
|
if (component === undefined)
|
|
89
90
|
throw new Error(`scp runtime: entry component '${entry ?? '<first>'}' not found in contract`);
|
|
@@ -96,7 +97,7 @@ function compileBundle(contract, entry, relations = [], dialectName = 'sqlite')
|
|
|
96
97
|
}
|
|
97
98
|
if (isWriteComponent(component)) {
|
|
98
99
|
const writeNode = primaryNodeOf(component);
|
|
99
|
-
const op = (0, tx_1.compileWriteNode)(writeNode);
|
|
100
|
+
const op = (0, tx_1.compileWriteNode)(writeNode, dialectName);
|
|
100
101
|
return {
|
|
101
102
|
dialect: dialectName,
|
|
102
103
|
name: component.name,
|
|
@@ -105,7 +106,7 @@ function compileBundle(contract, entry, relations = [], dialectName = 'sqlite')
|
|
|
105
106
|
relations: relationOps,
|
|
106
107
|
};
|
|
107
108
|
}
|
|
108
|
-
const readGraph = (0, static_bundle_1.compileReadGraph)(contract, dialectName, entry);
|
|
109
|
+
const readGraph = (0, static_bundle_1.compileReadGraph)(contract, dialectName, entry, findFilterModel, resolveColumnType);
|
|
109
110
|
return {
|
|
110
111
|
dialect: dialectName,
|
|
111
112
|
name: readGraph.name,
|
|
@@ -193,7 +194,7 @@ function baseWriteNodeOf(component) {
|
|
|
193
194
|
* Expression-IR params); {@link deriveTransactionPlan} lowers the lifecycle's §6 effect arrays
|
|
194
195
|
* around it into the ordered statement list. Pure JSON; a WS7 runtime honors the SAME plan.
|
|
195
196
|
*/
|
|
196
|
-
function compileWriteBundle(contract, entry, writes, phase, dialectName = 'sqlite') {
|
|
197
|
+
function compileWriteBundle(contract, entry, writes, phase, dialectName = 'sqlite', resolveColumnType) {
|
|
197
198
|
const component = contract.components.find((c) => c.name === entry);
|
|
198
199
|
if (component === undefined)
|
|
199
200
|
throw new Error(`scp write: entry component '${entry}' not found in contract`);
|
|
@@ -205,10 +206,10 @@ function compileWriteBundle(contract, entry, writes, phase, dialectName = 'sqlit
|
|
|
205
206
|
// MySQL has no native RETURNING; when the base write is an INSERT…RETURNING carrying a PK
|
|
206
207
|
// descriptor, annotate it with the strip-before-execute PK hint so the mysql emulation re-selects
|
|
207
208
|
// by the REAL PK (not a hardcoded `id`). PG/SQLite keep the op verbatim (native RETURNING).
|
|
208
|
-
const baseOp = dialectName === 'mysql' ? (0, tx_1.mysqlPkHint)((0, tx_1.compileWriteNode)(writeNode)) : (0, tx_1.compileWriteNode)(writeNode);
|
|
209
|
+
const baseOp = dialectName === 'mysql' ? (0, tx_1.mysqlPkHint)((0, tx_1.compileWriteNode)(writeNode, dialectName)) : (0, tx_1.compileWriteNode)(writeNode, dialectName);
|
|
209
210
|
const base = { op: baseOp, label: `${writeNode.component}` };
|
|
210
211
|
const plan = (0, tx_1.deriveTransactionPlan)(phase, [base], lifecycle, dialectName);
|
|
211
|
-
|
|
212
|
+
const bundle = {
|
|
212
213
|
dialect: dialectName,
|
|
213
214
|
name: component.name,
|
|
214
215
|
statement: { sql: baseOp.sql, params: baseOp.params },
|
|
@@ -216,6 +217,12 @@ function compileWriteBundle(contract, entry, writes, phase, dialectName = 'sqlit
|
|
|
216
217
|
relations: {},
|
|
217
218
|
transaction: plan,
|
|
218
219
|
};
|
|
220
|
+
// Codegen typed de-box (spec §4.1/§9): when the schema/DDL column-type SoT is supplied, annotate
|
|
221
|
+
// the write bundle with the TransactionResult `outputType` (entity/returnedRows rows typed via the
|
|
222
|
+
// resolver + the write's target/RETURNING) so bc's typed(-raw) emitters materialize a concrete
|
|
223
|
+
// struct for the result. Fail-closed inside `annotateWriteBundleOutType`. Absent resolver → the
|
|
224
|
+
// bundle stays un-annotated (interpret/boxed only, back-compat).
|
|
225
|
+
return resolveColumnType === undefined ? bundle : (0, writeouttype_1.annotateWriteBundleOutType)(bundle, resolveColumnType);
|
|
219
226
|
}
|
|
220
227
|
/**
|
|
221
228
|
* Compile a COMPOSITE (multi-write) Command into a {@link SqlBundle} carrying ONE derived,
|
|
@@ -238,7 +245,7 @@ function compileCompositeWriteBundle(contract, entries, phase, dialectName = 'sq
|
|
|
238
245
|
if (firstBaseOp === undefined)
|
|
239
246
|
firstName = component.name;
|
|
240
247
|
const writeNode = baseWriteNodeOf(component);
|
|
241
|
-
const baseOp = (0, tx_1.compileWriteNode)(writeNode);
|
|
248
|
+
const baseOp = (0, tx_1.compileWriteNode)(writeNode, dialectName);
|
|
242
249
|
if (firstBaseOp === undefined)
|
|
243
250
|
firstBaseOp = baseOp;
|
|
244
251
|
bases.push({ op: baseOp, label: `${writeNode.component} ${e.name}`, name: e.name, effects: e.lifecycle.effects });
|
|
@@ -278,7 +285,7 @@ function flattenBatchOp(node, label) {
|
|
|
278
285
|
* MySQL dialect: a batch INSERT persists N rows, so the MySQL RETURNING emulation must re-select ALL
|
|
279
286
|
* N (a range on the AUTO_INCREMENT column, or the client-supplied PK values), not a single `id`.
|
|
280
287
|
*/
|
|
281
|
-
function compileCreateManyBundle(name, options, dialectName = 'sqlite') {
|
|
288
|
+
function compileCreateManyBundle(name, options, dialectName = 'sqlite', resolveColumnType) {
|
|
282
289
|
const components = (0, compile_crud_1.compileInsertMany)(dialectName, options);
|
|
283
290
|
const ops = components.map((c, i) => {
|
|
284
291
|
const flat = flattenBatchOp(c, `createMany group ${i}`);
|
|
@@ -290,7 +297,19 @@ function compileCreateManyBundle(name, options, dialectName = 'sqlite') {
|
|
|
290
297
|
return flat;
|
|
291
298
|
});
|
|
292
299
|
const plan = (0, tx_1.deriveBatchPlan)('create', ops);
|
|
293
|
-
|
|
300
|
+
// `ops` is never empty here: `deriveBatchPlan` throws on zero ops, and a `createMany` always groups
|
|
301
|
+
// into >=1 INSERT. Fail LOUDLY rather than emitting an empty `sql` fallback (an empty-ops bundle is a
|
|
302
|
+
// compile bug, not a default — 'defaults in schema, not code'). The `statement` mirrors the batch plan's
|
|
303
|
+
// first (group-0) statement, matching the updateMany/deleteMany bundle shape below.
|
|
304
|
+
const head = ops[0];
|
|
305
|
+
if (head === undefined) {
|
|
306
|
+
throw new Error(`scp write: compileCreateManyBundle('${name}') produced no INSERT statements (empty createMany grouping) — an empty-ops batch bundle is a compile bug, not a silent empty-SQL default.`);
|
|
307
|
+
}
|
|
308
|
+
const bundle = { dialect: dialectName, name, statement: { sql: head.sql, params: head.params }, optionalHeads: [], relations: {}, transaction: plan };
|
|
309
|
+
// Codegen typed de-box (spec §4.1/§9): annotate the batch write with the TransactionResult
|
|
310
|
+
// `outputType` when the schema SoT resolver is supplied (returnedRows rows typed via the RETURNING
|
|
311
|
+
// + target table). Fail-closed. Absent resolver → un-annotated (back-compat).
|
|
312
|
+
return resolveColumnType === undefined ? bundle : (0, writeouttype_1.annotateWriteBundleOutType)(bundle, resolveColumnType);
|
|
294
313
|
}
|
|
295
314
|
/**
|
|
296
315
|
* Compile an `updateMany` into a batch write {@link SqlBundle} (one UNNEST/JSON/CASE statement,
|
package/dist/scp/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/scp/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/scp/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -220,6 +220,57 @@ posts, _ := postQueries.Search(ctx, db, SearchInput{AuthorID: 7, Since: "2026-01
|
|
|
220
220
|
- 論理モデル ↔ 物理配置(table/column/PK/index)はモデル定義が吸収(原案 contracts-architecture.md「モデル定義」)。
|
|
221
221
|
- litedbmodel-gen は `schema.sql` から列定義を生成し、**マーカー内は再生成・手書き(リレーション/writes/SCP ブロック)は保持**。
|
|
222
222
|
|
|
223
|
+
### 4.1 型システム(SQL 型ベース・SSoT)
|
|
224
|
+
|
|
225
|
+
litedbmodel は SQL バックエンド consumer なので、**列型は SQL 型を SoT とする**(TS の `number` は int/real を区別できないため型の権威にしない — v1 の TS-型ベース `@column`(`design:type=Number`)が INTEGER/REAL を潰していたのを是正)。型は `schema.sql`(DDL)から確定し、**typed codegen(bc typed-raw 脱box)の `outType` 注記**に使う。interpret 経路(動的 Value)では列型は不要だったため v2 は本節を欠いていた。typed codegen が SQL レベルの型精度を要求するため、ここで規定する。
|
|
226
|
+
|
|
227
|
+
**列型 → bc outType スカラ(正規対応表)**
|
|
228
|
+
|
|
229
|
+
| SQL 型 | litedbmodel 列型 | bc outType | 備考 |
|
|
230
|
+
|---|---|---|---|
|
|
231
|
+
| INTEGER / INT / BIGINT | `int` | `int` | int は既定 **64bit (i64)**。狭いサイズ制限はデコレータオプション(制約)で表現し、**別型にしない**(int と bigint を分けない) |
|
|
232
|
+
| REAL / FLOAT / DOUBLE | `real` | `float` | int と real は**明確に分離**(普通の処理系どおり) |
|
|
233
|
+
| DECIMAL / NUMERIC | `decimal` | `string` | 精度保持のため文字列表現 |
|
|
234
|
+
| TEXT / VARCHAR / CHAR / UUID | `text` | `string` | |
|
|
235
|
+
| BOOLEAN | `bool` | `bool` | |
|
|
236
|
+
| DATE / TIMESTAMP / DATETIME | `date` | `string` | **一旦 string**(オーナー決定)。bc の `date` scalar 新設(behavior-contracts#84)は将来の最適化として **defer**。litedbmodel 列型は `date` のまま(SQL/意味は保持)だが bc 表現は string。**TS のみ利便で `Date` へ de/serialize 可、他言語(Rust/Go/Py/PHP)は string 扱い**(JSON 列と同じ構図)。DB は行ごとに別 TZ を保存しない |
|
|
237
|
+
| JSON / JSONB | `json` | `string` | 表現は JSON テキスト=**文字列**。TS のみ利便で object に de/serialize。列ごとに typed obj へ構造化しない |
|
|
238
|
+
|
|
239
|
+
**構造型(クエリ由来。列型ではない)**
|
|
240
|
+
- 行 = 列の **`obj{列: 型…}`**。
|
|
241
|
+
- hasMany/list = **`arr<行obj>`**、belongsTo/hasOne = **`opt<行obj>`**、connection = `obj{items: arr<…>, cursor: opt<…>}`。
|
|
242
|
+
- **object と array は明確に別**(一括の「json」型にしない)。JSON 列(上表)とは無関係。
|
|
243
|
+
|
|
244
|
+
**3層(デコレータ型 ↔ SQL 型 ↔ bc outType)**
|
|
245
|
+
|
|
246
|
+
型は3層で一意対応させる。デコレータが authoring 面で列型を宣言し、SQL 型(DDL)が物理 SoT、bc outType が codegen 面。
|
|
247
|
+
|
|
248
|
+
| litedbmodel 列型 | デコレータ | SQL 型 | bc outType |
|
|
249
|
+
|---|---|---|---|
|
|
250
|
+
| int | `@column.int()` | INTEGER/INT/BIGINT | `int` |
|
|
251
|
+
| real | `@column.real()` | REAL/FLOAT/DOUBLE | `float` |
|
|
252
|
+
| decimal | `@column.decimal()` | DECIMAL/NUMERIC | `string` |
|
|
253
|
+
| text | `@column.text()`(既定)| TEXT/VARCHAR/CHAR/UUID | `string` |
|
|
254
|
+
| bool | `@column.boolean()` | BOOLEAN | `bool` |
|
|
255
|
+
| date | `@column.date()`/`.datetime()` | DATE/TIMESTAMP/DATETIME | `string`(一旦。bc date 型は #84 defer)|
|
|
256
|
+
| json | `@column.json()` | JSON/JSONB | `string`(TS のみ object)|
|
|
257
|
+
|
|
258
|
+
**デコレータ API 変更(v1 → v2 破壊的)**
|
|
259
|
+
- **`@column.int()` / `@column.real()` を新設**。int は既定 **64bit(i64)**、狭いサイズ制限は `@column.int({ bits: 32 })` 等の**オプション制約**で表現(別型にしない)。
|
|
260
|
+
- **`@column.bigint()` は廃止**(int が i64 なので冗長 → int に統合)。
|
|
261
|
+
- **無印 `@column()`(`design:type=Number` 依存で int/real 曖昧)は禁止**。数値列は `.int()`/`.real()` を明示必須(未指定=error、no-assume)。他の型(string/bool/date/json)は design:type から一意なので従来どおり推論可。
|
|
262
|
+
- object と array は別(json 列=string。行/リレーション構造の obj/arr とは無関係)。
|
|
263
|
+
|
|
264
|
+
**規律**
|
|
265
|
+
- 型が曖昧/未指定なら **error(no-assume・no-fallback)**。
|
|
266
|
+
- SoT は `schema.sql` の SQL 型。`@column.*` は列型を宣言(gen は schema.sql → デコレータ型を生成)、converter(`src/scp/coltype.ts`)が上表で bc outType 記法へ**一意**変換する。
|
|
267
|
+
|
|
268
|
+
**脱box は READ と WRITE の両方を覆う(§9 codegen 面)**
|
|
269
|
+
- **READ**: SELECT projection を行 obj 型に型付け(`src/scp/makesql/outtype.ts`)→ bc typed-raw が具体的な行 struct を materialize。
|
|
270
|
+
- **WRITE**: 書き込み出力=`TransactionResult` の typed shape(`src/scp/makesql/writeouttype.ts`):
|
|
271
|
+
`obj{ committed:bool, executed:arr<string>, shortCircuit:opt<obj{statementId:string, reason:string}>, entity:opt<ROW>, returnedRows:opt<arr<arr<ROW>>> }`。
|
|
272
|
+
`entity`/`returnedRows` の行(ROW)は、書き込み対象テーブル(tx plan の `body` statement の SQL から構造的に抽出)とその RETURNING 列を、**READ と同一の列型 resolver(本節の SoT)** で型付けする。脱box できない write shape(未知テーブル/列、`RETURNING *`、batch 群でテーブル/RETURNING が不一致 等)は **error(no-assume・no-fallback)** — 決してボックス化へ退避しない。READ の surrogate IR と同様、write bundle の `makeSqlComponentIR` の単一 node `outType` + component `outputType` に注記して bc typed-raw に渡す。
|
|
273
|
+
|
|
223
274
|
## 5. Relation — Read 系
|
|
224
275
|
|
|
225
276
|
- Relation は SQL JOIN を**既定にしない**。graphddb / v1 LazyRelation と同型の **staged batch query-composition + object assembly**(feasibility §5・§9)。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "litedbmodel",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "A lightweight TypeScript ORM for PostgreSQL, MySQL, and SQLite with Active Record pattern",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"url": "git+https://github.com/foo-ogawa/litedbmodel.git"
|
|
81
81
|
},
|
|
82
82
|
"dependencies": {
|
|
83
|
-
"behavior-contracts": "^0.
|
|
83
|
+
"behavior-contracts": "^0.5.0",
|
|
84
84
|
"reflect-metadata": "^0.2.2"
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|