@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.
- package/README.md +154 -0
- package/dist/cjs/index.d.ts +25 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +66 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/json-backend-fs.d.ts +26 -0
- package/dist/cjs/json-backend-fs.d.ts.map +1 -0
- package/dist/cjs/json-backend-fs.js +278 -0
- package/dist/cjs/json-backend-fs.js.map +1 -0
- package/dist/cjs/json-collection.d.ts +70 -0
- package/dist/cjs/json-collection.d.ts.map +1 -0
- package/dist/cjs/json-collection.js +385 -0
- package/dist/cjs/json-collection.js.map +1 -0
- package/dist/cjs/json-config.d.ts +87 -0
- package/dist/cjs/json-config.d.ts.map +1 -0
- package/dist/cjs/json-config.js +77 -0
- package/dist/cjs/json-config.js.map +1 -0
- package/dist/cjs/json-datasource.d.ts +35 -0
- package/dist/cjs/json-datasource.d.ts.map +1 -0
- package/dist/cjs/json-datasource.js +131 -0
- package/dist/cjs/json-datasource.js.map +1 -0
- package/dist/cjs/json-entity-meta.d.ts +42 -0
- package/dist/cjs/json-entity-meta.d.ts.map +1 -0
- package/dist/cjs/json-entity-meta.js +128 -0
- package/dist/cjs/json-entity-meta.js.map +1 -0
- package/dist/cjs/json-query-builder.d.ts +83 -0
- package/dist/cjs/json-query-builder.d.ts.map +1 -0
- package/dist/cjs/json-query-builder.js +477 -0
- package/dist/cjs/json-query-builder.js.map +1 -0
- package/dist/cjs/json-repository.d.ts +59 -0
- package/dist/cjs/json-repository.d.ts.map +1 -0
- package/dist/cjs/json-repository.js +309 -0
- package/dist/cjs/json-repository.js.map +1 -0
- package/dist/cjs/json-sql-expr.d.ts +107 -0
- package/dist/cjs/json-sql-expr.d.ts.map +1 -0
- package/dist/cjs/json-sql-expr.js +857 -0
- package/dist/cjs/json-sql-expr.js.map +1 -0
- package/dist/cjs/json-sql-select.d.ts +9 -0
- package/dist/cjs/json-sql-select.d.ts.map +1 -0
- package/dist/cjs/json-sql-select.js +434 -0
- package/dist/cjs/json-sql-select.js.map +1 -0
- package/dist/cjs/json-sql-shared.d.ts +16 -0
- package/dist/cjs/json-sql-shared.d.ts.map +1 -0
- package/dist/cjs/json-sql-shared.js +12 -0
- package/dist/cjs/json-sql-shared.js.map +1 -0
- package/dist/cjs/json-sql.d.ts +8 -0
- package/dist/cjs/json-sql.d.ts.map +1 -0
- package/dist/cjs/json-sql.js +322 -0
- package/dist/cjs/json-sql.js.map +1 -0
- package/dist/cjs/json-where.d.ts +54 -0
- package/dist/cjs/json-where.d.ts.map +1 -0
- package/dist/cjs/json-where.js +352 -0
- package/dist/cjs/json-where.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/esm/index.d.ts +25 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/json-backend-fs.d.ts +26 -0
- package/dist/esm/json-backend-fs.d.ts.map +1 -0
- package/dist/esm/json-backend-fs.js +241 -0
- package/dist/esm/json-backend-fs.js.map +1 -0
- package/dist/esm/json-collection.d.ts +70 -0
- package/dist/esm/json-collection.d.ts.map +1 -0
- package/dist/esm/json-collection.js +346 -0
- package/dist/esm/json-collection.js.map +1 -0
- package/dist/esm/json-config.d.ts +87 -0
- package/dist/esm/json-config.d.ts.map +1 -0
- package/dist/esm/json-config.js +69 -0
- package/dist/esm/json-config.js.map +1 -0
- package/dist/esm/json-datasource.d.ts +35 -0
- package/dist/esm/json-datasource.d.ts.map +1 -0
- package/dist/esm/json-datasource.js +123 -0
- package/dist/esm/json-datasource.js.map +1 -0
- package/dist/esm/json-entity-meta.d.ts +42 -0
- package/dist/esm/json-entity-meta.d.ts.map +1 -0
- package/dist/esm/json-entity-meta.js +120 -0
- package/dist/esm/json-entity-meta.js.map +1 -0
- package/dist/esm/json-query-builder.d.ts +83 -0
- package/dist/esm/json-query-builder.d.ts.map +1 -0
- package/dist/esm/json-query-builder.js +473 -0
- package/dist/esm/json-query-builder.js.map +1 -0
- package/dist/esm/json-repository.d.ts +59 -0
- package/dist/esm/json-repository.d.ts.map +1 -0
- package/dist/esm/json-repository.js +304 -0
- package/dist/esm/json-repository.js.map +1 -0
- package/dist/esm/json-sql-expr.d.ts +107 -0
- package/dist/esm/json-sql-expr.d.ts.map +1 -0
- package/dist/esm/json-sql-expr.js +847 -0
- package/dist/esm/json-sql-expr.js.map +1 -0
- package/dist/esm/json-sql-select.d.ts +9 -0
- package/dist/esm/json-sql-select.d.ts.map +1 -0
- package/dist/esm/json-sql-select.js +429 -0
- package/dist/esm/json-sql-select.js.map +1 -0
- package/dist/esm/json-sql-shared.d.ts +16 -0
- package/dist/esm/json-sql-shared.d.ts.map +1 -0
- package/dist/esm/json-sql-shared.js +9 -0
- package/dist/esm/json-sql-shared.js.map +1 -0
- package/dist/esm/json-sql.d.ts +8 -0
- package/dist/esm/json-sql.d.ts.map +1 -0
- package/dist/esm/json-sql.js +319 -0
- package/dist/esm/json-sql.js.map +1 -0
- package/dist/esm/json-where.d.ts +54 -0
- package/dist/esm/json-where.d.ts.map +1 -0
- package/dist/esm/json-where.js +342 -0
- package/dist/esm/json-where.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/examples/01-basic-entity.ts +89 -0
- package/examples/02-query-builder.ts +114 -0
- package/examples/03-raw-sql.ts +105 -0
- package/examples/04-non-entity-table.ts +70 -0
- package/examples/05-custom-backend.ts +145 -0
- package/examples/06-find-operators.ts +75 -0
- package/examples/README.md +73 -0
- package/examples/tsconfig.json +20 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-collection.js","sourceRoot":"","sources":["../../src/json-collection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON 存储引擎配置注入
|
|
3
|
+
*
|
|
4
|
+
* 引擎框架无关、业务解耦:不内置任何目录解析或表注册策略,接入方须在
|
|
5
|
+
* 首次访问前调用 `configureJsonStorage()` 注入存储根目录(必需)与非
|
|
6
|
+
* 实体表注册(可选)。未注入目录时引擎抛出明确错误,不静默回退。
|
|
7
|
+
*
|
|
8
|
+
* 存储 I/O 经可注入的 `JsonStorageBackend`(异步)完成,默认 `FsStorageBackend`
|
|
9
|
+
* (本地 JSON 文件);调用方亦可注入对象存储(COS/S3)等远程后端。
|
|
10
|
+
*/
|
|
11
|
+
/** 文件/目录 stat 结果(供跨进程缓存失效检测) */
|
|
12
|
+
export interface JsonStorageFileStat {
|
|
13
|
+
mtimeMs: number;
|
|
14
|
+
size: number;
|
|
15
|
+
/**
|
|
16
|
+
* 可选内容版本标识(如对象存储的 ETag/版本号)。
|
|
17
|
+
* 引擎失效判定优先比较 etag(任一侧提供即生效),两侧均无 etag 时回落 mtimeMs。
|
|
18
|
+
*/
|
|
19
|
+
etag?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 异步存储后端契约:引擎全部持久化 I/O 经此后端完成,不直接依赖 `fs`。
|
|
23
|
+
* `relPath` 为相对存储根的 `表/文件` 路径,由后端拼接根目录。
|
|
24
|
+
*/
|
|
25
|
+
export interface JsonStorageBackend {
|
|
26
|
+
/** 读文件;不存在返回 null */
|
|
27
|
+
readFile(relPath: string): Promise<string | null>;
|
|
28
|
+
/** 原子写:内部 tmp+rename,避免进程中断产生半截文件 */
|
|
29
|
+
writeFileAtomic(relPath: string, data: string): Promise<void>;
|
|
30
|
+
/** 列目录,返回文件名列表(调用方自行过滤 `.json` / `_meta.json`) */
|
|
31
|
+
readDir(relPath: string): Promise<string[]>;
|
|
32
|
+
/** 删文件(不存在忽略) */
|
|
33
|
+
deleteFile(relPath: string): Promise<void>;
|
|
34
|
+
/** 建目录(递归) */
|
|
35
|
+
mkdir(relPath: string): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* stat;文件/目录不存在返回 null。
|
|
38
|
+
* 对「表目录」的 stat MUST 返回能反映其内容变更的结果(失效检测依赖它):
|
|
39
|
+
* 对象存储无目录概念时,应合成 stat(如清单对象或最大 LastModified/版本号,
|
|
40
|
+
* 经 etag 提供更可靠);返回 null 即声明「不存在」,引擎视为无变更、不重载。
|
|
41
|
+
*/
|
|
42
|
+
stat(relPath: string): Promise<JsonStorageFileStat | null>;
|
|
43
|
+
/**
|
|
44
|
+
* 跨进程临界区互斥(lock 文件 `O_EXCL` 实现,失败退避重试)。
|
|
45
|
+
* 实现 MUST 支持孤儿锁回收(锁文件 mtime 超阈值视为持有者崩溃,强制回收重试);
|
|
46
|
+
* 锁保护区 SHOULD 仅包裹毫秒级短临界区操作(如序列器读-改-写)。
|
|
47
|
+
*/
|
|
48
|
+
withLock<T>(relPath: string, fn: () => Promise<T>): Promise<T>;
|
|
49
|
+
/** 后端级原子自增(跨进程唯一):读 `_meta.json` 中 `key` 字段 → +1 → 写回 */
|
|
50
|
+
nextId(relPath: string, key: string): Promise<number>;
|
|
51
|
+
/** 若 `value` 大于当前序列器则抬升(写显式大主键时跨进程保唯一) */
|
|
52
|
+
ensureSeqAtLeast(relPath: string, key: string, value: number): Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
/** 非实体表注册项(仅经原始 SQL 访问、无 @Entity 定义的表) */
|
|
55
|
+
export interface NonEntityTableInfo {
|
|
56
|
+
primaryColumn: string;
|
|
57
|
+
/** 唯一列组(原始列名),供 ON DUPLICATE KEY UPDATE 冲突检测 */
|
|
58
|
+
uniqueColumns?: string[][];
|
|
59
|
+
}
|
|
60
|
+
/** `configureJsonStorage()` 可注入项(均可选、支持分次注入、后写覆盖) */
|
|
61
|
+
export interface JsonStorageOptions {
|
|
62
|
+
/** JSON 存储根目录(如 `<data>/db`);不注入 `backend` 时由默认 FsStorageBackend 使用 */
|
|
63
|
+
dbDir?: string;
|
|
64
|
+
/** 非实体表注册(表名 → 主键列/唯一列组) */
|
|
65
|
+
nonEntityTables?: Record<string, NonEntityTableInfo>;
|
|
66
|
+
/** 注入自定义异步存储后端(如 COS/S3);优先于 `dbDir`,两者皆无则抛错 */
|
|
67
|
+
backend?: JsonStorageBackend;
|
|
68
|
+
/** 跨进程缓存失效校验节流(ms);默认 0 即每次读取都校验 */
|
|
69
|
+
reloadTtlMs?: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 注入存储配置。可分次调用(如先注目录、后注非实体表),后写覆盖;
|
|
73
|
+
* 未提供的字段保持既有配置不变。仅注 `dbDir`(无 `backend`)时自动构造
|
|
74
|
+
* `FsStorageBackend(dbDir)`;显式注 `backend` 优先。
|
|
75
|
+
*/
|
|
76
|
+
export declare function configureJsonStorage(options: JsonStorageOptions): void;
|
|
77
|
+
/** 仅供测试:清空全部已注入配置,回到未配置状态 */
|
|
78
|
+
export declare function resetJsonStorageForTest(): void;
|
|
79
|
+
/** 内部:读取非实体表注册(未注入时为空表,即无非实体表) */
|
|
80
|
+
export declare function getNonEntityTables(): Record<string, NonEntityTableInfo>;
|
|
81
|
+
/** 内部:惰性读取存储后端;未配置时抛出明确错误(不静默回退) */
|
|
82
|
+
export declare function requireStorageBackend(): JsonStorageBackend;
|
|
83
|
+
/** 内部:读取跨进程缓存失效节流(ms) */
|
|
84
|
+
export declare function getReloadTtlMs(): number;
|
|
85
|
+
/** 内部:惰性读取存储根目录;未配置时抛出明确错误(不静默回退) */
|
|
86
|
+
export declare function requireJsonDbDir(): string;
|
|
87
|
+
//# sourceMappingURL=json-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-config.d.ts","sourceRoot":"","sources":["../../src/json-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,gCAAgC;AAChC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,qCAAqC;IACrC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,kDAAkD;IAClD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,iBAAiB;IACjB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,cAAc;IACd,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAC3D;;;;OAIG;IACH,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/D,yDAAyD;IACzD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,0CAA0C;IAC1C,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;CAC5B;AAED,qDAAqD;AACrD,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACrD,gDAAgD;IAChD,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AASD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAYtE;AAED,6BAA6B;AAC7B,wBAAgB,uBAAuB,IAAI,IAAI,CAK9C;AAED,kCAAkC;AAClC,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAEvE;AAED,oCAAoC;AACpC,wBAAgB,qBAAqB,IAAI,kBAAkB,CAQ1D;AAED,yBAAyB;AACzB,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,qCAAqC;AACrC,wBAAgB,gBAAgB,IAAI,MAAM,CAQzC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON 存储引擎配置注入
|
|
3
|
+
*
|
|
4
|
+
* 引擎框架无关、业务解耦:不内置任何目录解析或表注册策略,接入方须在
|
|
5
|
+
* 首次访问前调用 `configureJsonStorage()` 注入存储根目录(必需)与非
|
|
6
|
+
* 实体表注册(可选)。未注入目录时引擎抛出明确错误,不静默回退。
|
|
7
|
+
*
|
|
8
|
+
* 存储 I/O 经可注入的 `JsonStorageBackend`(异步)完成,默认 `FsStorageBackend`
|
|
9
|
+
* (本地 JSON 文件);调用方亦可注入对象存储(COS/S3)等远程后端。
|
|
10
|
+
*/
|
|
11
|
+
import { FsStorageBackend } from "./json-backend-fs.js";
|
|
12
|
+
let configuredDbDir;
|
|
13
|
+
let configuredBackend;
|
|
14
|
+
let reloadTtlMsValue = 0;
|
|
15
|
+
let nonEntityTables = {};
|
|
16
|
+
/**
|
|
17
|
+
* 注入存储配置。可分次调用(如先注目录、后注非实体表),后写覆盖;
|
|
18
|
+
* 未提供的字段保持既有配置不变。仅注 `dbDir`(无 `backend`)时自动构造
|
|
19
|
+
* `FsStorageBackend(dbDir)`;显式注 `backend` 优先。
|
|
20
|
+
*/
|
|
21
|
+
export function configureJsonStorage(options) {
|
|
22
|
+
if (!options)
|
|
23
|
+
return;
|
|
24
|
+
if (options.dbDir !== undefined)
|
|
25
|
+
configuredDbDir = options.dbDir;
|
|
26
|
+
if (options.reloadTtlMs !== undefined)
|
|
27
|
+
reloadTtlMsValue = options.reloadTtlMs;
|
|
28
|
+
if (options.backend !== undefined) {
|
|
29
|
+
configuredBackend = options.backend;
|
|
30
|
+
}
|
|
31
|
+
else if (options.dbDir !== undefined) {
|
|
32
|
+
configuredBackend = new FsStorageBackend(options.dbDir);
|
|
33
|
+
}
|
|
34
|
+
if (options.nonEntityTables !== undefined) {
|
|
35
|
+
nonEntityTables = { ...options.nonEntityTables };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** 仅供测试:清空全部已注入配置,回到未配置状态 */
|
|
39
|
+
export function resetJsonStorageForTest() {
|
|
40
|
+
configuredDbDir = undefined;
|
|
41
|
+
configuredBackend = undefined;
|
|
42
|
+
reloadTtlMsValue = 0;
|
|
43
|
+
nonEntityTables = {};
|
|
44
|
+
}
|
|
45
|
+
/** 内部:读取非实体表注册(未注入时为空表,即无非实体表) */
|
|
46
|
+
export function getNonEntityTables() {
|
|
47
|
+
return nonEntityTables;
|
|
48
|
+
}
|
|
49
|
+
/** 内部:惰性读取存储后端;未配置时抛出明确错误(不静默回退) */
|
|
50
|
+
export function requireStorageBackend() {
|
|
51
|
+
if (!configuredBackend) {
|
|
52
|
+
throw new Error('[json-orm] 存储后端未配置:请先调用 configureJsonStorage({ dbDir }) 或 configureJsonStorage({ backend })' +
|
|
53
|
+
'(应用接入方通常由框架适配层在启动时注入)');
|
|
54
|
+
}
|
|
55
|
+
return configuredBackend;
|
|
56
|
+
}
|
|
57
|
+
/** 内部:读取跨进程缓存失效节流(ms) */
|
|
58
|
+
export function getReloadTtlMs() {
|
|
59
|
+
return reloadTtlMsValue;
|
|
60
|
+
}
|
|
61
|
+
/** 内部:惰性读取存储根目录;未配置时抛出明确错误(不静默回退) */
|
|
62
|
+
export function requireJsonDbDir() {
|
|
63
|
+
if (!configuredDbDir) {
|
|
64
|
+
throw new Error('[json-orm] 存储根目录未配置:请先调用 configureJsonStorage({ dbDir: <目录> })' +
|
|
65
|
+
'(应用接入方通常由框架适配层在启动时注入)');
|
|
66
|
+
}
|
|
67
|
+
return configuredDbDir;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=json-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-config.js","sourceRoot":"","sources":["../../src/json-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAkEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,IAAI,eAAmC,CAAC;AACxC,IAAI,iBAAiD,CAAC;AACtD,IAAI,gBAAgB,GAAG,CAAC,CAAC;AACzB,IAAI,eAAe,GAAuC,EAAE,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAA2B;IAC9D,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC;IACjE,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS;QAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IAC9E,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IACtC,CAAC;SAAM,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACvC,iBAAiB,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC1C,eAAe,GAAG,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IACnD,CAAC;AACH,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,uBAAuB;IACrC,eAAe,GAAG,SAAS,CAAC;IAC5B,iBAAiB,GAAG,SAAS,CAAC;IAC9B,gBAAgB,GAAG,CAAC,CAAC;IACrB,eAAe,GAAG,EAAE,CAAC;AACvB,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,kBAAkB;IAChC,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,6FAA6F;YAC3F,uBAAuB,CAC1B,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,yBAAyB;AACzB,MAAM,UAAU,cAAc;IAC5B,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,gEAAgE;YAC9D,uBAAuB,CAC1B,CAAC;IACJ,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { GetSqlTable } from './json-sql-shared.js';
|
|
2
|
+
/** 表名 → { meta, collection };未知表返回 null(fail-loud) */
|
|
3
|
+
export declare const sqlTableFor: GetSqlTable;
|
|
4
|
+
export declare class JsonEntityManager {
|
|
5
|
+
private readonly ds;
|
|
6
|
+
constructor(ds: JsonDataSource);
|
|
7
|
+
getRepository(target: Function | string): any;
|
|
8
|
+
/** save(实体 | 实体数组) 或 save(Entity, 实体 | 实体数组) */
|
|
9
|
+
save(targetOrEntity: unknown, maybeEntity?: unknown): Promise<any>;
|
|
10
|
+
query(sql: string, params?: unknown[] | Record<string, unknown>): Promise<any>;
|
|
11
|
+
transaction<T>(fn: (em: JsonEntityManager) => Promise<T>): Promise<T>;
|
|
12
|
+
createQueryBuilder(alias?: string): any;
|
|
13
|
+
}
|
|
14
|
+
export declare class JsonDataSource {
|
|
15
|
+
readonly isInitialized = true;
|
|
16
|
+
readonly manager: JsonEntityManager;
|
|
17
|
+
getRepository(target: Function | string): any;
|
|
18
|
+
query(sql: string, params?: unknown[] | Record<string, unknown>): Promise<any>;
|
|
19
|
+
/** EntityManager.save 语义:按实体构造器分组落库 */
|
|
20
|
+
save(targetOrEntity: unknown, maybeEntity?: unknown): Promise<any>;
|
|
21
|
+
transaction<T>(fn: (em: JsonEntityManager) => Promise<T>): Promise<T>;
|
|
22
|
+
/** DS 级 QueryBuilder:无表(insert().into(Entity) 后置)或带别名 */
|
|
23
|
+
createQueryBuilder(alias?: string): any;
|
|
24
|
+
/**
|
|
25
|
+
* DDL 探测 no-op(JSON 存储无 schema;hasTable 恒 true 跳过建表)。
|
|
26
|
+
* 注意:transaction 系列方法均为 no-op,不提供跨表/跨语句原子性与回滚——
|
|
27
|
+
* 仅用于 schema 探测路径,勿在依赖事务语义的代码中使用(JSON 模式仅保证单行文件级原子写)。
|
|
28
|
+
*/
|
|
29
|
+
createQueryRunner(): any;
|
|
30
|
+
}
|
|
31
|
+
/** 进程级单例('default' 数据源) */
|
|
32
|
+
export declare function getJsonDataSource(): JsonDataSource;
|
|
33
|
+
/** 测试隔离:重置单例(配合集合 clear() 清空数据) */
|
|
34
|
+
export declare function resetJsonDataSourceForTest(): void;
|
|
35
|
+
//# sourceMappingURL=json-datasource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-datasource.d.ts","sourceRoot":"","sources":["../../src/json-datasource.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,sBAAsB,CAAC;AAOlE,sDAAsD;AACtD,eAAO,MAAM,WAAW,EAAE,WAOzB,CAAC;AAEF,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,cAAc;IAE/C,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,GAAG;IAI7C,gDAAgD;IAC1C,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAIlE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9E,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAK3E,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG;CAGxC;AAED,qBAAa,cAAc;IACzB,QAAQ,CAAC,aAAa,QAAQ;IAC9B,QAAQ,CAAC,OAAO,oBAA+B;IAE/C,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,GAAG;IAIvC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAIpF,uCAAuC;IACjC,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAyBlE,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI3E,yDAAyD;IACzD,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG;IAIvC;;;;OAIG;IACH,iBAAiB,IAAI,GAAG;CAYzB;AAID,2BAA2B;AAC3B,wBAAgB,iBAAiB,IAAI,cAAc,CAGlD;AAED,mCAAmC;AACnC,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON 回退存储:DataSource / EntityManager 垫片(json-fallback-storage 规格)
|
|
3
|
+
*
|
|
4
|
+
* 覆盖 `src/store/*` 与 `src/service/*` 实际使用的 DataSource API:
|
|
5
|
+
* - getRepository(Entity | '表名')
|
|
6
|
+
* - query(sql, params?):原始 SQL(含位置/命名参数)经内存求值器执行
|
|
7
|
+
* - transaction(fn):JSON 存储无跨表事务语义(文件级原子写),直接透传
|
|
8
|
+
* - manager:save(实体)/getRepository/query/transaction(chat.store、
|
|
9
|
+
* observability.service 的事务回调用法)
|
|
10
|
+
* - createQueryBuilder(alias?):DS 级 QB(insert().into(Entity) 形态)
|
|
11
|
+
* - createQueryRunner():hasTable/createTable 等 DDL 探测为 no-op(JSON 无 schema)
|
|
12
|
+
* - isInitialized:恒 true
|
|
13
|
+
*/
|
|
14
|
+
import { executeRawQuery } from "./json-sql.js";
|
|
15
|
+
import { getCollection } from "./json-collection.js";
|
|
16
|
+
import { resolveEntityMetaByTable, isNonEntityTable } from "./json-entity-meta.js";
|
|
17
|
+
import { createJsonRepository } from "./json-repository.js";
|
|
18
|
+
import { JsonQueryBuilder } from "./json-query-builder.js";
|
|
19
|
+
/** 表名 → { meta, collection };未知表返回 null(fail-loud) */
|
|
20
|
+
export const sqlTableFor = (tableName) => {
|
|
21
|
+
const meta = resolveEntityMetaByTable(tableName);
|
|
22
|
+
if (meta)
|
|
23
|
+
return { meta, collection: getCollection(tableName, meta) };
|
|
24
|
+
if (isNonEntityTable(tableName)) {
|
|
25
|
+
return { meta: null, collection: getCollection(tableName, null) };
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
};
|
|
29
|
+
export class JsonEntityManager {
|
|
30
|
+
ds;
|
|
31
|
+
constructor(ds) {
|
|
32
|
+
this.ds = ds;
|
|
33
|
+
}
|
|
34
|
+
getRepository(target) {
|
|
35
|
+
return this.ds.getRepository(target);
|
|
36
|
+
}
|
|
37
|
+
/** save(实体 | 实体数组) 或 save(Entity, 实体 | 实体数组) */
|
|
38
|
+
async save(targetOrEntity, maybeEntity) {
|
|
39
|
+
return this.ds.save(targetOrEntity, maybeEntity);
|
|
40
|
+
}
|
|
41
|
+
async query(sql, params) {
|
|
42
|
+
return this.ds.query(sql, params);
|
|
43
|
+
}
|
|
44
|
+
async transaction(fn) {
|
|
45
|
+
// JSON 存储无跨表事务:文件级 tmp+rename 原子写,回调直接透传
|
|
46
|
+
return fn(this);
|
|
47
|
+
}
|
|
48
|
+
createQueryBuilder(alias) {
|
|
49
|
+
return this.ds.createQueryBuilder(alias);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export class JsonDataSource {
|
|
53
|
+
isInitialized = true;
|
|
54
|
+
manager = new JsonEntityManager(this);
|
|
55
|
+
getRepository(target) {
|
|
56
|
+
return createJsonRepository(target, sqlTableFor);
|
|
57
|
+
}
|
|
58
|
+
async query(sql, params) {
|
|
59
|
+
return executeRawQuery(sql, params, sqlTableFor);
|
|
60
|
+
}
|
|
61
|
+
/** EntityManager.save 语义:按实体构造器分组落库 */
|
|
62
|
+
async save(targetOrEntity, maybeEntity) {
|
|
63
|
+
const hasTarget = maybeEntity !== undefined && maybeEntity !== null;
|
|
64
|
+
const entities = (hasTarget ? maybeEntity : targetOrEntity);
|
|
65
|
+
const target = hasTarget ? targetOrEntity : undefined;
|
|
66
|
+
const list = Array.isArray(entities) ? entities : [entities];
|
|
67
|
+
if (list.length === 0)
|
|
68
|
+
return Array.isArray(entities) ? [] : undefined;
|
|
69
|
+
const groups = new Map();
|
|
70
|
+
for (const e of list) {
|
|
71
|
+
const ctor = (target ?? e?.constructor);
|
|
72
|
+
if (!ctor || ctor === Object) {
|
|
73
|
+
throw new Error('[json-storage] manager.save 无法识别实体构造器,请使用 save(Entity, row) 形式');
|
|
74
|
+
}
|
|
75
|
+
const bucket = groups.get(ctor) ?? [];
|
|
76
|
+
bucket.push(e);
|
|
77
|
+
groups.set(ctor, bucket);
|
|
78
|
+
}
|
|
79
|
+
const out = [];
|
|
80
|
+
for (const [ctor, rows] of groups) {
|
|
81
|
+
const repo = this.getRepository(ctor);
|
|
82
|
+
const saved = await repo.save(rows);
|
|
83
|
+
out.push(...(Array.isArray(saved) ? saved : [saved]));
|
|
84
|
+
}
|
|
85
|
+
return Array.isArray(entities) ? out : out[0];
|
|
86
|
+
}
|
|
87
|
+
async transaction(fn) {
|
|
88
|
+
return this.manager.transaction(fn);
|
|
89
|
+
}
|
|
90
|
+
/** DS 级 QueryBuilder:无表(insert().into(Entity) 后置)或带别名 */
|
|
91
|
+
createQueryBuilder(alias) {
|
|
92
|
+
return new JsonQueryBuilder(undefined, alias ?? '', sqlTableFor);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* DDL 探测 no-op(JSON 存储无 schema;hasTable 恒 true 跳过建表)。
|
|
96
|
+
* 注意:transaction 系列方法均为 no-op,不提供跨表/跨语句原子性与回滚——
|
|
97
|
+
* 仅用于 schema 探测路径,勿在依赖事务语义的代码中使用(JSON 模式仅保证单行文件级原子写)。
|
|
98
|
+
*/
|
|
99
|
+
createQueryRunner() {
|
|
100
|
+
return {
|
|
101
|
+
connect: async () => undefined,
|
|
102
|
+
release: async () => undefined,
|
|
103
|
+
startTransaction: async () => undefined,
|
|
104
|
+
commitTransaction: async () => undefined,
|
|
105
|
+
rollbackTransaction: async () => undefined,
|
|
106
|
+
hasTable: async () => true,
|
|
107
|
+
createTable: async () => undefined,
|
|
108
|
+
query: async (sql, params) => this.query(sql, params),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
let facade = null;
|
|
113
|
+
/** 进程级单例('default' 数据源) */
|
|
114
|
+
export function getJsonDataSource() {
|
|
115
|
+
if (!facade)
|
|
116
|
+
facade = new JsonDataSource();
|
|
117
|
+
return facade;
|
|
118
|
+
}
|
|
119
|
+
/** 测试隔离:重置单例(配合集合 clear() 清空数据) */
|
|
120
|
+
export function resetJsonDataSourceForTest() {
|
|
121
|
+
facade = null;
|
|
122
|
+
}
|
|
123
|
+
//# 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,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON 回退存储:实体元数据解析(json-fallback-storage 规格)
|
|
3
|
+
*
|
|
4
|
+
* 复用 TypeORM 装饰器注册的元数据(`getMetadataArgsStorage()`,随实体类 import
|
|
5
|
+
* 由 reflect-metadata 自动填充),推导:
|
|
6
|
+
* - 表名(`@Entity('t_xxx')`)
|
|
7
|
+
* - 列名 → 属性名映射(`@Column({ name: 'Fxxx' })`,含基类 BaseEntity 继承列)
|
|
8
|
+
* - 主键属性(`@PrimaryColumn` / `@PrimaryGeneratedColumn`)
|
|
9
|
+
* - 自动时间列(`@CreateDateColumn` → createTime / `@UpdateDateColumn` → modifyTime)
|
|
10
|
+
*
|
|
11
|
+
* JSON 行以**属性名**为键落盘;原始 SQL / QueryBuilder 字符串里的数据库列名
|
|
12
|
+
* (`Fxxx`、`lock_name` 等)经本模块映射回属性键。
|
|
13
|
+
*/
|
|
14
|
+
import { getMetadataArgsStorage } from 'typeorm';
|
|
15
|
+
import { getNonEntityTables } from "./json-config.js";
|
|
16
|
+
const metaCache = new Map();
|
|
17
|
+
/** 实体原型链上的全部构造函数(含自身,用于收集基类 BaseEntity 的列) */
|
|
18
|
+
function ancestorChain(target) {
|
|
19
|
+
const chain = new Set();
|
|
20
|
+
let cur = target;
|
|
21
|
+
while (cur && cur !== Object && cur !== Function) {
|
|
22
|
+
chain.add(cur);
|
|
23
|
+
cur = Object.getPrototypeOf(cur);
|
|
24
|
+
}
|
|
25
|
+
return chain;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 解析实体元数据。入参可为实体类或表名(如 `getRepository('t_ai_obs_trace')`)。
|
|
29
|
+
* 未知表返回 null(调用方按"非实体表"处理)。
|
|
30
|
+
*/
|
|
31
|
+
export function resolveEntityMeta(targetOrTable) {
|
|
32
|
+
const cacheKey = typeof targetOrTable === 'string' ? targetOrTable : targetOrTable.name;
|
|
33
|
+
if (metaCache.has(cacheKey))
|
|
34
|
+
return metaCache.get(cacheKey);
|
|
35
|
+
const storage = getMetadataArgsStorage();
|
|
36
|
+
let tableArg;
|
|
37
|
+
if (typeof targetOrTable === 'string') {
|
|
38
|
+
tableArg = storage.tables.find(t => t.name === targetOrTable);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
tableArg = storage.tables.find(t => t.target === targetOrTable);
|
|
42
|
+
}
|
|
43
|
+
if (!tableArg) {
|
|
44
|
+
metaCache.set(cacheKey, null);
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const chain = ancestorChain(tableArg.target);
|
|
48
|
+
const columnArgs = storage.columns.filter(c => chain.has(c.target));
|
|
49
|
+
const columns = columnArgs.map(c => ({
|
|
50
|
+
propertyName: c.propertyName,
|
|
51
|
+
columnName: c.options?.name || c.propertyName,
|
|
52
|
+
mode: c.mode || 'regular',
|
|
53
|
+
type: typeof c.options?.type === 'string' ? c.options.type : typeof c.options?.type === 'function' ? '' : String(c.options?.type ?? ''),
|
|
54
|
+
}));
|
|
55
|
+
const meta = {
|
|
56
|
+
target: tableArg.target,
|
|
57
|
+
tableName: tableArg.name ?? '',
|
|
58
|
+
columns,
|
|
59
|
+
columnByDbName: new Map(columns.map(c => [c.columnName, c.propertyName])),
|
|
60
|
+
columnByProperty: new Map(columns.map(c => [c.propertyName, c.columnName])),
|
|
61
|
+
primaryGenerated: false,
|
|
62
|
+
datetimeProperties: new Set(columns
|
|
63
|
+
.filter(c => ['datetime', 'timestamp', 'date'].includes(c.type) ||
|
|
64
|
+
// @CreateDateColumn/@UpdateDateColumn 装饰器不补默认 type,
|
|
65
|
+
// 但 TypeORM 语义上即 datetime 列
|
|
66
|
+
c.mode === 'createDate' ||
|
|
67
|
+
c.mode === 'updateDate')
|
|
68
|
+
.map(c => c.propertyName)),
|
|
69
|
+
uniqueIndexes: [],
|
|
70
|
+
};
|
|
71
|
+
// TypeORM 装饰器注册形态:@PrimaryColumn/@PrimaryGeneratedColumn 均为
|
|
72
|
+
// mode 'regular' + options.primary = true;自增策略在 generations 数组
|
|
73
|
+
const primaryIdx = columnArgs.findIndex(c => c.options?.primary === true);
|
|
74
|
+
if (primaryIdx >= 0) {
|
|
75
|
+
const primary = columns[primaryIdx];
|
|
76
|
+
meta.primaryProperty = primary.propertyName;
|
|
77
|
+
// @PrimaryGeneratedColumn 会向 generations 注册策略(increment/uuid/...);@PrimaryColumn 不会
|
|
78
|
+
meta.primaryGenerated = storage.generations.some(g => chain.has(g.target) && g.propertyName === primary.propertyName);
|
|
79
|
+
}
|
|
80
|
+
const created = columns.find(c => c.mode === 'createDate');
|
|
81
|
+
if (created)
|
|
82
|
+
meta.createdAtProperty = created.propertyName;
|
|
83
|
+
const updated = columns.find(c => c.mode === 'updateDate');
|
|
84
|
+
if (updated)
|
|
85
|
+
meta.updatedAtProperty = updated.propertyName;
|
|
86
|
+
// 唯一索引(@Index(..., { unique: true }),含基类;columns 为属性名)
|
|
87
|
+
for (const idx of storage.indices) {
|
|
88
|
+
if (!idx.unique)
|
|
89
|
+
continue;
|
|
90
|
+
if (!chain.has(idx.target))
|
|
91
|
+
continue;
|
|
92
|
+
const props = idx.columns.map(col => typeof col === 'function' ? '' : String(col));
|
|
93
|
+
if (props.length > 0 && props.every(p => meta.columnByProperty.has(p))) {
|
|
94
|
+
meta.uniqueIndexes.push(props);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
metaCache.set(cacheKey, meta);
|
|
98
|
+
return meta;
|
|
99
|
+
}
|
|
100
|
+
/** 按表名解析元数据;未知表返回 null */
|
|
101
|
+
export function resolveEntityMetaByTable(tableName) {
|
|
102
|
+
return resolveEntityMeta(tableName);
|
|
103
|
+
}
|
|
104
|
+
/** 非实体表的主键列(无注册时返回 undefined) */
|
|
105
|
+
export function getNonEntityPrimaryColumn(tableName) {
|
|
106
|
+
return getNonEntityTables()[tableName]?.primaryColumn;
|
|
107
|
+
}
|
|
108
|
+
/** 非实体表的唯一列组(原始列名) */
|
|
109
|
+
export function getNonEntityUniqueColumns(tableName) {
|
|
110
|
+
return getNonEntityTables()[tableName]?.uniqueColumns ?? [];
|
|
111
|
+
}
|
|
112
|
+
/** 是否为已知非实体表(仅经原始 SQL 访问) */
|
|
113
|
+
export function isNonEntityTable(tableName) {
|
|
114
|
+
return !!getNonEntityTables()[tableName];
|
|
115
|
+
}
|
|
116
|
+
/** 全部非实体表名(information_schema 合成用) */
|
|
117
|
+
export function listNonEntityTables() {
|
|
118
|
+
return Object.keys(getNonEntityTables());
|
|
119
|
+
}
|
|
120
|
+
//# 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":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AA8BtD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiC,CAAC;AAE3D,8CAA8C;AAC9C,SAAS,aAAa,CAAC,MAAgB;IACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAY,CAAC;IAClC,IAAI,GAAG,GAAyB,MAAM,CAAC;IACvC,OAAO,GAAG,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,CAAyB,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAgC;IAChE,MAAM,QAAQ,GAAG,OAAO,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;IACxF,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IAE7D,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;IACzC,IAAI,QAAkE,CAAC;IACvE,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACtC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAkB,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAkB,CAAC,CAAC,CAAC;IAEhF,MAAM,OAAO,GAAuB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvD,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,UAAU,EAAG,CAAC,CAAC,OAAO,EAAE,IAAe,IAAI,CAAC,CAAC,YAAY;QACzD,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;QACzB,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;KACxI,CAAC,CAAC,CAAC;IAEJ,MAAM,IAAI,GAAmB;QAC3B,MAAM,EAAE,QAAQ,CAAC,MAAkB;QACnC,SAAS,EAAE,QAAQ,CAAC,IAAI,IAAI,EAAE;QAC9B,OAAO;QACP,cAAc,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACzE,gBAAgB,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3E,gBAAgB,EAAE,KAAK;QACvB,kBAAkB,EAAE,IAAI,GAAG,CACzB,OAAO;aACJ,MAAM,CACL,CAAC,CAAC,EAAE,CACF,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;YAClD,oDAAoD;YACpD,4BAA4B;YAC5B,CAAC,CAAC,IAAI,KAAK,YAAY;YACvB,CAAC,CAAC,IAAI,KAAK,YAAY,CAC1B;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAC5B;QACD,aAAa,EAAE,EAAE;KAClB,CAAC;IAEF,4DAA4D;IAC5D,+DAA+D;IAC/D,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC,CAAC,OAAiC,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC;IACrG,IAAI,UAAU,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;QAC5C,oFAAoF;QACpF,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAC9C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAkB,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,CAChF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAC3D,IAAI,OAAO;QAAE,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;IAC3D,IAAI,OAAO;QAAE,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAE3D,uDAAuD;IACvD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,SAAS;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAkB,CAAC;YAAE,SAAS;QACjD,MAAM,KAAK,GAAI,GAAG,CAAC,OAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CACjD,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAC7C,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,wBAAwB,CAAC,SAAiB;IACxD,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACtC,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,OAAO,kBAAkB,EAAE,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC;AACxD,CAAC;AAED,sBAAsB;AACtB,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,OAAO,kBAAkB,EAAE,CAAC,SAAS,CAAC,EAAE,aAAa,IAAI,EAAE,CAAC;AAC9D,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,mBAAmB;IACjC,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -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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"}
|