litedbmodel 2.2.2 → 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 -10
- package/dist/scp/emit/emitter.d.ts.map +1 -1
- package/dist/scp/emit/emitter.js +119 -51
- 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 -629
- package/dist/scp/index.d.ts +6 -11
- 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 -617
- package/dist/scp/leaf-transport.d.ts +127 -39
- package/dist/scp/leaf-transport.d.ts.map +1 -1
- package/dist/scp/leaf-transport.js +30 -24
- package/dist/scp/leaf-transport.js.map +1 -1
- package/dist/scp/leaves.d.ts +57 -20
- package/dist/scp/leaves.d.ts.map +1 -1
- package/dist/scp/leaves.js +224 -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 +14 -3
- 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
|
@@ -1,579 +0,0 @@
|
|
|
1
|
-
SQL Contracts Architecture Draft
|
|
2
|
-
|
|
3
|
-
概要
|
|
4
|
-
|
|
5
|
-
本仕様は、litedbmodel の SQL-first 設計と GraphDDB の Contract / Planner / Runtime アーキテクチャを統合し、RDB 向けの契約駆動ランタイムを定義する。
|
|
6
|
-
|
|
7
|
-
目的は ORM を作ることではなく、
|
|
8
|
-
|
|
9
|
-
* 論理モデルを契約化する
|
|
10
|
-
* CQRS を公開IFとする
|
|
11
|
-
* SQL生成・トランザクション・実行計画を導出する
|
|
12
|
-
* 多言語 Runtime を実現する
|
|
13
|
-
|
|
14
|
-
ことである。
|
|
15
|
-
|
|
16
|
-
⸻
|
|
17
|
-
|
|
18
|
-
設計思想
|
|
19
|
-
|
|
20
|
-
SQL-first
|
|
21
|
-
|
|
22
|
-
SQLを隠蔽しない。
|
|
23
|
-
|
|
24
|
-
複雑な検索は SQL をそのまま利用できる。
|
|
25
|
-
|
|
26
|
-
ただし SQL であっても
|
|
27
|
-
|
|
28
|
-
* 入力
|
|
29
|
-
* 出力
|
|
30
|
-
* Safety
|
|
31
|
-
* Effect
|
|
32
|
-
* Transaction
|
|
33
|
-
|
|
34
|
-
は契約化する。
|
|
35
|
-
|
|
36
|
-
⸻
|
|
37
|
-
|
|
38
|
-
論理モデル中心
|
|
39
|
-
|
|
40
|
-
外部に見えるものは論理モデルである。
|
|
41
|
-
|
|
42
|
-
Logical Model
|
|
43
|
-
↓
|
|
44
|
-
CQRS Contract
|
|
45
|
-
↓
|
|
46
|
-
Execution Plan
|
|
47
|
-
↓
|
|
48
|
-
Dialect SQL
|
|
49
|
-
|
|
50
|
-
DB物理構造はモデル定義が吸収する。
|
|
51
|
-
|
|
52
|
-
⸻
|
|
53
|
-
|
|
54
|
-
CQRS公開IF
|
|
55
|
-
|
|
56
|
-
公開されるAPIは CQRS のみ。
|
|
57
|
-
|
|
58
|
-
Query
|
|
59
|
-
Command
|
|
60
|
-
|
|
61
|
-
Repository や ORM API は外部公開しない。
|
|
62
|
-
|
|
63
|
-
⸻
|
|
64
|
-
|
|
65
|
-
レイヤ構成
|
|
66
|
-
|
|
67
|
-
Logical Model
|
|
68
|
-
↓
|
|
69
|
-
Model Mapping
|
|
70
|
-
↓
|
|
71
|
-
Access Pattern Contract
|
|
72
|
-
↓
|
|
73
|
-
Composition IR
|
|
74
|
-
↓
|
|
75
|
-
SQL IR
|
|
76
|
-
↓
|
|
77
|
-
Dialect SQL
|
|
78
|
-
↓
|
|
79
|
-
Runtime
|
|
80
|
-
|
|
81
|
-
⸻
|
|
82
|
-
|
|
83
|
-
モデル定義
|
|
84
|
-
|
|
85
|
-
モデル定義は論理モデルと物理配置を対応付ける。
|
|
86
|
-
|
|
87
|
-
Logical User
|
|
88
|
-
↓
|
|
89
|
-
users table
|
|
90
|
-
↓
|
|
91
|
-
columns
|
|
92
|
-
↓
|
|
93
|
-
relations
|
|
94
|
-
↓
|
|
95
|
-
indexes
|
|
96
|
-
|
|
97
|
-
ここでは
|
|
98
|
-
|
|
99
|
-
* belongsTo
|
|
100
|
-
* hasOne
|
|
101
|
-
* hasMany
|
|
102
|
-
* many-to-many
|
|
103
|
-
|
|
104
|
-
などの意味だけを定義する。
|
|
105
|
-
|
|
106
|
-
⸻
|
|
107
|
-
|
|
108
|
-
Access Pattern
|
|
109
|
-
|
|
110
|
-
アクセスパターンが公開契約になる。
|
|
111
|
-
|
|
112
|
-
例
|
|
113
|
-
|
|
114
|
-
GetUser
|
|
115
|
-
SearchUsers
|
|
116
|
-
PatchUser
|
|
117
|
-
ReplaceUserRoles
|
|
118
|
-
|
|
119
|
-
ここから
|
|
120
|
-
|
|
121
|
-
* SQL
|
|
122
|
-
* Transaction
|
|
123
|
-
* Object Assembly
|
|
124
|
-
|
|
125
|
-
が導出される。
|
|
126
|
-
|
|
127
|
-
⸻
|
|
128
|
-
|
|
129
|
-
Composition IR
|
|
130
|
-
|
|
131
|
-
最初のIR。
|
|
132
|
-
|
|
133
|
-
SQLではない。
|
|
134
|
-
|
|
135
|
-
責務は
|
|
136
|
-
|
|
137
|
-
* Query API 呼び出し
|
|
138
|
-
* データフロー
|
|
139
|
-
* バッチロード
|
|
140
|
-
* Object Assembly
|
|
141
|
-
|
|
142
|
-
である。
|
|
143
|
-
|
|
144
|
-
例
|
|
145
|
-
|
|
146
|
-
User.findOne
|
|
147
|
-
↓
|
|
148
|
-
Post.findByUserIds
|
|
149
|
-
↓
|
|
150
|
-
Attach posts
|
|
151
|
-
|
|
152
|
-
保持するもの
|
|
153
|
-
|
|
154
|
-
API Node
|
|
155
|
-
Data Flow
|
|
156
|
-
Object Assembly
|
|
157
|
-
Execution Dependency
|
|
158
|
-
|
|
159
|
-
⸻
|
|
160
|
-
|
|
161
|
-
SQL IR
|
|
162
|
-
|
|
163
|
-
Composition IR を SQL に変換したもの。
|
|
164
|
-
|
|
165
|
-
ここでは
|
|
166
|
-
|
|
167
|
-
* SELECT
|
|
168
|
-
* UPDATE
|
|
169
|
-
* INSERT
|
|
170
|
-
* DELETE
|
|
171
|
-
* CTE
|
|
172
|
-
* Parameter
|
|
173
|
-
* Placeholder
|
|
174
|
-
|
|
175
|
-
などが扱われる。
|
|
176
|
-
|
|
177
|
-
Dialect 非依存。
|
|
178
|
-
|
|
179
|
-
⸻
|
|
180
|
-
|
|
181
|
-
Dialect SQL
|
|
182
|
-
|
|
183
|
-
最後に
|
|
184
|
-
|
|
185
|
-
PostgreSQL
|
|
186
|
-
MySQL
|
|
187
|
-
SQLite
|
|
188
|
-
|
|
189
|
-
へ変換する。
|
|
190
|
-
|
|
191
|
-
Runtime は SQL を生成しない。
|
|
192
|
-
|
|
193
|
-
⸻
|
|
194
|
-
|
|
195
|
-
Runtime
|
|
196
|
-
|
|
197
|
-
Runtime の責務は最小限。
|
|
198
|
-
|
|
199
|
-
Input Validation
|
|
200
|
-
↓
|
|
201
|
-
Dynamic Slot Evaluation
|
|
202
|
-
↓
|
|
203
|
-
Placeholder Expansion
|
|
204
|
-
↓
|
|
205
|
-
SQL Execute
|
|
206
|
-
↓
|
|
207
|
-
Object Assembly
|
|
208
|
-
|
|
209
|
-
SQL生成ロジックは持たない。
|
|
210
|
-
|
|
211
|
-
⸻
|
|
212
|
-
|
|
213
|
-
SKIP
|
|
214
|
-
|
|
215
|
-
SKIP は契約言語。
|
|
216
|
-
|
|
217
|
-
単なる便利機能ではない。
|
|
218
|
-
|
|
219
|
-
対象
|
|
220
|
-
|
|
221
|
-
WHERE
|
|
222
|
-
SET
|
|
223
|
-
Execution Step
|
|
224
|
-
|
|
225
|
-
例
|
|
226
|
-
|
|
227
|
-
name = input.name ?? SKIP
|
|
228
|
-
status = input.status ?? SKIP
|
|
229
|
-
|
|
230
|
-
⸻
|
|
231
|
-
|
|
232
|
-
Dynamic Slot
|
|
233
|
-
|
|
234
|
-
値だけではなく構造も Placeholder にする。
|
|
235
|
-
|
|
236
|
-
種類
|
|
237
|
-
|
|
238
|
-
Value
|
|
239
|
-
Column
|
|
240
|
-
Condition
|
|
241
|
-
Fragment
|
|
242
|
-
Set
|
|
243
|
-
Order
|
|
244
|
-
|
|
245
|
-
例
|
|
246
|
-
|
|
247
|
-
sql`
|
|
248
|
-
WHERE
|
|
249
|
-
?
|
|
250
|
-
`
|
|
251
|
-
|
|
252
|
-
に
|
|
253
|
-
|
|
254
|
-
Condition を埋め込める。
|
|
255
|
-
|
|
256
|
-
⸻
|
|
257
|
-
|
|
258
|
-
SQL Template
|
|
259
|
-
|
|
260
|
-
SQL Template は
|
|
261
|
-
|
|
262
|
-
静的部分
|
|
263
|
-
|
|
264
|
-
と
|
|
265
|
-
|
|
266
|
-
動的部分
|
|
267
|
-
|
|
268
|
-
を持つ。
|
|
269
|
-
|
|
270
|
-
Compile
|
|
271
|
-
↓
|
|
272
|
-
Static Flatten
|
|
273
|
-
↓
|
|
274
|
-
Runtime Expansion
|
|
275
|
-
|
|
276
|
-
Rust版と同様、
|
|
277
|
-
|
|
278
|
-
静的に確定できるものはできるだけ展開する。
|
|
279
|
-
|
|
280
|
-
動的条件だけ Runtime に残す。
|
|
281
|
-
|
|
282
|
-
⸻
|
|
283
|
-
|
|
284
|
-
静的解析
|
|
285
|
-
|
|
286
|
-
Compile 時に
|
|
287
|
-
|
|
288
|
-
Model
|
|
289
|
-
Relation
|
|
290
|
-
Column
|
|
291
|
-
Type
|
|
292
|
-
Scope
|
|
293
|
-
Placeholder
|
|
294
|
-
|
|
295
|
-
をすべて解決する。
|
|
296
|
-
|
|
297
|
-
Runtime で
|
|
298
|
-
|
|
299
|
-
Unknown Column
|
|
300
|
-
Unknown Relation
|
|
301
|
-
|
|
302
|
-
などは発生しない。
|
|
303
|
-
|
|
304
|
-
⸻
|
|
305
|
-
|
|
306
|
-
Relation
|
|
307
|
-
|
|
308
|
-
Relation は SQL JOIN ではない。
|
|
309
|
-
|
|
310
|
-
まず
|
|
311
|
-
|
|
312
|
-
hasMany
|
|
313
|
-
↓
|
|
314
|
-
Query Composition
|
|
315
|
-
|
|
316
|
-
へ展開される。
|
|
317
|
-
|
|
318
|
-
例えば
|
|
319
|
-
|
|
320
|
-
User
|
|
321
|
-
↓
|
|
322
|
-
Post.findByUserIds
|
|
323
|
-
↓
|
|
324
|
-
Object Assembly
|
|
325
|
-
|
|
326
|
-
SQL JOIN ではなく
|
|
327
|
-
|
|
328
|
-
Query の組み合わせになる。
|
|
329
|
-
|
|
330
|
-
⸻
|
|
331
|
-
|
|
332
|
-
Object Assembly
|
|
333
|
-
|
|
334
|
-
取得した Row を
|
|
335
|
-
|
|
336
|
-
論理モデルへ組み立てる。
|
|
337
|
-
|
|
338
|
-
例
|
|
339
|
-
|
|
340
|
-
User
|
|
341
|
-
↓
|
|
342
|
-
posts[]
|
|
343
|
-
↓
|
|
344
|
-
comments[]
|
|
345
|
-
|
|
346
|
-
この Assembly も IR に含まれる。
|
|
347
|
-
|
|
348
|
-
⸻
|
|
349
|
-
|
|
350
|
-
Relation Filter
|
|
351
|
-
|
|
352
|
-
JOIN 構文そのものではなく
|
|
353
|
-
|
|
354
|
-
Relation Filter を定義する。
|
|
355
|
-
|
|
356
|
-
例
|
|
357
|
-
|
|
358
|
-
User
|
|
359
|
-
WHERE
|
|
360
|
-
status = active
|
|
361
|
-
AND
|
|
362
|
-
Membership.group = xxx
|
|
363
|
-
|
|
364
|
-
公開契約では
|
|
365
|
-
|
|
366
|
-
User.filterThrough(...)
|
|
367
|
-
|
|
368
|
-
のような意味になる。
|
|
369
|
-
|
|
370
|
-
内部では
|
|
371
|
-
|
|
372
|
-
JOIN
|
|
373
|
-
EXISTS
|
|
374
|
-
IN
|
|
375
|
-
|
|
376
|
-
などへ変換可能。
|
|
377
|
-
|
|
378
|
-
⸻
|
|
379
|
-
|
|
380
|
-
Raw SQL
|
|
381
|
-
|
|
382
|
-
Raw SQL は Escape Hatch。
|
|
383
|
-
|
|
384
|
-
ただし契約外ではない。
|
|
385
|
-
|
|
386
|
-
契約化するもの
|
|
387
|
-
|
|
388
|
-
Input
|
|
389
|
-
Output
|
|
390
|
-
Safety
|
|
391
|
-
Effect
|
|
392
|
-
Dialect
|
|
393
|
-
|
|
394
|
-
SQLだけ自由に書ける。
|
|
395
|
-
|
|
396
|
-
⸻
|
|
397
|
-
|
|
398
|
-
Transaction
|
|
399
|
-
|
|
400
|
-
Transaction DAG を公開仕様にはしない。
|
|
401
|
-
|
|
402
|
-
公開されるのは
|
|
403
|
-
|
|
404
|
-
Access Pattern
|
|
405
|
-
|
|
406
|
-
のみ。
|
|
407
|
-
|
|
408
|
-
Transaction は導出される。
|
|
409
|
-
|
|
410
|
-
Access Pattern
|
|
411
|
-
↓
|
|
412
|
-
Dependency Graph
|
|
413
|
-
↓
|
|
414
|
-
Transaction DAG
|
|
415
|
-
↓
|
|
416
|
-
Execution Plan
|
|
417
|
-
|
|
418
|
-
⸻
|
|
419
|
-
|
|
420
|
-
Execution Planning
|
|
421
|
-
|
|
422
|
-
Planner が
|
|
423
|
-
|
|
424
|
-
Execution Graph
|
|
425
|
-
|
|
426
|
-
を生成する。
|
|
427
|
-
|
|
428
|
-
ここで
|
|
429
|
-
|
|
430
|
-
* Dependency
|
|
431
|
-
* Safety
|
|
432
|
-
* Cardinality
|
|
433
|
-
|
|
434
|
-
を考慮する。
|
|
435
|
-
|
|
436
|
-
⸻
|
|
437
|
-
|
|
438
|
-
Gate First
|
|
439
|
-
|
|
440
|
-
意味が変わらない限り
|
|
441
|
-
|
|
442
|
-
Gate を最優先で実行する。
|
|
443
|
-
|
|
444
|
-
例
|
|
445
|
-
|
|
446
|
-
Input Validation
|
|
447
|
-
↓
|
|
448
|
-
SET Exists
|
|
449
|
-
↓
|
|
450
|
-
WHERE Exists
|
|
451
|
-
↓
|
|
452
|
-
UPDATE
|
|
453
|
-
↓
|
|
454
|
-
Audit
|
|
455
|
-
|
|
456
|
-
不要な SQL はできるだけ早く打ち切る。
|
|
457
|
-
|
|
458
|
-
⸻
|
|
459
|
-
|
|
460
|
-
Static vs Dynamic
|
|
461
|
-
|
|
462
|
-
Compile
|
|
463
|
-
|
|
464
|
-
Model
|
|
465
|
-
Relation
|
|
466
|
-
Column
|
|
467
|
-
Join
|
|
468
|
-
Projection
|
|
469
|
-
|
|
470
|
-
Runtime
|
|
471
|
-
|
|
472
|
-
SKIP
|
|
473
|
-
Condition
|
|
474
|
-
Parameter
|
|
475
|
-
Dynamic Fragment
|
|
476
|
-
|
|
477
|
-
Compile 時に可能な限り解決する。
|
|
478
|
-
|
|
479
|
-
⸻
|
|
480
|
-
|
|
481
|
-
Multi-language Runtime
|
|
482
|
-
|
|
483
|
-
生成対象
|
|
484
|
-
|
|
485
|
-
TypeScript
|
|
486
|
-
Go
|
|
487
|
-
Rust
|
|
488
|
-
Python
|
|
489
|
-
PHP
|
|
490
|
-
|
|
491
|
-
Runtime は
|
|
492
|
-
|
|
493
|
-
Contract
|
|
494
|
-
↓
|
|
495
|
-
SQL Execute
|
|
496
|
-
↓
|
|
497
|
-
Assembly
|
|
498
|
-
|
|
499
|
-
だけを担当する。
|
|
500
|
-
|
|
501
|
-
⸻
|
|
502
|
-
|
|
503
|
-
Conformance
|
|
504
|
-
|
|
505
|
-
全 Runtime は
|
|
506
|
-
|
|
507
|
-
同一 Contract
|
|
508
|
-
|
|
509
|
-
同一 Input
|
|
510
|
-
|
|
511
|
-
から
|
|
512
|
-
|
|
513
|
-
同一 SQL
|
|
514
|
-
|
|
515
|
-
同一 Result
|
|
516
|
-
|
|
517
|
-
を生成しなければならない。
|
|
518
|
-
|
|
519
|
-
⸻
|
|
520
|
-
|
|
521
|
-
Responsibility
|
|
522
|
-
|
|
523
|
-
Model
|
|
524
|
-
|
|
525
|
-
物理配置との対応
|
|
526
|
-
|
|
527
|
-
Contract
|
|
528
|
-
|
|
529
|
-
公開API
|
|
530
|
-
|
|
531
|
-
Planner
|
|
532
|
-
|
|
533
|
-
Execution Plan導出
|
|
534
|
-
|
|
535
|
-
Compiler
|
|
536
|
-
|
|
537
|
-
Dialect SQL生成
|
|
538
|
-
|
|
539
|
-
Runtime
|
|
540
|
-
|
|
541
|
-
SQL実行
|
|
542
|
-
|
|
543
|
-
⸻
|
|
544
|
-
|
|
545
|
-
最終アーキテクチャ
|
|
546
|
-
|
|
547
|
-
Logical Model
|
|
548
|
-
│
|
|
549
|
-
▼
|
|
550
|
-
Model Mapping
|
|
551
|
-
│
|
|
552
|
-
▼
|
|
553
|
-
Access Pattern Contract
|
|
554
|
-
│
|
|
555
|
-
▼
|
|
556
|
-
Composition IR
|
|
557
|
-
(API Graph + Assembly)
|
|
558
|
-
│
|
|
559
|
-
▼
|
|
560
|
-
SQL IR
|
|
561
|
-
(Condition / Placeholder / SQL Template)
|
|
562
|
-
│
|
|
563
|
-
▼
|
|
564
|
-
Dialect SQL
|
|
565
|
-
(PostgreSQL/MySQL/SQLite)
|
|
566
|
-
│
|
|
567
|
-
▼
|
|
568
|
-
Runtime
|
|
569
|
-
(Bind / Execute / Assemble)
|
|
570
|
-
|
|
571
|
-
中心思想
|
|
572
|
-
|
|
573
|
-
* 論理モデルを公開契約とする
|
|
574
|
-
* SQLを隠蔽しない
|
|
575
|
-
* 実行計画は契約から導出する
|
|
576
|
-
* Transactionは公開せず導出する
|
|
577
|
-
* SKIP・Condition・Relationを契約化する
|
|
578
|
-
* Compile時に可能な限り静的解析し、Runtimeでは最小限の動的解決のみ行う
|
|
579
|
-
* 多言語 Runtime は同一 Contract を実行するだけの薄い実装とする
|