@pangza/orm 0.0.0-stage → 1.0.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 +2 -2
- package/dist/BaseMapper.d.ts +112 -0
- package/dist/BaseMapper.d.ts.map +1 -0
- package/dist/BaseMapper.js +653 -0
- package/dist/BaseMapper.js.map +1 -0
- package/dist/DataSource.d.ts +61 -0
- package/dist/DataSource.d.ts.map +1 -0
- package/dist/DataSource.js +350 -0
- package/dist/DataSource.js.map +1 -0
- package/dist/Db.d.ts +67 -0
- package/dist/Db.d.ts.map +1 -0
- package/dist/Db.js +222 -0
- package/dist/Db.js.map +1 -0
- package/dist/IdType.d.ts +22 -0
- package/dist/IdType.d.ts.map +1 -0
- package/dist/IdType.js +34 -0
- package/dist/IdType.js.map +1 -0
- package/dist/QueryWrapper.d.ts +110 -0
- package/dist/QueryWrapper.d.ts.map +1 -0
- package/dist/QueryWrapper.js +343 -0
- package/dist/QueryWrapper.js.map +1 -0
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +80 -0
- package/dist/config.js.map +1 -0
- package/dist/dialect.d.ts +41 -0
- package/dist/dialect.d.ts.map +1 -0
- package/dist/dialect.js +171 -0
- package/dist/dialect.js.map +1 -0
- package/dist/enable.d.ts +12 -0
- package/dist/enable.d.ts.map +1 -0
- package/dist/enable.js +31 -0
- package/dist/enable.js.map +1 -0
- package/dist/entityDecorators.d.ts +77 -0
- package/dist/entityDecorators.d.ts.map +1 -0
- package/dist/entityDecorators.js +150 -0
- package/dist/entityDecorators.js.map +1 -0
- package/dist/errors.d.ts +11 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +22 -0
- package/dist/errors.js.map +1 -0
- package/dist/fieldSelect.d.ts +49 -0
- package/dist/fieldSelect.d.ts.map +1 -0
- package/dist/fieldSelect.js +53 -0
- package/dist/fieldSelect.js.map +1 -0
- package/dist/fill.d.ts +8 -0
- package/dist/fill.d.ts.map +1 -0
- package/dist/fill.js +47 -0
- package/dist/fill.js.map +1 -0
- package/dist/flag.d.ts +2 -0
- package/dist/flag.d.ts.map +1 -0
- package/dist/flag.js +8 -0
- package/dist/flag.js.map +1 -0
- package/dist/hydrate.d.ts +38 -0
- package/dist/hydrate.d.ts.map +1 -0
- package/dist/hydrate.js +325 -0
- package/dist/hydrate.js.map +1 -0
- package/dist/identifier.d.ts +14 -0
- package/dist/identifier.d.ts.map +1 -0
- package/dist/identifier.js +51 -0
- package/dist/identifier.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +122 -0
- package/dist/index.js.map +1 -0
- package/dist/relation.d.ts +72 -0
- package/dist/relation.d.ts.map +1 -0
- package/dist/relation.js +150 -0
- package/dist/relation.js.map +1 -0
- package/dist/resultMap.d.ts +7 -0
- package/dist/resultMap.d.ts.map +1 -0
- package/dist/resultMap.js +25 -0
- package/dist/resultMap.js.map +1 -0
- package/dist/security.d.ts +16 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +50 -0
- package/dist/security.js.map +1 -0
- package/dist/sqlDecorators.d.ts +60 -0
- package/dist/sqlDecorators.d.ts.map +1 -0
- package/dist/sqlDecorators.js +147 -0
- package/dist/sqlDecorators.js.map +1 -0
- package/dist/sqlLog.d.ts +30 -0
- package/dist/sqlLog.d.ts.map +1 -0
- package/dist/sqlLog.js +183 -0
- package/dist/sqlLog.js.map +1 -0
- package/dist/sqlTemplate.d.ts +38 -0
- package/dist/sqlTemplate.d.ts.map +1 -0
- package/dist/sqlTemplate.js +112 -0
- package/dist/sqlTemplate.js.map +1 -0
- package/dist/table.d.ts +17 -0
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +55 -0
- package/dist/table.js.map +1 -0
- package/dist/tableSearch.d.ts +72 -0
- package/dist/tableSearch.d.ts.map +1 -0
- package/dist/tableSearch.js +232 -0
- package/dist/tableSearch.js.map +1 -0
- package/dist/transactional.d.ts +27 -0
- package/dist/transactional.d.ts.map +1 -0
- package/dist/transactional.js +57 -0
- package/dist/transactional.js.map +1 -0
- package/dist/types.d.ts +155 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/xml/MapperXml.d.ts +24 -0
- package/dist/xml/MapperXml.d.ts.map +1 -0
- package/dist/xml/MapperXml.js +92 -0
- package/dist/xml/MapperXml.js.map +1 -0
- package/dist/xml/execute.d.ts +12 -0
- package/dist/xml/execute.d.ts.map +1 -0
- package/dist/xml/execute.js +54 -0
- package/dist/xml/execute.js.map +1 -0
- package/dist/xml/index.d.ts +11 -0
- package/dist/xml/index.d.ts.map +1 -0
- package/dist/xml/index.js +29 -0
- package/dist/xml/index.js.map +1 -0
- package/dist/xml/loadMappers.d.ts +14 -0
- package/dist/xml/loadMappers.d.ts.map +1 -0
- package/dist/xml/loadMappers.js +171 -0
- package/dist/xml/loadMappers.js.map +1 -0
- package/dist/xml/parseMapperXml.d.ts +6 -0
- package/dist/xml/parseMapperXml.d.ts.map +1 -0
- package/dist/xml/parseMapperXml.js +225 -0
- package/dist/xml/parseMapperXml.js.map +1 -0
- package/dist/xml/registry.d.ts +15 -0
- package/dist/xml/registry.d.ts.map +1 -0
- package/dist/xml/registry.js +57 -0
- package/dist/xml/registry.js.map +1 -0
- package/dist/xml/renderSql.d.ts +6 -0
- package/dist/xml/renderSql.d.ts.map +1 -0
- package/dist/xml/renderSql.js +187 -0
- package/dist/xml/renderSql.js.map +1 -0
- package/dist/xml/types.d.ts +52 -0
- package/dist/xml/types.d.ts.map +1 -0
- package/dist/xml/types.js +3 -0
- package/dist/xml/types.js.map +1 -0
- package/dist/xml/xmlMapper.d.ts +16 -0
- package/dist/xml/xmlMapper.d.ts.map +1 -0
- package/dist/xml/xmlMapper.js +49 -0
- package/dist/xml/xmlMapper.js.map +1 -0
- package/package.json +35 -4
package/dist/Db.js
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getDialect = exports.DataSource = void 0;
|
|
4
|
+
const sqlLog_1 = require("./sqlLog");
|
|
5
|
+
const DataSource_1 = require("./DataSource");
|
|
6
|
+
Object.defineProperty(exports, "DataSource", { enumerable: true, get: function () { return DataSource_1.DataSource; } });
|
|
7
|
+
const dialect_1 = require("./dialect");
|
|
8
|
+
Object.defineProperty(exports, "getDialect", { enumerable: true, get: function () { return dialect_1.getDialect; } });
|
|
9
|
+
const config_1 = require("@pangza/core/config");
|
|
10
|
+
/**
|
|
11
|
+
* 多数据源门面(默认名 default)。
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // 默认库(项目根目录 application*.yaml 的 datasource.default)
|
|
15
|
+
* await Db.query("SELECT 1")
|
|
16
|
+
*
|
|
17
|
+
* // 注册 PostgreSQL
|
|
18
|
+
* Db.register("pg", { type: "postgresql", host: "127.0.0.1", database: "app", user: "postgres", password: "x" })
|
|
19
|
+
* await Db.queryOn("pg", 'SELECT * FROM "user" WHERE id = ?', [1])
|
|
20
|
+
*
|
|
21
|
+
* // Mapper / 装饰器指定数据源
|
|
22
|
+
* @Mapper(UserEntity, { datasource: "pg" })
|
|
23
|
+
* @Select("SELECT ...", { datasource: "pg" })
|
|
24
|
+
*/
|
|
25
|
+
class Db {
|
|
26
|
+
/** 注册或覆盖数据源 */
|
|
27
|
+
static register(nameOrConfig, config) {
|
|
28
|
+
let name;
|
|
29
|
+
let cfg;
|
|
30
|
+
if (typeof nameOrConfig === "string") {
|
|
31
|
+
name = nameOrConfig.trim() || this.DEFAULT;
|
|
32
|
+
cfg = { ...(config ?? {}), name };
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
cfg = { ...nameOrConfig };
|
|
36
|
+
name = (cfg.name ?? this.DEFAULT).trim() || this.DEFAULT;
|
|
37
|
+
cfg.name = name;
|
|
38
|
+
}
|
|
39
|
+
const ds = new DataSource_1.DataSource(cfg);
|
|
40
|
+
this.sources.set(name, ds);
|
|
41
|
+
return ds;
|
|
42
|
+
}
|
|
43
|
+
/** 确保默认数据源(来自 YAML datasource.default);并按需注册 postgresql / sqlserver */
|
|
44
|
+
static ensureDefault() {
|
|
45
|
+
if (!this.sources.has(this.DEFAULT)) {
|
|
46
|
+
this.register(this.DEFAULT, {
|
|
47
|
+
name: this.DEFAULT,
|
|
48
|
+
type: config_1.mysqlConfig.type || "mysql",
|
|
49
|
+
host: config_1.mysqlConfig.host,
|
|
50
|
+
port: config_1.mysqlConfig.port,
|
|
51
|
+
user: config_1.mysqlConfig.user,
|
|
52
|
+
password: config_1.mysqlConfig.password,
|
|
53
|
+
database: config_1.mysqlConfig.database,
|
|
54
|
+
connectionLimit: config_1.mysqlConfig.connectionLimit,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
this.registerOptionalFromEnv();
|
|
58
|
+
return this.sources.get(this.DEFAULT);
|
|
59
|
+
}
|
|
60
|
+
/** YAML 中 postgresql / sqlserver 的 host 非空时自动注册命名数据源 */
|
|
61
|
+
static registerOptionalFromEnv() {
|
|
62
|
+
if (config_1.postgresqlConfig.host && !this.sources.has("postgresql")) {
|
|
63
|
+
this.register("postgresql", {
|
|
64
|
+
name: "postgresql",
|
|
65
|
+
type: "postgresql",
|
|
66
|
+
host: config_1.postgresqlConfig.host,
|
|
67
|
+
port: config_1.postgresqlConfig.port,
|
|
68
|
+
user: config_1.postgresqlConfig.user,
|
|
69
|
+
password: config_1.postgresqlConfig.password,
|
|
70
|
+
database: config_1.postgresqlConfig.database,
|
|
71
|
+
connectionLimit: config_1.postgresqlConfig.connectionLimit,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (config_1.mssqlConfig.host && !this.sources.has("sqlserver")) {
|
|
75
|
+
this.register("sqlserver", {
|
|
76
|
+
name: "sqlserver",
|
|
77
|
+
type: "sqlserver",
|
|
78
|
+
host: config_1.mssqlConfig.host,
|
|
79
|
+
port: config_1.mssqlConfig.port,
|
|
80
|
+
user: config_1.mssqlConfig.user,
|
|
81
|
+
password: config_1.mssqlConfig.password,
|
|
82
|
+
database: config_1.mssqlConfig.database,
|
|
83
|
+
connectionLimit: config_1.mssqlConfig.connectionLimit,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
static getDataSource(name = this.DEFAULT) {
|
|
88
|
+
if (name === this.DEFAULT) {
|
|
89
|
+
return this.ensureDefault();
|
|
90
|
+
}
|
|
91
|
+
const ds = this.sources.get(name);
|
|
92
|
+
if (!ds) {
|
|
93
|
+
this.ensureDefault();
|
|
94
|
+
const registered = [...this.sources.keys()].join(", ") || "(无)";
|
|
95
|
+
throw new Error(`未注册数据源 [${name}]。已注册: ${registered}。请先 Db.register("${name}", { type, host, ... })`);
|
|
96
|
+
}
|
|
97
|
+
return ds;
|
|
98
|
+
}
|
|
99
|
+
/** 按数据库类型查找唯一数据源(用于 @Select({ db: "postgresql" })) */
|
|
100
|
+
static findByType(type) {
|
|
101
|
+
this.ensureDefault();
|
|
102
|
+
const dialect = (0, dialect_1.getDialect)(type);
|
|
103
|
+
const matched = [...this.sources.entries()].filter(([, ds]) => ds.type === dialect.type);
|
|
104
|
+
if (matched.length === 0) {
|
|
105
|
+
throw new Error(`没有已注册的 ${dialect.type} 数据源`);
|
|
106
|
+
}
|
|
107
|
+
if (matched.length > 1) {
|
|
108
|
+
throw new Error(`存在多个 ${dialect.type} 数据源 (${matched
|
|
109
|
+
.map(([n]) => n)
|
|
110
|
+
.join(", ")}),请用 datasource 指定名称`);
|
|
111
|
+
}
|
|
112
|
+
return matched[0][0];
|
|
113
|
+
}
|
|
114
|
+
static getDialect(name = this.DEFAULT) {
|
|
115
|
+
return this.getDataSource(name).dialect;
|
|
116
|
+
}
|
|
117
|
+
static listDataSources() {
|
|
118
|
+
this.ensureDefault();
|
|
119
|
+
return [...this.sources.keys()];
|
|
120
|
+
}
|
|
121
|
+
/** @deprecated 使用 register;保留覆盖默认连接配置 */
|
|
122
|
+
static configure(config = {}) {
|
|
123
|
+
this.register(this.DEFAULT, {
|
|
124
|
+
type: config_1.mysqlConfig.type || "mysql",
|
|
125
|
+
host: config_1.mysqlConfig.host,
|
|
126
|
+
port: config_1.mysqlConfig.port,
|
|
127
|
+
user: config_1.mysqlConfig.user,
|
|
128
|
+
password: config_1.mysqlConfig.password,
|
|
129
|
+
database: config_1.mysqlConfig.database,
|
|
130
|
+
connectionLimit: config_1.mysqlConfig.connectionLimit,
|
|
131
|
+
...config,
|
|
132
|
+
name: this.DEFAULT,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
static isReady(name = this.DEFAULT) {
|
|
136
|
+
return this.sources.get(name)?.isReady() ?? false;
|
|
137
|
+
}
|
|
138
|
+
/** 测试注入默认池驱动 */
|
|
139
|
+
static usePoolForTest(pool) {
|
|
140
|
+
const ds = this.ensureDefault();
|
|
141
|
+
// 兼容旧测试:传入 mysql2 Pool
|
|
142
|
+
if (pool && typeof pool.execute === "function") {
|
|
143
|
+
const mysqlPool = pool;
|
|
144
|
+
ds.useDriverForTest({
|
|
145
|
+
async query(sql, params) {
|
|
146
|
+
const [rows] = await mysqlPool.execute(sql, params);
|
|
147
|
+
return rows;
|
|
148
|
+
},
|
|
149
|
+
async getConnection() {
|
|
150
|
+
const conn = await mysqlPool.getConnection();
|
|
151
|
+
return {
|
|
152
|
+
async query(sql, params) {
|
|
153
|
+
const [rows] = await conn.execute(sql, params);
|
|
154
|
+
return rows;
|
|
155
|
+
},
|
|
156
|
+
async begin() {
|
|
157
|
+
await conn.beginTransaction();
|
|
158
|
+
},
|
|
159
|
+
async commit() {
|
|
160
|
+
await conn.commit();
|
|
161
|
+
},
|
|
162
|
+
async rollback() {
|
|
163
|
+
await conn.rollback();
|
|
164
|
+
},
|
|
165
|
+
release() {
|
|
166
|
+
conn.release();
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
},
|
|
170
|
+
async end() {
|
|
171
|
+
await mysqlPool.end();
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
ds.useDriverForTest(pool);
|
|
177
|
+
}
|
|
178
|
+
static async connect(config) {
|
|
179
|
+
if (config)
|
|
180
|
+
this.configure(config);
|
|
181
|
+
await this.ensureDefault().connect();
|
|
182
|
+
}
|
|
183
|
+
static async connectAll() {
|
|
184
|
+
this.ensureDefault();
|
|
185
|
+
await Promise.all([...this.sources.values()].map((ds) => ds.connect()));
|
|
186
|
+
}
|
|
187
|
+
static async disconnect(name) {
|
|
188
|
+
if (name) {
|
|
189
|
+
await this.sources.get(name)?.disconnect();
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
await Promise.all([...this.sources.values()].map((ds) => ds.disconnect()));
|
|
193
|
+
}
|
|
194
|
+
static inTransaction(name = this.DEFAULT) {
|
|
195
|
+
return this.getDataSource(name).inTransaction();
|
|
196
|
+
}
|
|
197
|
+
/** 默认数据源执行 SQL */
|
|
198
|
+
static async query(sql, params = []) {
|
|
199
|
+
return this.queryOn(this.DEFAULT, sql, params);
|
|
200
|
+
}
|
|
201
|
+
/** 指定数据源执行 SQL */
|
|
202
|
+
static async queryOn(datasource, sql, params = []) {
|
|
203
|
+
return (0, sqlLog_1.withSqlLog)(sql, params, async () => {
|
|
204
|
+
const ds = this.getDataSource(datasource);
|
|
205
|
+
return ds.query(sql, params);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
static async getPool() {
|
|
209
|
+
await this.ensureDefault().connect();
|
|
210
|
+
return this.ensureDefault();
|
|
211
|
+
}
|
|
212
|
+
static async transaction(fn, options) {
|
|
213
|
+
return this.transactionOn(this.DEFAULT, fn, options);
|
|
214
|
+
}
|
|
215
|
+
static async transactionOn(datasource, fn, options) {
|
|
216
|
+
return this.getDataSource(datasource).transaction(fn, options);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
Db.sources = new Map();
|
|
220
|
+
Db.DEFAULT = "default";
|
|
221
|
+
exports.default = Db;
|
|
222
|
+
//# sourceMappingURL=Db.js.map
|
package/dist/Db.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Db.js","sourceRoot":"","sources":["../src/Db.ts"],"names":[],"mappings":"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"}
|
package/dist/IdType.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 主键生成策略(对齐 MyBatis-Plus IdType)
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* @TableId({ type: IdType.ASSIGN_ID })
|
|
6
|
+
* id!: string;
|
|
7
|
+
*/
|
|
8
|
+
export declare enum IdType {
|
|
9
|
+
/** 数据库自增(不向 INSERT 写入 id,插入后回填) */
|
|
10
|
+
AUTO = "AUTO",
|
|
11
|
+
/** 未设置:跟随全局 configureOrm / ORM_ID_TYPE */
|
|
12
|
+
NONE = "NONE",
|
|
13
|
+
/** 插入前自行赋值,框架不生成 */
|
|
14
|
+
INPUT = "INPUT",
|
|
15
|
+
/** 雪花算法分配(空才生成),适合 number / string */
|
|
16
|
+
ASSIGN_ID = "ASSIGN_ID",
|
|
17
|
+
/** UUID(去横线)分配,适合 string */
|
|
18
|
+
ASSIGN_UUID = "ASSIGN_UUID"
|
|
19
|
+
}
|
|
20
|
+
export type IdTypeValue = IdType | keyof typeof IdType | string;
|
|
21
|
+
export declare function resolveIdType(value?: IdTypeValue | null): IdType;
|
|
22
|
+
//# sourceMappingURL=IdType.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdType.d.ts","sourceRoot":"","sources":["../src/IdType.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,oBAAY,MAAM;IAChB,mCAAmC;IACnC,IAAI,SAAS;IACb,0CAA0C;IAC1C,IAAI,SAAS;IACb,oBAAoB;IACpB,KAAK,UAAU;IACf,sCAAsC;IACtC,SAAS,cAAc;IACvB,4BAA4B;IAC5B,WAAW,gBAAgB;CAC5B;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,OAAO,MAAM,GAAG,MAAM,CAAC;AAEhE,wBAAgB,aAAa,CAAC,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CAOhE"}
|
package/dist/IdType.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IdType = void 0;
|
|
4
|
+
exports.resolveIdType = resolveIdType;
|
|
5
|
+
/**
|
|
6
|
+
* 主键生成策略(对齐 MyBatis-Plus IdType)
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* @TableId({ type: IdType.ASSIGN_ID })
|
|
10
|
+
* id!: string;
|
|
11
|
+
*/
|
|
12
|
+
var IdType;
|
|
13
|
+
(function (IdType) {
|
|
14
|
+
/** 数据库自增(不向 INSERT 写入 id,插入后回填) */
|
|
15
|
+
IdType["AUTO"] = "AUTO";
|
|
16
|
+
/** 未设置:跟随全局 configureOrm / ORM_ID_TYPE */
|
|
17
|
+
IdType["NONE"] = "NONE";
|
|
18
|
+
/** 插入前自行赋值,框架不生成 */
|
|
19
|
+
IdType["INPUT"] = "INPUT";
|
|
20
|
+
/** 雪花算法分配(空才生成),适合 number / string */
|
|
21
|
+
IdType["ASSIGN_ID"] = "ASSIGN_ID";
|
|
22
|
+
/** UUID(去横线)分配,适合 string */
|
|
23
|
+
IdType["ASSIGN_UUID"] = "ASSIGN_UUID";
|
|
24
|
+
})(IdType || (exports.IdType = IdType = {}));
|
|
25
|
+
function resolveIdType(value) {
|
|
26
|
+
if (value == null || value === "")
|
|
27
|
+
return IdType.NONE;
|
|
28
|
+
const key = String(value).toUpperCase();
|
|
29
|
+
if (key in IdType) {
|
|
30
|
+
return IdType[key];
|
|
31
|
+
}
|
|
32
|
+
throw new Error(`不支持的 IdType: ${value}`);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=IdType.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdType.js","sourceRoot":"","sources":["../src/IdType.ts"],"names":[],"mappings":";;;AAsBA,sCAOC;AA7BD;;;;;;GAMG;AACH,IAAY,MAWX;AAXD,WAAY,MAAM;IAChB,mCAAmC;IACnC,uBAAa,CAAA;IACb,0CAA0C;IAC1C,uBAAa,CAAA;IACb,oBAAoB;IACpB,yBAAe,CAAA;IACf,sCAAsC;IACtC,iCAAuB,CAAA;IACvB,4BAA4B;IAC5B,qCAA2B,CAAA;AAC7B,CAAC,EAXW,MAAM,sBAAN,MAAM,QAWjB;AAID,SAAgB,aAAa,CAAC,KAA0B;IACtD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC,GAA0B,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { SqlFragment } from "./types";
|
|
2
|
+
import { type Dialect, type DbType } from "./dialect";
|
|
3
|
+
export { assertIdent } from "./security";
|
|
4
|
+
export interface QueryWrapperOptions {
|
|
5
|
+
/** 方言或数据库类型,影响列名引号;默认 mysql */
|
|
6
|
+
dialect?: Dialect | DbType | string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 条件构造器(对齐 MyBatis-Plus QueryWrapper 常用 API)
|
|
10
|
+
* 列名白名单校验,值一律参数绑定。
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* new QueryWrapper().select('id', 'username').eq('status', 1).orderByDesc('id')
|
|
14
|
+
* new QueryWrapper({ dialect: "postgresql" }).eq("status", 1)
|
|
15
|
+
*/
|
|
16
|
+
export declare class QueryWrapper {
|
|
17
|
+
private conditions;
|
|
18
|
+
private orders;
|
|
19
|
+
private selectColumns;
|
|
20
|
+
private groupColumns;
|
|
21
|
+
private havingClauses;
|
|
22
|
+
private lastSqlText;
|
|
23
|
+
private nextJoin;
|
|
24
|
+
private skipLogicDelete;
|
|
25
|
+
private readonly dialect;
|
|
26
|
+
constructor(options?: QueryWrapperOptions | Dialect | DbType | string);
|
|
27
|
+
getDialect(): Dialect;
|
|
28
|
+
/** 本条查询忽略逻辑删除条件(查回收站等) */
|
|
29
|
+
ignoreLogicDelete(): this;
|
|
30
|
+
isIgnoreLogicDelete(): boolean;
|
|
31
|
+
/** 复制一份,避免 Mapper 追加逻辑删除时改到调用方 */
|
|
32
|
+
clone(): QueryWrapper;
|
|
33
|
+
/** 下一条件用 OR 连接 */
|
|
34
|
+
or(): this;
|
|
35
|
+
/** 下一条件用 AND 连接(默认) */
|
|
36
|
+
and(): this;
|
|
37
|
+
private add;
|
|
38
|
+
private col;
|
|
39
|
+
/**
|
|
40
|
+
* 指定查询列;不传则默认 SELECT *
|
|
41
|
+
* @example wrapper.select('id', 'username', 'status')
|
|
42
|
+
*/
|
|
43
|
+
select(...columns: string[]): this;
|
|
44
|
+
eq(column: string, value: unknown): this;
|
|
45
|
+
/** field = value OR field IS NULL(兼容历史未填逻辑删除字段的数据) */
|
|
46
|
+
eqOrIsNull(column: string, value: unknown): this;
|
|
47
|
+
ne(column: string, value: unknown): this;
|
|
48
|
+
gt(column: string, value: unknown): this;
|
|
49
|
+
ge(column: string, value: unknown): this;
|
|
50
|
+
lt(column: string, value: unknown): this;
|
|
51
|
+
le(column: string, value: unknown): this;
|
|
52
|
+
private likePattern;
|
|
53
|
+
/** 模糊查询;已转义 % / _,避免通配符注入 */
|
|
54
|
+
like(column: string, value: string): this;
|
|
55
|
+
/** 左模糊:`%value`(对齐 MP likeLeft) */
|
|
56
|
+
likeLeft(column: string, value: string): this;
|
|
57
|
+
/** 右模糊:`value%`(对齐 MP likeRight) */
|
|
58
|
+
likeRight(column: string, value: string): this;
|
|
59
|
+
/** `NOT LIKE %value%`(已转义通配符) */
|
|
60
|
+
notLike(column: string, value: string): this;
|
|
61
|
+
/**
|
|
62
|
+
* EXISTS (子查询)。子查询自行保证安全;参数走绑定。
|
|
63
|
+
* @example wrapper.exists('SELECT 1 FROM role_user ru WHERE ru.user_id = t.id AND ru.role_id = ?', [1])
|
|
64
|
+
*/
|
|
65
|
+
exists(sql: string, params?: unknown[]): this;
|
|
66
|
+
/** NOT EXISTS (子查询) */
|
|
67
|
+
notExists(sql: string, params?: unknown[]): this;
|
|
68
|
+
/**
|
|
69
|
+
* 追加自定义条件片段(参数绑定)。
|
|
70
|
+
* 仅用于无法用 eq/like 表达的括号 OR 等场景;列名须自行保证安全。
|
|
71
|
+
*/
|
|
72
|
+
apply(sql: string, params?: unknown[]): this;
|
|
73
|
+
/** 括号分组:fn 内条件作为整体与外层 AND/OR 连接(内层沿用本 Wrapper 方言) */
|
|
74
|
+
nested(fn: (w: QueryWrapper) => void): this;
|
|
75
|
+
/** 大数组按 batchInSize 拆成多个 IN,用 OR / AND 连接 */
|
|
76
|
+
private inChunks;
|
|
77
|
+
in(column: string, values: unknown[]): this;
|
|
78
|
+
/** `NOT IN (...)`;空数组视为永真(不加限制),与 in([]) 永假对称 */
|
|
79
|
+
notIn(column: string, values: unknown[]): this;
|
|
80
|
+
between(column: string, start: unknown, end: unknown): this;
|
|
81
|
+
notBetween(column: string, start: unknown, end: unknown): this;
|
|
82
|
+
/**
|
|
83
|
+
* 按已注册数据源方言创建 Wrapper(避免默认 mysql 引号用在 PG/MSSQL 上)。
|
|
84
|
+
* @example QueryWrapper.forDatasource("postgresql").eq("status", 1)
|
|
85
|
+
*/
|
|
86
|
+
static forDatasource(name?: string): QueryWrapper;
|
|
87
|
+
isNull(column: string): this;
|
|
88
|
+
isNotNull(column: string): this;
|
|
89
|
+
orderByAsc(column: string): this;
|
|
90
|
+
orderByDesc(column: string): this;
|
|
91
|
+
/**
|
|
92
|
+
* GROUP BY 列(白名单标识符)。可多次调用追加。
|
|
93
|
+
* @example wrapper.select("status").groupBy("status")
|
|
94
|
+
*/
|
|
95
|
+
groupBy(...columns: string[]): this;
|
|
96
|
+
/**
|
|
97
|
+
* HAVING 条件(参数绑定)。可多次调用,以 AND 连接。
|
|
98
|
+
* 聚合表达式由调用方书写,列名请自行保证安全。
|
|
99
|
+
* @example wrapper.groupBy("status").having("COUNT(*) > ?", [1])
|
|
100
|
+
*/
|
|
101
|
+
having(sql: string, params?: unknown[]): this;
|
|
102
|
+
/**
|
|
103
|
+
* 追加安全白名单片段(禁止任意 SQL)。
|
|
104
|
+
* 仅允许:LIMIT n [OFFSET m] / FOR UPDATE / LOCK IN SHARE MODE
|
|
105
|
+
*/
|
|
106
|
+
last(sql: string): this;
|
|
107
|
+
/** 生成 SELECT / WHERE / GROUP BY / HAVING / ORDER BY / LAST 片段 */
|
|
108
|
+
build(): SqlFragment;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=QueryWrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QueryWrapper.d.ts","sourceRoot":"","sources":["../src/QueryWrapper.ts"],"names":[],"mappings":"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"}
|