@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,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonDataSource = exports.JsonEntityManager = exports.sqlTableFor = void 0;
4
+ exports.getJsonDataSource = getJsonDataSource;
5
+ exports.resetJsonDataSourceForTest = resetJsonDataSourceForTest;
6
+ /**
7
+ * JSON 回退存储:DataSource / EntityManager 垫片(json-fallback-storage 规格)
8
+ *
9
+ * 覆盖 `src/store/*` 与 `src/service/*` 实际使用的 DataSource API:
10
+ * - getRepository(Entity | '表名')
11
+ * - query(sql, params?):原始 SQL(含位置/命名参数)经内存求值器执行
12
+ * - transaction(fn):JSON 存储无跨表事务语义(文件级原子写),直接透传
13
+ * - manager:save(实体)/getRepository/query/transaction(chat.store、
14
+ * observability.service 的事务回调用法)
15
+ * - createQueryBuilder(alias?):DS 级 QB(insert().into(Entity) 形态)
16
+ * - createQueryRunner():hasTable/createTable 等 DDL 探测为 no-op(JSON 无 schema)
17
+ * - isInitialized:恒 true
18
+ */
19
+ const json_sql_ts_1 = require("./json-sql.js");
20
+ const json_collection_ts_1 = require("./json-collection.js");
21
+ const json_entity_meta_ts_1 = require("./json-entity-meta.js");
22
+ const json_repository_ts_1 = require("./json-repository.js");
23
+ const json_query_builder_ts_1 = require("./json-query-builder.js");
24
+ /** 表名 → { meta, collection };未知表返回 null(fail-loud) */
25
+ const sqlTableFor = (tableName) => {
26
+ const meta = (0, json_entity_meta_ts_1.resolveEntityMetaByTable)(tableName);
27
+ if (meta)
28
+ return { meta, collection: (0, json_collection_ts_1.getCollection)(tableName, meta) };
29
+ if ((0, json_entity_meta_ts_1.isNonEntityTable)(tableName)) {
30
+ return { meta: null, collection: (0, json_collection_ts_1.getCollection)(tableName, null) };
31
+ }
32
+ return null;
33
+ };
34
+ exports.sqlTableFor = sqlTableFor;
35
+ class JsonEntityManager {
36
+ ds;
37
+ constructor(ds) {
38
+ this.ds = ds;
39
+ }
40
+ getRepository(target) {
41
+ return this.ds.getRepository(target);
42
+ }
43
+ /** save(实体 | 实体数组) 或 save(Entity, 实体 | 实体数组) */
44
+ async save(targetOrEntity, maybeEntity) {
45
+ return this.ds.save(targetOrEntity, maybeEntity);
46
+ }
47
+ async query(sql, params) {
48
+ return this.ds.query(sql, params);
49
+ }
50
+ async transaction(fn) {
51
+ // JSON 存储无跨表事务:文件级 tmp+rename 原子写,回调直接透传
52
+ return fn(this);
53
+ }
54
+ createQueryBuilder(alias) {
55
+ return this.ds.createQueryBuilder(alias);
56
+ }
57
+ }
58
+ exports.JsonEntityManager = JsonEntityManager;
59
+ class JsonDataSource {
60
+ isInitialized = true;
61
+ manager = new JsonEntityManager(this);
62
+ getRepository(target) {
63
+ return (0, json_repository_ts_1.createJsonRepository)(target, exports.sqlTableFor);
64
+ }
65
+ async query(sql, params) {
66
+ return (0, json_sql_ts_1.executeRawQuery)(sql, params, exports.sqlTableFor);
67
+ }
68
+ /** EntityManager.save 语义:按实体构造器分组落库 */
69
+ async save(targetOrEntity, maybeEntity) {
70
+ const hasTarget = maybeEntity !== undefined && maybeEntity !== null;
71
+ const entities = (hasTarget ? maybeEntity : targetOrEntity);
72
+ const target = hasTarget ? targetOrEntity : undefined;
73
+ const list = Array.isArray(entities) ? entities : [entities];
74
+ if (list.length === 0)
75
+ return Array.isArray(entities) ? [] : undefined;
76
+ const groups = new Map();
77
+ for (const e of list) {
78
+ const ctor = (target ?? e?.constructor);
79
+ if (!ctor || ctor === Object) {
80
+ throw new Error('[json-storage] manager.save 无法识别实体构造器,请使用 save(Entity, row) 形式');
81
+ }
82
+ const bucket = groups.get(ctor) ?? [];
83
+ bucket.push(e);
84
+ groups.set(ctor, bucket);
85
+ }
86
+ const out = [];
87
+ for (const [ctor, rows] of groups) {
88
+ const repo = this.getRepository(ctor);
89
+ const saved = await repo.save(rows);
90
+ out.push(...(Array.isArray(saved) ? saved : [saved]));
91
+ }
92
+ return Array.isArray(entities) ? out : out[0];
93
+ }
94
+ async transaction(fn) {
95
+ return this.manager.transaction(fn);
96
+ }
97
+ /** DS 级 QueryBuilder:无表(insert().into(Entity) 后置)或带别名 */
98
+ createQueryBuilder(alias) {
99
+ return new json_query_builder_ts_1.JsonQueryBuilder(undefined, alias ?? '', exports.sqlTableFor);
100
+ }
101
+ /**
102
+ * DDL 探测 no-op(JSON 存储无 schema;hasTable 恒 true 跳过建表)。
103
+ * 注意:transaction 系列方法均为 no-op,不提供跨表/跨语句原子性与回滚——
104
+ * 仅用于 schema 探测路径,勿在依赖事务语义的代码中使用(JSON 模式仅保证单行文件级原子写)。
105
+ */
106
+ createQueryRunner() {
107
+ return {
108
+ connect: async () => undefined,
109
+ release: async () => undefined,
110
+ startTransaction: async () => undefined,
111
+ commitTransaction: async () => undefined,
112
+ rollbackTransaction: async () => undefined,
113
+ hasTable: async () => true,
114
+ createTable: async () => undefined,
115
+ query: async (sql, params) => this.query(sql, params),
116
+ };
117
+ }
118
+ }
119
+ exports.JsonDataSource = JsonDataSource;
120
+ let facade = null;
121
+ /** 进程级单例('default' 数据源) */
122
+ function getJsonDataSource() {
123
+ if (!facade)
124
+ facade = new JsonDataSource();
125
+ return facade;
126
+ }
127
+ /** 测试隔离:重置单例(配合集合 clear() 清空数据) */
128
+ function resetJsonDataSourceForTest() {
129
+ facade = null;
130
+ }
131
+ //# sourceMappingURL=json-datasource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-datasource.js","sourceRoot":"","sources":["../../src/json-datasource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export interface JsonEntityColumn {
2
+ propertyName: string;
3
+ columnName: string;
4
+ mode: string;
5
+ type: string;
6
+ }
7
+ export interface JsonEntityMeta {
8
+ target: Function;
9
+ tableName: string;
10
+ columns: JsonEntityColumn[];
11
+ /** 数据库列名 → 属性名 */
12
+ columnByDbName: Map<string, string>;
13
+ /** 属性名 → 数据库列名 */
14
+ columnByProperty: Map<string, string>;
15
+ primaryProperty?: string;
16
+ /** 主键是否自增(`@PrimaryGeneratedColumn`) */
17
+ primaryGenerated: boolean;
18
+ /** `@CreateDateColumn` 属性(如 createTime) */
19
+ createdAtProperty?: string;
20
+ /** `@UpdateDateColumn` 属性(如 modifyTime) */
21
+ updatedAtProperty?: string;
22
+ /** datetime/timestamp/date 类型列(读取时还原为 Date) */
23
+ datetimeProperties: Set<string>;
24
+ /** 唯一索引(属性名组),供 ON DUPLICATE KEY UPDATE 冲突检测 */
25
+ uniqueIndexes: string[][];
26
+ }
27
+ /**
28
+ * 解析实体元数据。入参可为实体类或表名(如 `getRepository('t_ai_obs_trace')`)。
29
+ * 未知表返回 null(调用方按"非实体表"处理)。
30
+ */
31
+ export declare function resolveEntityMeta(targetOrTable: Function | string): JsonEntityMeta | null;
32
+ /** 按表名解析元数据;未知表返回 null */
33
+ export declare function resolveEntityMetaByTable(tableName: string): JsonEntityMeta | null;
34
+ /** 非实体表的主键列(无注册时返回 undefined) */
35
+ export declare function getNonEntityPrimaryColumn(tableName: string): string | undefined;
36
+ /** 非实体表的唯一列组(原始列名) */
37
+ export declare function getNonEntityUniqueColumns(tableName: string): string[][];
38
+ /** 是否为已知非实体表(仅经原始 SQL 访问) */
39
+ export declare function isNonEntityTable(tableName: string): boolean;
40
+ /** 全部非实体表名(information_schema 合成用) */
41
+ export declare function listNonEntityTables(): string[];
42
+ //# sourceMappingURL=json-entity-meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-entity-meta.d.ts","sourceRoot":"","sources":["../../src/json-entity-meta.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,kBAAkB;IAClB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,kBAAkB;IAClB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,gDAAgD;IAChD,aAAa,EAAE,MAAM,EAAE,EAAE,CAAC;CAC3B;AAeD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,IAAI,CA8EzF;AAED,0BAA0B;AAC1B,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAEjF;AAED,iCAAiC;AACjC,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE/E;AAED,sBAAsB;AACtB,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAEvE;AAED,6BAA6B;AAC7B,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,sCAAsC;AACtC,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveEntityMeta = resolveEntityMeta;
4
+ exports.resolveEntityMetaByTable = resolveEntityMetaByTable;
5
+ exports.getNonEntityPrimaryColumn = getNonEntityPrimaryColumn;
6
+ exports.getNonEntityUniqueColumns = getNonEntityUniqueColumns;
7
+ exports.isNonEntityTable = isNonEntityTable;
8
+ exports.listNonEntityTables = listNonEntityTables;
9
+ /**
10
+ * JSON 回退存储:实体元数据解析(json-fallback-storage 规格)
11
+ *
12
+ * 复用 TypeORM 装饰器注册的元数据(`getMetadataArgsStorage()`,随实体类 import
13
+ * 由 reflect-metadata 自动填充),推导:
14
+ * - 表名(`@Entity('t_xxx')`)
15
+ * - 列名 → 属性名映射(`@Column({ name: 'Fxxx' })`,含基类 BaseEntity 继承列)
16
+ * - 主键属性(`@PrimaryColumn` / `@PrimaryGeneratedColumn`)
17
+ * - 自动时间列(`@CreateDateColumn` → createTime / `@UpdateDateColumn` → modifyTime)
18
+ *
19
+ * JSON 行以**属性名**为键落盘;原始 SQL / QueryBuilder 字符串里的数据库列名
20
+ * (`Fxxx`、`lock_name` 等)经本模块映射回属性键。
21
+ */
22
+ const typeorm_1 = require("typeorm");
23
+ const json_config_ts_1 = require("./json-config.js");
24
+ const metaCache = new Map();
25
+ /** 实体原型链上的全部构造函数(含自身,用于收集基类 BaseEntity 的列) */
26
+ function ancestorChain(target) {
27
+ const chain = new Set();
28
+ let cur = target;
29
+ while (cur && cur !== Object && cur !== Function) {
30
+ chain.add(cur);
31
+ cur = Object.getPrototypeOf(cur);
32
+ }
33
+ return chain;
34
+ }
35
+ /**
36
+ * 解析实体元数据。入参可为实体类或表名(如 `getRepository('t_ai_obs_trace')`)。
37
+ * 未知表返回 null(调用方按"非实体表"处理)。
38
+ */
39
+ function resolveEntityMeta(targetOrTable) {
40
+ const cacheKey = typeof targetOrTable === 'string' ? targetOrTable : targetOrTable.name;
41
+ if (metaCache.has(cacheKey))
42
+ return metaCache.get(cacheKey);
43
+ const storage = (0, typeorm_1.getMetadataArgsStorage)();
44
+ let tableArg;
45
+ if (typeof targetOrTable === 'string') {
46
+ tableArg = storage.tables.find(t => t.name === targetOrTable);
47
+ }
48
+ else {
49
+ tableArg = storage.tables.find(t => t.target === targetOrTable);
50
+ }
51
+ if (!tableArg) {
52
+ metaCache.set(cacheKey, null);
53
+ return null;
54
+ }
55
+ const chain = ancestorChain(tableArg.target);
56
+ const columnArgs = storage.columns.filter(c => chain.has(c.target));
57
+ const columns = columnArgs.map(c => ({
58
+ propertyName: c.propertyName,
59
+ columnName: c.options?.name || c.propertyName,
60
+ mode: c.mode || 'regular',
61
+ type: typeof c.options?.type === 'string' ? c.options.type : typeof c.options?.type === 'function' ? '' : String(c.options?.type ?? ''),
62
+ }));
63
+ const meta = {
64
+ target: tableArg.target,
65
+ tableName: tableArg.name ?? '',
66
+ columns,
67
+ columnByDbName: new Map(columns.map(c => [c.columnName, c.propertyName])),
68
+ columnByProperty: new Map(columns.map(c => [c.propertyName, c.columnName])),
69
+ primaryGenerated: false,
70
+ datetimeProperties: new Set(columns
71
+ .filter(c => ['datetime', 'timestamp', 'date'].includes(c.type) ||
72
+ // @CreateDateColumn/@UpdateDateColumn 装饰器不补默认 type,
73
+ // 但 TypeORM 语义上即 datetime 列
74
+ c.mode === 'createDate' ||
75
+ c.mode === 'updateDate')
76
+ .map(c => c.propertyName)),
77
+ uniqueIndexes: [],
78
+ };
79
+ // TypeORM 装饰器注册形态:@PrimaryColumn/@PrimaryGeneratedColumn 均为
80
+ // mode 'regular' + options.primary = true;自增策略在 generations 数组
81
+ const primaryIdx = columnArgs.findIndex(c => c.options?.primary === true);
82
+ if (primaryIdx >= 0) {
83
+ const primary = columns[primaryIdx];
84
+ meta.primaryProperty = primary.propertyName;
85
+ // @PrimaryGeneratedColumn 会向 generations 注册策略(increment/uuid/...);@PrimaryColumn 不会
86
+ meta.primaryGenerated = storage.generations.some(g => chain.has(g.target) && g.propertyName === primary.propertyName);
87
+ }
88
+ const created = columns.find(c => c.mode === 'createDate');
89
+ if (created)
90
+ meta.createdAtProperty = created.propertyName;
91
+ const updated = columns.find(c => c.mode === 'updateDate');
92
+ if (updated)
93
+ meta.updatedAtProperty = updated.propertyName;
94
+ // 唯一索引(@Index(..., { unique: true }),含基类;columns 为属性名)
95
+ for (const idx of storage.indices) {
96
+ if (!idx.unique)
97
+ continue;
98
+ if (!chain.has(idx.target))
99
+ continue;
100
+ const props = idx.columns.map(col => typeof col === 'function' ? '' : String(col));
101
+ if (props.length > 0 && props.every(p => meta.columnByProperty.has(p))) {
102
+ meta.uniqueIndexes.push(props);
103
+ }
104
+ }
105
+ metaCache.set(cacheKey, meta);
106
+ return meta;
107
+ }
108
+ /** 按表名解析元数据;未知表返回 null */
109
+ function resolveEntityMetaByTable(tableName) {
110
+ return resolveEntityMeta(tableName);
111
+ }
112
+ /** 非实体表的主键列(无注册时返回 undefined) */
113
+ function getNonEntityPrimaryColumn(tableName) {
114
+ return (0, json_config_ts_1.getNonEntityTables)()[tableName]?.primaryColumn;
115
+ }
116
+ /** 非实体表的唯一列组(原始列名) */
117
+ function getNonEntityUniqueColumns(tableName) {
118
+ return (0, json_config_ts_1.getNonEntityTables)()[tableName]?.uniqueColumns ?? [];
119
+ }
120
+ /** 是否为已知非实体表(仅经原始 SQL 访问) */
121
+ function isNonEntityTable(tableName) {
122
+ return !!(0, json_config_ts_1.getNonEntityTables)()[tableName];
123
+ }
124
+ /** 全部非实体表名(information_schema 合成用) */
125
+ function listNonEntityTables() {
126
+ return Object.keys((0, json_config_ts_1.getNonEntityTables)());
127
+ }
128
+ //# sourceMappingURL=json-entity-meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-entity-meta.js","sourceRoot":"","sources":["../../src/json-entity-meta.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import type { GetSqlTable } from './json-sql-shared.js';
2
+ import type { JsonRow } from './json-collection.js';
3
+ export declare class JsonQueryBuilder {
4
+ private getSqlTable;
5
+ private mode;
6
+ private table?;
7
+ private meta;
8
+ private alias;
9
+ private selects;
10
+ private distinctFlag;
11
+ private conds;
12
+ private orders;
13
+ private groups;
14
+ private joinsDef;
15
+ private skipCount?;
16
+ private takeCount?;
17
+ private limitCount?;
18
+ private offsetCount?;
19
+ private named;
20
+ private updateSet?;
21
+ private insertRows;
22
+ private findOptionsWhere?;
23
+ private findOptionsOrder?;
24
+ private findOptionsSelect?;
25
+ private paramSeed;
26
+ constructor(table: string | undefined, alias: string, getSqlTable: GetSqlTable);
27
+ private setTable;
28
+ private entityTable;
29
+ select(selection: string | string[], selectionAlias?: string): this;
30
+ addSelect(selection: string | string[], selectionAlias?: string): this;
31
+ private composeSelect;
32
+ distinct(flag?: boolean): this;
33
+ from(entity: Function, alias: string): this;
34
+ leftJoin(entity: Function, alias: string, on: string): this;
35
+ innerJoin(entity: Function, alias: string, on: string): this;
36
+ where(where: string | Record<string, unknown>, params?: Record<string, unknown>): this;
37
+ andWhere(where: string | Record<string, unknown>, params?: Record<string, unknown>): this;
38
+ orWhere(where: string | Record<string, unknown>, params?: Record<string, unknown>): this;
39
+ private pushCond;
40
+ setFindOptions(options: {
41
+ where?: Record<string, unknown> | Array<Record<string, unknown>>;
42
+ order?: Record<string, 'ASC' | 'DESC'>;
43
+ skip?: number;
44
+ take?: number;
45
+ select?: string[];
46
+ }): this;
47
+ orderBy(sort: string, order?: 'ASC' | 'DESC'): this;
48
+ addOrderBy(sort: string, order?: 'ASC' | 'DESC'): this;
49
+ groupBy(groupBy: string): this;
50
+ addGroupBy(groupBy: string): this;
51
+ skip(skip: number): this;
52
+ take(take: number): this;
53
+ limit(limit: number): this;
54
+ offset(offset: number): this;
55
+ setParameter(key: string, value: unknown): this;
56
+ setParameters(parameters: Record<string, unknown>): this;
57
+ update(entity?: Function): this;
58
+ delete(): this;
59
+ insert(): this;
60
+ set(values: Record<string, unknown>): this;
61
+ into(entity: Function): this;
62
+ values(values: JsonRow | JsonRow[]): this;
63
+ private buildWhereClause;
64
+ private condToSql;
65
+ /** FindOptionsWhere 对象 → SQL(属性名 → `alias.列`,FindOperator 展开) */
66
+ private objectWhereToSql;
67
+ private predicateToSql;
68
+ private findOperatorToSql;
69
+ private nextParam;
70
+ /** 属性名或 DB 列名 → `alias.引用`(列名原样保留,由求值器经元数据映射) */
71
+ private columnRef;
72
+ private buildSelectSql;
73
+ getRawMany(): Promise<any[]>;
74
+ getRawOne(): Promise<any>;
75
+ getMany(): Promise<any[]>;
76
+ getOne(): Promise<any | null>;
77
+ getCount(): Promise<number>;
78
+ getManyAndCount(): Promise<[any[], number]>;
79
+ execute(): Promise<any>;
80
+ /** DB 列名键 → 实体属性名键(getMany 结果形态) */
81
+ private mapColumnsToProperties;
82
+ }
83
+ //# sourceMappingURL=json-query-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-query-builder.d.ts","sourceRoot":"","sources":["../../src/json-query-builder.ts"],"names":[],"mappings":"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"}