@cicctencent/json-orm 0.1.1

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.
Files changed (116) hide show
  1. package/README.md +154 -0
  2. package/dist/cjs/index.d.ts +25 -0
  3. package/dist/cjs/index.d.ts.map +1 -0
  4. package/dist/cjs/index.js +66 -0
  5. package/dist/cjs/index.js.map +1 -0
  6. package/dist/cjs/json-backend-fs.d.ts +26 -0
  7. package/dist/cjs/json-backend-fs.d.ts.map +1 -0
  8. package/dist/cjs/json-backend-fs.js +278 -0
  9. package/dist/cjs/json-backend-fs.js.map +1 -0
  10. package/dist/cjs/json-collection.d.ts +70 -0
  11. package/dist/cjs/json-collection.d.ts.map +1 -0
  12. package/dist/cjs/json-collection.js +385 -0
  13. package/dist/cjs/json-collection.js.map +1 -0
  14. package/dist/cjs/json-config.d.ts +87 -0
  15. package/dist/cjs/json-config.d.ts.map +1 -0
  16. package/dist/cjs/json-config.js +77 -0
  17. package/dist/cjs/json-config.js.map +1 -0
  18. package/dist/cjs/json-datasource.d.ts +35 -0
  19. package/dist/cjs/json-datasource.d.ts.map +1 -0
  20. package/dist/cjs/json-datasource.js +131 -0
  21. package/dist/cjs/json-datasource.js.map +1 -0
  22. package/dist/cjs/json-entity-meta.d.ts +42 -0
  23. package/dist/cjs/json-entity-meta.d.ts.map +1 -0
  24. package/dist/cjs/json-entity-meta.js +128 -0
  25. package/dist/cjs/json-entity-meta.js.map +1 -0
  26. package/dist/cjs/json-query-builder.d.ts +83 -0
  27. package/dist/cjs/json-query-builder.d.ts.map +1 -0
  28. package/dist/cjs/json-query-builder.js +477 -0
  29. package/dist/cjs/json-query-builder.js.map +1 -0
  30. package/dist/cjs/json-repository.d.ts +59 -0
  31. package/dist/cjs/json-repository.d.ts.map +1 -0
  32. package/dist/cjs/json-repository.js +309 -0
  33. package/dist/cjs/json-repository.js.map +1 -0
  34. package/dist/cjs/json-sql-expr.d.ts +107 -0
  35. package/dist/cjs/json-sql-expr.d.ts.map +1 -0
  36. package/dist/cjs/json-sql-expr.js +857 -0
  37. package/dist/cjs/json-sql-expr.js.map +1 -0
  38. package/dist/cjs/json-sql-select.d.ts +9 -0
  39. package/dist/cjs/json-sql-select.d.ts.map +1 -0
  40. package/dist/cjs/json-sql-select.js +434 -0
  41. package/dist/cjs/json-sql-select.js.map +1 -0
  42. package/dist/cjs/json-sql-shared.d.ts +16 -0
  43. package/dist/cjs/json-sql-shared.d.ts.map +1 -0
  44. package/dist/cjs/json-sql-shared.js +12 -0
  45. package/dist/cjs/json-sql-shared.js.map +1 -0
  46. package/dist/cjs/json-sql.d.ts +8 -0
  47. package/dist/cjs/json-sql.d.ts.map +1 -0
  48. package/dist/cjs/json-sql.js +322 -0
  49. package/dist/cjs/json-sql.js.map +1 -0
  50. package/dist/cjs/json-where.d.ts +54 -0
  51. package/dist/cjs/json-where.d.ts.map +1 -0
  52. package/dist/cjs/json-where.js +352 -0
  53. package/dist/cjs/json-where.js.map +1 -0
  54. package/dist/cjs/package.json +3 -0
  55. package/dist/esm/index.d.ts +25 -0
  56. package/dist/esm/index.d.ts.map +1 -0
  57. package/dist/esm/index.js +26 -0
  58. package/dist/esm/index.js.map +1 -0
  59. package/dist/esm/json-backend-fs.d.ts +26 -0
  60. package/dist/esm/json-backend-fs.d.ts.map +1 -0
  61. package/dist/esm/json-backend-fs.js +241 -0
  62. package/dist/esm/json-backend-fs.js.map +1 -0
  63. package/dist/esm/json-collection.d.ts +70 -0
  64. package/dist/esm/json-collection.d.ts.map +1 -0
  65. package/dist/esm/json-collection.js +346 -0
  66. package/dist/esm/json-collection.js.map +1 -0
  67. package/dist/esm/json-config.d.ts +87 -0
  68. package/dist/esm/json-config.d.ts.map +1 -0
  69. package/dist/esm/json-config.js +69 -0
  70. package/dist/esm/json-config.js.map +1 -0
  71. package/dist/esm/json-datasource.d.ts +35 -0
  72. package/dist/esm/json-datasource.d.ts.map +1 -0
  73. package/dist/esm/json-datasource.js +123 -0
  74. package/dist/esm/json-datasource.js.map +1 -0
  75. package/dist/esm/json-entity-meta.d.ts +42 -0
  76. package/dist/esm/json-entity-meta.d.ts.map +1 -0
  77. package/dist/esm/json-entity-meta.js +120 -0
  78. package/dist/esm/json-entity-meta.js.map +1 -0
  79. package/dist/esm/json-query-builder.d.ts +83 -0
  80. package/dist/esm/json-query-builder.d.ts.map +1 -0
  81. package/dist/esm/json-query-builder.js +473 -0
  82. package/dist/esm/json-query-builder.js.map +1 -0
  83. package/dist/esm/json-repository.d.ts +59 -0
  84. package/dist/esm/json-repository.d.ts.map +1 -0
  85. package/dist/esm/json-repository.js +304 -0
  86. package/dist/esm/json-repository.js.map +1 -0
  87. package/dist/esm/json-sql-expr.d.ts +107 -0
  88. package/dist/esm/json-sql-expr.d.ts.map +1 -0
  89. package/dist/esm/json-sql-expr.js +847 -0
  90. package/dist/esm/json-sql-expr.js.map +1 -0
  91. package/dist/esm/json-sql-select.d.ts +9 -0
  92. package/dist/esm/json-sql-select.d.ts.map +1 -0
  93. package/dist/esm/json-sql-select.js +429 -0
  94. package/dist/esm/json-sql-select.js.map +1 -0
  95. package/dist/esm/json-sql-shared.d.ts +16 -0
  96. package/dist/esm/json-sql-shared.d.ts.map +1 -0
  97. package/dist/esm/json-sql-shared.js +9 -0
  98. package/dist/esm/json-sql-shared.js.map +1 -0
  99. package/dist/esm/json-sql.d.ts +8 -0
  100. package/dist/esm/json-sql.d.ts.map +1 -0
  101. package/dist/esm/json-sql.js +319 -0
  102. package/dist/esm/json-sql.js.map +1 -0
  103. package/dist/esm/json-where.d.ts +54 -0
  104. package/dist/esm/json-where.d.ts.map +1 -0
  105. package/dist/esm/json-where.js +342 -0
  106. package/dist/esm/json-where.js.map +1 -0
  107. package/dist/esm/package.json +3 -0
  108. package/examples/01-basic-entity.ts +89 -0
  109. package/examples/02-query-builder.ts +114 -0
  110. package/examples/03-raw-sql.ts +105 -0
  111. package/examples/04-non-entity-table.ts +70 -0
  112. package/examples/05-custom-backend.ts +145 -0
  113. package/examples/06-find-operators.ts +75 -0
  114. package/examples/README.md +73 -0
  115. package/examples/tsconfig.json +20 -0
  116. package/package.json +53 -0
@@ -0,0 +1,477 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonQueryBuilder = void 0;
4
+ const json_sql_ts_1 = require("./json-sql.js");
5
+ const json_entity_meta_ts_1 = require("./json-entity-meta.js");
6
+ const json_where_ts_1 = require("./json-where.js");
7
+ class JsonQueryBuilder {
8
+ getSqlTable;
9
+ mode = 'select';
10
+ table;
11
+ meta = null;
12
+ alias;
13
+ selects = [];
14
+ distinctFlag = false;
15
+ conds = [];
16
+ orders = [];
17
+ groups = [];
18
+ joinsDef = [];
19
+ skipCount;
20
+ takeCount;
21
+ limitCount;
22
+ offsetCount;
23
+ named = {};
24
+ updateSet;
25
+ insertRows = [];
26
+ findOptionsWhere;
27
+ findOptionsOrder;
28
+ findOptionsSelect;
29
+ paramSeed = 0;
30
+ constructor(table, alias, getSqlTable) {
31
+ this.getSqlTable = getSqlTable;
32
+ this.alias = alias;
33
+ if (table)
34
+ this.setTable(table);
35
+ }
36
+ setTable(table) {
37
+ this.table = table;
38
+ const t = this.getSqlTable(table);
39
+ this.meta = t?.meta ?? null;
40
+ }
41
+ entityTable(entity) {
42
+ const meta = (0, json_entity_meta_ts_1.resolveEntityMeta)(entity);
43
+ if (!meta) {
44
+ throw new Error(`[json-storage] QueryBuilder 实体未注册 @Entity:${entity.name}`);
45
+ }
46
+ return meta.tableName;
47
+ }
48
+ // ---------------- 链式 API ----------------
49
+ select(selection, selectionAlias) {
50
+ this.selects = this.composeSelect(selection, selectionAlias);
51
+ return this;
52
+ }
53
+ addSelect(selection, selectionAlias) {
54
+ this.selects.push(...this.composeSelect(selection, selectionAlias));
55
+ return this;
56
+ }
57
+ composeSelect(selection, selectionAlias) {
58
+ if (Array.isArray(selection))
59
+ return [...selection];
60
+ return selectionAlias ? [`${selection} AS ${selectionAlias}`] : [selection];
61
+ }
62
+ distinct(flag = true) {
63
+ this.distinctFlag = flag;
64
+ return this;
65
+ }
66
+ from(entity, alias) {
67
+ this.alias = alias;
68
+ this.setTable(this.entityTable(entity));
69
+ return this;
70
+ }
71
+ leftJoin(entity, alias, on) {
72
+ this.joinsDef.push({ table: this.entityTable(entity), alias, on, type: 'LEFT' });
73
+ return this;
74
+ }
75
+ innerJoin(entity, alias, on) {
76
+ this.joinsDef.push({ table: this.entityTable(entity), alias, on, type: 'INNER' });
77
+ return this;
78
+ }
79
+ where(where, params) {
80
+ return this.pushCond(where, params, 'AND');
81
+ }
82
+ andWhere(where, params) {
83
+ return this.pushCond(where, params, 'AND');
84
+ }
85
+ orWhere(where, params) {
86
+ return this.pushCond(where, params, 'OR');
87
+ }
88
+ pushCond(where, params, joiner) {
89
+ if (typeof where === 'string') {
90
+ this.conds.push({ sql: where, params, joiner });
91
+ }
92
+ else {
93
+ this.conds.push({ object: where, joiner });
94
+ }
95
+ return this;
96
+ }
97
+ setFindOptions(options) {
98
+ if (options.where)
99
+ this.findOptionsWhere = options.where;
100
+ if (options.order)
101
+ this.findOptionsOrder = options.order;
102
+ if (options.skip !== undefined)
103
+ this.skipCount = options.skip;
104
+ if (options.take !== undefined)
105
+ this.takeCount = options.take;
106
+ if (options.select)
107
+ this.findOptionsSelect = options.select;
108
+ return this;
109
+ }
110
+ orderBy(sort, order = 'ASC') {
111
+ this.orders.push({ col: sort, dir: order });
112
+ return this;
113
+ }
114
+ addOrderBy(sort, order = 'ASC') {
115
+ this.orders.push({ col: sort, dir: order });
116
+ return this;
117
+ }
118
+ groupBy(groupBy) {
119
+ this.groups.push(groupBy);
120
+ return this;
121
+ }
122
+ addGroupBy(groupBy) {
123
+ this.groups.push(groupBy);
124
+ return this;
125
+ }
126
+ skip(skip) {
127
+ this.skipCount = skip;
128
+ return this;
129
+ }
130
+ take(take) {
131
+ this.takeCount = take;
132
+ return this;
133
+ }
134
+ limit(limit) {
135
+ this.limitCount = limit;
136
+ return this;
137
+ }
138
+ offset(offset) {
139
+ this.offsetCount = offset;
140
+ return this;
141
+ }
142
+ setParameter(key, value) {
143
+ this.named[key] = value;
144
+ return this;
145
+ }
146
+ setParameters(parameters) {
147
+ this.named = { ...this.named, ...parameters };
148
+ return this;
149
+ }
150
+ update(entity) {
151
+ // entity 参数可省略(repo 级 QB 已知表);显式传入时校验并切换表
152
+ if (entity) {
153
+ this.setTable(this.entityTable(entity));
154
+ }
155
+ this.mode = 'update';
156
+ return this;
157
+ }
158
+ delete() {
159
+ this.mode = 'delete';
160
+ return this;
161
+ }
162
+ insert() {
163
+ this.mode = 'insert';
164
+ return this;
165
+ }
166
+ set(values) {
167
+ this.updateSet = values;
168
+ return this;
169
+ }
170
+ into(entity) {
171
+ this.setTable(this.entityTable(entity));
172
+ return this;
173
+ }
174
+ values(values) {
175
+ this.insertRows = Array.isArray(values) ? values : [values];
176
+ return this;
177
+ }
178
+ // ---------------- SQL 组装 ----------------
179
+ buildWhereClause() {
180
+ const params = { ...this.named };
181
+ // 按链式调用顺序分段:连续 AND 归入同一段,遇 OR 开启新段
182
+ // (此前把所有 AND / OR 分桶重组,会丢弃调用顺序:
183
+ // where(A).andWhere(B).orWhere(C).andWhere(D) 被拼成 (A AND B AND D) OR C)
184
+ const groups = [];
185
+ for (const cond of this.conds) {
186
+ const piece = this.condToSql(cond, params);
187
+ if (!piece)
188
+ continue;
189
+ if (cond.joiner === 'OR' || groups.length === 0)
190
+ groups.push([piece]);
191
+ else
192
+ groups[groups.length - 1].push(piece);
193
+ }
194
+ if (this.findOptionsWhere) {
195
+ const piece = this.objectWhereToSql(this.findOptionsWhere, params);
196
+ if (piece) {
197
+ // FindOptions 条件固定以 AND 追加在链式条件之后
198
+ if (groups.length === 0)
199
+ groups.push([piece]);
200
+ else
201
+ groups[groups.length - 1].push(piece);
202
+ }
203
+ }
204
+ const sql = groups.map(g => (g.length > 1 ? `(${g.join(' AND ')})` : g[0])).join(' OR ');
205
+ return { sql, params };
206
+ }
207
+ condToSql(cond, params) {
208
+ if (cond.sql !== undefined) {
209
+ if (cond.params)
210
+ Object.assign(params, cond.params);
211
+ return cond.sql;
212
+ }
213
+ if (cond.object) {
214
+ return this.objectWhereToSql(cond.object, params);
215
+ }
216
+ return '';
217
+ }
218
+ /** FindOptionsWhere 对象 → SQL(属性名 → `alias.列`,FindOperator 展开) */
219
+ objectWhereToSql(where, params) {
220
+ const list = Array.isArray(where) ? where : [where];
221
+ const ors = list.map(w => {
222
+ const ands = [];
223
+ for (const [prop, value] of Object.entries(w)) {
224
+ ands.push(this.predicateToSql(prop, value, params));
225
+ }
226
+ return ands.length > 0 ? (ands.length > 1 ? `(${ands.join(' AND ')})` : ands[0]) : '';
227
+ });
228
+ const sql = ors.filter(Boolean).join(' OR ');
229
+ return ors.length > 1 && sql ? `(${sql})` : sql;
230
+ }
231
+ predicateToSql(prop, value, params) {
232
+ const col = this.columnRef(prop);
233
+ if ((0, json_where_ts_1.isFindOperator)(value)) {
234
+ return this.findOperatorToSql(col, value, params);
235
+ }
236
+ if (value === null) {
237
+ return `${col} IS NULL`;
238
+ }
239
+ const name = this.nextParam(params, value);
240
+ return `${col} = :${name}`;
241
+ }
242
+ findOperatorToSql(col, op, params) {
243
+ const type = op.type;
244
+ const value = op.value;
245
+ switch (type) {
246
+ case 'equal': {
247
+ if (value === null || value === undefined)
248
+ return `${col} IS NULL`;
249
+ return `${col} = :${this.nextParam(params, value)}`;
250
+ }
251
+ case 'not': {
252
+ // TypeORM FindOperator.value 是解包后的最终值;内层操作数须取 op.child
253
+ const child = op.child;
254
+ if (child)
255
+ return `NOT (${this.findOperatorToSql(col, child, params)})`;
256
+ const name = this.nextParam(params, op.value);
257
+ return `NOT (${col} = :${name})`;
258
+ }
259
+ case 'like':
260
+ return `${col} LIKE :${this.nextParam(params, value)}`;
261
+ case 'ilike':
262
+ return `LOWER(${col}) LIKE :${this.nextParam(params, String(value).toLowerCase())}`;
263
+ case 'in': {
264
+ const arr = Array.isArray(value) ? value : [value];
265
+ const name = this.nextParam(params, arr);
266
+ return `${col} IN (:...${name})`;
267
+ }
268
+ case 'any': {
269
+ const arr = Array.isArray(value) ? value : [value];
270
+ const name = this.nextParam(params, arr);
271
+ return `${col} IN (:...${name})`;
272
+ }
273
+ case 'between': {
274
+ const pair = value;
275
+ const n1 = this.nextParam(params, pair[0]);
276
+ const n2 = this.nextParam(params, pair[1]);
277
+ return `${col} BETWEEN :${n1} AND :${n2}`;
278
+ }
279
+ case 'lessThan':
280
+ return `${col} < :${this.nextParam(params, value)}`;
281
+ case 'lessThanOrEqual':
282
+ return `${col} <= :${this.nextParam(params, value)}`;
283
+ case 'moreThan':
284
+ return `${col} > :${this.nextParam(params, value)}`;
285
+ case 'moreThanOrEqual':
286
+ return `${col} >= :${this.nextParam(params, value)}`;
287
+ case 'isNull':
288
+ return `${col} IS NULL`;
289
+ case 'raw':
290
+ throw new Error('[json-storage] QueryBuilder 对象条件不支持 FindOperator.raw,请改用 SQL 字符串条件');
291
+ default:
292
+ throw new Error(`[json-storage] QueryBuilder 不支持的 FindOperator 类型:${type}`);
293
+ }
294
+ }
295
+ nextParam(params, value) {
296
+ this.paramSeed += 1;
297
+ const name = `qb_p${this.paramSeed}`;
298
+ params[name] = value;
299
+ return name;
300
+ }
301
+ /** 属性名或 DB 列名 → `alias.引用`(列名原样保留,由求值器经元数据映射) */
302
+ columnRef(prop) {
303
+ if (prop.includes('.'))
304
+ return prop;
305
+ return `${this.alias}.${prop}`;
306
+ }
307
+ buildSelectSql(count = false) {
308
+ if (!this.table) {
309
+ throw new Error('[json-storage] QueryBuilder 缺少 FROM 表(from()/createQueryBuilder(alias))');
310
+ }
311
+ const { sql: whereSql, params } = this.buildWhereClause();
312
+ let selectItems;
313
+ if (count) {
314
+ selectItems = ['COUNT(*) AS cnt'];
315
+ }
316
+ else if (this.selects.length > 0) {
317
+ selectItems = this.selects;
318
+ }
319
+ else if (this.findOptionsSelect && this.findOptionsSelect.length > 0) {
320
+ selectItems = this.findOptionsSelect.map(s => this.columnRef(s));
321
+ }
322
+ else {
323
+ selectItems = [`${this.alias}.*`];
324
+ }
325
+ let sql = `SELECT ${this.distinctFlag && !count ? 'DISTINCT ' : ''}${selectItems.join(', ')}`;
326
+ sql += ` FROM ${this.table} ${this.alias}`;
327
+ for (const j of this.joinsDef) {
328
+ sql += ` ${j.type} JOIN ${j.table} ${j.alias} ON ${j.on}`;
329
+ }
330
+ if (whereSql)
331
+ sql += ` WHERE ${whereSql}`;
332
+ if (!count) {
333
+ if (this.groups.length > 0)
334
+ sql += ` GROUP BY ${this.groups.join(', ')}`;
335
+ const orders = [...this.orders];
336
+ if (this.findOptionsOrder) {
337
+ for (const [col, dir] of Object.entries(this.findOptionsOrder)) {
338
+ orders.push({ col: this.columnRef(col), dir });
339
+ }
340
+ }
341
+ if (orders.length > 0) {
342
+ sql += ` ORDER BY ${orders.map(o => `${o.col} ${o.dir}`).join(', ')}`;
343
+ }
344
+ const offset = this.skipCount ?? this.offsetCount;
345
+ const limit = this.takeCount ?? this.limitCount;
346
+ if (limit !== undefined || offset !== undefined) {
347
+ sql += ` LIMIT ${offset ?? 0}, ${limit !== undefined ? limit : 18446744073709551615}`;
348
+ }
349
+ }
350
+ return { sql, params };
351
+ }
352
+ // ---------------- 执行 ----------------
353
+ async getRawMany() {
354
+ const { sql, params } = this.buildSelectSql();
355
+ return (0, json_sql_ts_1.executeRawQuery)(sql, params, this.getSqlTable);
356
+ }
357
+ async getRawOne() {
358
+ const rows = await this.getRawMany();
359
+ return rows[0] ?? undefined;
360
+ }
361
+ async getMany() {
362
+ // 未显式 select 时投影主表全部列(或 findOptions.select 列),再映射回属性名
363
+ const explicit = this.selects.length > 0;
364
+ const rows = await this.getRawMany();
365
+ if (explicit)
366
+ return rows;
367
+ return rows.map(r => this.mapColumnsToProperties(r));
368
+ }
369
+ async getOne() {
370
+ const rows = await this.getMany();
371
+ return rows[0] ?? null;
372
+ }
373
+ async getCount() {
374
+ const { sql, params } = this.buildSelectSql(true);
375
+ const rows = await (0, json_sql_ts_1.executeRawQuery)(sql, params, this.getSqlTable);
376
+ return Number(rows[0]?.cnt ?? 0);
377
+ }
378
+ async getManyAndCount() {
379
+ const [many, count] = await Promise.all([this.getMany(), this.getCount()]);
380
+ return [many, count];
381
+ }
382
+ async execute() {
383
+ if (this.mode === 'update') {
384
+ if (!this.table || !this.updateSet) {
385
+ throw new Error('[json-storage] update 查询缺少 set()/表定义');
386
+ }
387
+ const { sql: whereSql, params } = this.buildWhereClause();
388
+ const sets = [];
389
+ let seed = 0;
390
+ const now = new Date();
391
+ const setEntries = { ...this.updateSet };
392
+ if (this.meta?.updatedAtProperty && !(this.meta.updatedAtProperty in setEntries)) {
393
+ setEntries[this.meta.updatedAtProperty] = now;
394
+ }
395
+ for (const [prop, value] of Object.entries(setEntries)) {
396
+ const col = this.meta?.columnByProperty.get(prop) ?? prop;
397
+ if (typeof value === 'function') {
398
+ // 函数值:返回原始 SQL 表达式(如 () => 'Fview_count + 1')
399
+ const raw = value();
400
+ sets.push(`${col} = ${raw}`);
401
+ continue;
402
+ }
403
+ seed += 1;
404
+ const name = `qb_s${seed}`;
405
+ params[name] = value;
406
+ sets.push(`${col} = :${name}`);
407
+ }
408
+ let sql = `UPDATE ${this.table} SET ${sets.join(', ')}`;
409
+ if (whereSql)
410
+ sql += ` WHERE ${whereSql}`;
411
+ const result = await (0, json_sql_ts_1.executeRawQuery)(sql, params, this.getSqlTable);
412
+ return { affected: result?.affectedRows ?? 0, raw: [] };
413
+ }
414
+ if (this.mode === 'delete') {
415
+ if (!this.table) {
416
+ throw new Error('[json-storage] delete 查询缺少表定义');
417
+ }
418
+ const { sql: whereSql, params } = this.buildWhereClause();
419
+ let sql = `DELETE FROM ${this.table}`;
420
+ if (whereSql)
421
+ sql += ` WHERE ${whereSql}`;
422
+ const result = await (0, json_sql_ts_1.executeRawQuery)(sql, params, this.getSqlTable);
423
+ return { affected: result?.affectedRows ?? 0, raw: [] };
424
+ }
425
+ if (this.mode === 'insert') {
426
+ if (!this.table || this.insertRows.length === 0) {
427
+ throw new Error('[json-storage] insert 查询缺少 into()/values()');
428
+ }
429
+ const now = new Date();
430
+ const rows = this.insertRows.map(r => {
431
+ const row = { ...r };
432
+ if (this.meta?.createdAtProperty && row[this.meta.createdAtProperty] === undefined) {
433
+ row[this.meta.createdAtProperty] = now;
434
+ }
435
+ if (this.meta?.updatedAtProperty && row[this.meta.updatedAtProperty] === undefined) {
436
+ row[this.meta.updatedAtProperty] = now;
437
+ }
438
+ return row;
439
+ });
440
+ // 列清单:以首行列并集为准
441
+ const propSet = [];
442
+ for (const row of rows) {
443
+ for (const k of Object.keys(row)) {
444
+ if (!propSet.includes(k))
445
+ propSet.push(k);
446
+ }
447
+ }
448
+ const columns = propSet.map(p => this.meta?.columnByProperty.get(p) ?? p);
449
+ const params = { ...this.named };
450
+ const tuples = rows.map((row, ri) => {
451
+ const placeholders = propSet.map((p, ci) => {
452
+ const name = `qb_i${ri}_${ci}`;
453
+ params[name] = row[p] ?? null;
454
+ return `:${name}`;
455
+ });
456
+ return `(${placeholders.join(', ')})`;
457
+ });
458
+ const sql = `INSERT INTO ${this.table} (${columns.join(', ')}) VALUES ${tuples.join(', ')}`;
459
+ const result = await (0, json_sql_ts_1.executeRawQuery)(sql, params, this.getSqlTable);
460
+ return { identifiers: [], generatedMaps: [], raw: result };
461
+ }
462
+ throw new Error('[json-storage] execute() 仅支持 update/delete/insert 模式');
463
+ }
464
+ /** DB 列名键 → 实体属性名键(getMany 结果形态) */
465
+ mapColumnsToProperties(row) {
466
+ if (!this.meta)
467
+ return row;
468
+ const out = {};
469
+ for (const [k, v] of Object.entries(row)) {
470
+ const prop = this.meta?.columnByDbName.get(k);
471
+ out[prop ?? k] = v;
472
+ }
473
+ return out;
474
+ }
475
+ }
476
+ exports.JsonQueryBuilder = JsonQueryBuilder;
477
+ //# sourceMappingURL=json-query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-query-builder.js","sourceRoot":"","sources":["../../src/json-query-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { GetSqlTable } from './json-sql-shared.js';
2
+ import type { JsonEntityMeta } from './json-entity-meta.js';
3
+ import type { JsonCollection, JsonRow } from './json-collection.js';
4
+ /** FindOptionsWhere(宽松类型:属性 → 值或 FindOperator) */
5
+ type LooseWhere = Record<string, unknown>;
6
+ type LooseCriteria = unknown;
7
+ export interface FindOptionsLoose {
8
+ where?: LooseWhere | LooseWhere[];
9
+ order?: Record<string, 'ASC' | 'DESC'>;
10
+ skip?: number;
11
+ take?: number;
12
+ select?: string[];
13
+ }
14
+ export declare class JsonRepository<Entity extends object = any> {
15
+ readonly meta: JsonEntityMeta | null;
16
+ readonly collection: JsonCollection;
17
+ private getSqlTable;
18
+ constructor(meta: JsonEntityMeta | null, collection: JsonCollection, getSqlTable: GetSqlTable);
19
+ find(options?: FindOptionsLoose): Promise<Entity[]>;
20
+ findBy(where: LooseWhere | LooseWhere[]): Promise<Entity[]>;
21
+ findOne(options?: FindOptionsLoose): Promise<Entity | null>;
22
+ findOneBy(where: LooseWhere): Promise<Entity | null>;
23
+ findAndCount(options?: FindOptionsLoose): Promise<[Entity[], number]>;
24
+ findAndCountBy(where: LooseWhere | LooseWhere[], options?: Omit<FindOptionsLoose, 'where'>): Promise<[Entity[], number]>;
25
+ count(options?: FindOptionsLoose): Promise<number>;
26
+ countBy(where: LooseWhere | LooseWhere[]): Promise<number>;
27
+ save<T extends JsonRow>(entity: T): Promise<T>;
28
+ save<T extends JsonRow>(entities: T[]): Promise<T[]>;
29
+ private saveOne;
30
+ update(criteria: LooseCriteria, partial: JsonRow): Promise<{
31
+ affected: number | null;
32
+ raw: unknown[];
33
+ generatedMaps: unknown[];
34
+ }>;
35
+ delete(criteria: LooseCriteria): Promise<{
36
+ affected: number | null;
37
+ raw: unknown[];
38
+ }>;
39
+ upsert(entities: JsonRow | JsonRow[], options?: {
40
+ conflictPaths?: string[];
41
+ }): Promise<{
42
+ identifiers: unknown[];
43
+ generatedMaps: unknown[];
44
+ raw: unknown[];
45
+ }>;
46
+ /** TypeORM create():仅构造实体实例,这里原样返回浅拷贝 */
47
+ create(entityLike?: JsonRow): any;
48
+ query(sql: string, params?: unknown[] | Record<string, unknown>): Promise<any>;
49
+ createQueryBuilder(alias?: string): any;
50
+ private selectRows;
51
+ private applyOrder;
52
+ private applyWindow;
53
+ private applySelect;
54
+ private selectByCriteria;
55
+ }
56
+ /** 为 DataSource 垫片构造 Repository(表名解析 + 集合单例) */
57
+ export declare function createJsonRepository(targetOrTable: Function | string, getSqlTable: GetSqlTable): JsonRepository;
58
+ export {};
59
+ //# sourceMappingURL=json-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-repository.d.ts","sourceRoot":"","sources":["../../src/json-repository.ts"],"names":[],"mappings":"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"}