@pangza/orm 0.0.0-stage → 1.0.0

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 (142) hide show
  1. package/README.md +2 -2
  2. package/dist/BaseMapper.d.ts +112 -0
  3. package/dist/BaseMapper.d.ts.map +1 -0
  4. package/dist/BaseMapper.js +653 -0
  5. package/dist/BaseMapper.js.map +1 -0
  6. package/dist/DataSource.d.ts +61 -0
  7. package/dist/DataSource.d.ts.map +1 -0
  8. package/dist/DataSource.js +350 -0
  9. package/dist/DataSource.js.map +1 -0
  10. package/dist/Db.d.ts +67 -0
  11. package/dist/Db.d.ts.map +1 -0
  12. package/dist/Db.js +222 -0
  13. package/dist/Db.js.map +1 -0
  14. package/dist/IdType.d.ts +22 -0
  15. package/dist/IdType.d.ts.map +1 -0
  16. package/dist/IdType.js +34 -0
  17. package/dist/IdType.js.map +1 -0
  18. package/dist/QueryWrapper.d.ts +110 -0
  19. package/dist/QueryWrapper.d.ts.map +1 -0
  20. package/dist/QueryWrapper.js +343 -0
  21. package/dist/QueryWrapper.js.map +1 -0
  22. package/dist/config.d.ts +12 -0
  23. package/dist/config.d.ts.map +1 -0
  24. package/dist/config.js +80 -0
  25. package/dist/config.js.map +1 -0
  26. package/dist/dialect.d.ts +41 -0
  27. package/dist/dialect.d.ts.map +1 -0
  28. package/dist/dialect.js +171 -0
  29. package/dist/dialect.js.map +1 -0
  30. package/dist/enable.d.ts +12 -0
  31. package/dist/enable.d.ts.map +1 -0
  32. package/dist/enable.js +31 -0
  33. package/dist/enable.js.map +1 -0
  34. package/dist/entityDecorators.d.ts +77 -0
  35. package/dist/entityDecorators.d.ts.map +1 -0
  36. package/dist/entityDecorators.js +150 -0
  37. package/dist/entityDecorators.js.map +1 -0
  38. package/dist/errors.d.ts +11 -0
  39. package/dist/errors.d.ts.map +1 -0
  40. package/dist/errors.js +22 -0
  41. package/dist/errors.js.map +1 -0
  42. package/dist/fieldSelect.d.ts +49 -0
  43. package/dist/fieldSelect.d.ts.map +1 -0
  44. package/dist/fieldSelect.js +53 -0
  45. package/dist/fieldSelect.js.map +1 -0
  46. package/dist/fill.d.ts +8 -0
  47. package/dist/fill.d.ts.map +1 -0
  48. package/dist/fill.js +47 -0
  49. package/dist/fill.js.map +1 -0
  50. package/dist/flag.d.ts +2 -0
  51. package/dist/flag.d.ts.map +1 -0
  52. package/dist/flag.js +8 -0
  53. package/dist/flag.js.map +1 -0
  54. package/dist/hydrate.d.ts +38 -0
  55. package/dist/hydrate.d.ts.map +1 -0
  56. package/dist/hydrate.js +325 -0
  57. package/dist/hydrate.js.map +1 -0
  58. package/dist/identifier.d.ts +14 -0
  59. package/dist/identifier.d.ts.map +1 -0
  60. package/dist/identifier.js +51 -0
  61. package/dist/identifier.js.map +1 -0
  62. package/dist/index.d.ts +41 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +122 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/relation.d.ts +72 -0
  67. package/dist/relation.d.ts.map +1 -0
  68. package/dist/relation.js +150 -0
  69. package/dist/relation.js.map +1 -0
  70. package/dist/resultMap.d.ts +7 -0
  71. package/dist/resultMap.d.ts.map +1 -0
  72. package/dist/resultMap.js +25 -0
  73. package/dist/resultMap.js.map +1 -0
  74. package/dist/security.d.ts +16 -0
  75. package/dist/security.d.ts.map +1 -0
  76. package/dist/security.js +50 -0
  77. package/dist/security.js.map +1 -0
  78. package/dist/sqlDecorators.d.ts +60 -0
  79. package/dist/sqlDecorators.d.ts.map +1 -0
  80. package/dist/sqlDecorators.js +147 -0
  81. package/dist/sqlDecorators.js.map +1 -0
  82. package/dist/sqlLog.d.ts +30 -0
  83. package/dist/sqlLog.d.ts.map +1 -0
  84. package/dist/sqlLog.js +183 -0
  85. package/dist/sqlLog.js.map +1 -0
  86. package/dist/sqlTemplate.d.ts +38 -0
  87. package/dist/sqlTemplate.d.ts.map +1 -0
  88. package/dist/sqlTemplate.js +112 -0
  89. package/dist/sqlTemplate.js.map +1 -0
  90. package/dist/table.d.ts +17 -0
  91. package/dist/table.d.ts.map +1 -0
  92. package/dist/table.js +55 -0
  93. package/dist/table.js.map +1 -0
  94. package/dist/tableSearch.d.ts +72 -0
  95. package/dist/tableSearch.d.ts.map +1 -0
  96. package/dist/tableSearch.js +232 -0
  97. package/dist/tableSearch.js.map +1 -0
  98. package/dist/transactional.d.ts +27 -0
  99. package/dist/transactional.d.ts.map +1 -0
  100. package/dist/transactional.js +57 -0
  101. package/dist/transactional.js.map +1 -0
  102. package/dist/types.d.ts +155 -0
  103. package/dist/types.d.ts.map +1 -0
  104. package/dist/types.js +3 -0
  105. package/dist/types.js.map +1 -0
  106. package/dist/xml/MapperXml.d.ts +24 -0
  107. package/dist/xml/MapperXml.d.ts.map +1 -0
  108. package/dist/xml/MapperXml.js +92 -0
  109. package/dist/xml/MapperXml.js.map +1 -0
  110. package/dist/xml/execute.d.ts +12 -0
  111. package/dist/xml/execute.d.ts.map +1 -0
  112. package/dist/xml/execute.js +54 -0
  113. package/dist/xml/execute.js.map +1 -0
  114. package/dist/xml/index.d.ts +11 -0
  115. package/dist/xml/index.d.ts.map +1 -0
  116. package/dist/xml/index.js +29 -0
  117. package/dist/xml/index.js.map +1 -0
  118. package/dist/xml/loadMappers.d.ts +14 -0
  119. package/dist/xml/loadMappers.d.ts.map +1 -0
  120. package/dist/xml/loadMappers.js +171 -0
  121. package/dist/xml/loadMappers.js.map +1 -0
  122. package/dist/xml/parseMapperXml.d.ts +6 -0
  123. package/dist/xml/parseMapperXml.d.ts.map +1 -0
  124. package/dist/xml/parseMapperXml.js +225 -0
  125. package/dist/xml/parseMapperXml.js.map +1 -0
  126. package/dist/xml/registry.d.ts +15 -0
  127. package/dist/xml/registry.d.ts.map +1 -0
  128. package/dist/xml/registry.js +57 -0
  129. package/dist/xml/registry.js.map +1 -0
  130. package/dist/xml/renderSql.d.ts +6 -0
  131. package/dist/xml/renderSql.d.ts.map +1 -0
  132. package/dist/xml/renderSql.js +187 -0
  133. package/dist/xml/renderSql.js.map +1 -0
  134. package/dist/xml/types.d.ts +52 -0
  135. package/dist/xml/types.d.ts.map +1 -0
  136. package/dist/xml/types.js +3 -0
  137. package/dist/xml/types.js.map +1 -0
  138. package/dist/xml/xmlMapper.d.ts +16 -0
  139. package/dist/xml/xmlMapper.d.ts.map +1 -0
  140. package/dist/xml/xmlMapper.js +49 -0
  141. package/dist/xml/xmlMapper.js.map +1 -0
  142. package/package.json +35 -4
@@ -0,0 +1,72 @@
1
+ import "reflect-metadata";
2
+ import { QueryWrapper } from "./QueryWrapper";
3
+ import type { PageQuery } from "./types";
4
+ /** 对齐 Java OperTypeEnum(并补充 NOT_* / IN / BETWEEN / IS_NULL) */
5
+ export declare const OperTypeEnum: {
6
+ readonly EQ: "EQ";
7
+ readonly LIKE: "LIKE";
8
+ readonly LIKE_LEFT: "LIKE_LEFT";
9
+ readonly LIKE_RIGHT: "LIKE_RIGHT";
10
+ readonly NOT_LIKE: "NOT_LIKE";
11
+ readonly GT: "GT";
12
+ readonly GE: "GE";
13
+ readonly LT: "LT";
14
+ readonly LE: "LE";
15
+ readonly NE: "NE";
16
+ readonly IN: "IN";
17
+ readonly NOT_IN: "NOT_IN";
18
+ readonly BETWEEN: "BETWEEN";
19
+ readonly NOT_BETWEEN: "NOT_BETWEEN";
20
+ readonly IS_NULL: "IS_NULL";
21
+ readonly IS_NOT_NULL: "IS_NOT_NULL";
22
+ };
23
+ export type OperType = (typeof OperTypeEnum)[keyof typeof OperTypeEnum];
24
+ export interface TableSearchOptions {
25
+ /** 数据库列名;空则用字段名 camel → snake(nickName → nick_name) */
26
+ column?: string;
27
+ /** 默认 EQ */
28
+ operator?: OperType;
29
+ }
30
+ export interface TableSearchMeta {
31
+ property: string;
32
+ column: string;
33
+ operator: OperType;
34
+ }
35
+ /** 对齐 Java QueryWrapperAndPage */
36
+ export interface QueryWrapperAndPage {
37
+ queryWrapper: QueryWrapper;
38
+ page: Required<PageQuery>;
39
+ }
40
+ type FormCtor = Function;
41
+ type WrapperConsumer = (wrapper: QueryWrapper) => void;
42
+ /**
43
+ * 标记分页/列表查询字段(对齐 Java @TableSearch)。
44
+ *
45
+ * @example
46
+ * class UserPageDTO {
47
+ * @TableSearch({ operator: OperTypeEnum.LIKE })
48
+ * username?: string;
49
+ * @TableSearch({ column: "name_zh" })
50
+ * name?: string;
51
+ * }
52
+ */
53
+ export declare function TableSearch(options?: TableSearchOptions | OperType): PropertyDecorator;
54
+ /** 读取类上全部 @TableSearch 元数据(含父类,子类覆盖) */
55
+ export declare function getTableSearchMeta(formClass: FormCtor): TableSearchMeta[];
56
+ /**
57
+ * 根据表单 + DTO 类上的 @TableSearch 构建 QueryWrapper。
58
+ * JSON body 无原型信息,故第二参数必须传类(如 UserPageDTO)。
59
+ */
60
+ export declare function getQueryWrapper(form: unknown, formClass: FormCtor, consumer?: WrapperConsumer): QueryWrapper;
61
+ /**
62
+ * 构建 QueryWrapper + 分页参数。
63
+ *
64
+ * @example
65
+ * getQueryWrapperAndPage(form, UserPageDTO)
66
+ * getQueryWrapperAndPage(form, UserPageDTO, pageNum, pageSize)
67
+ * getQueryWrapperAndPage(form, UserPageDTO, pageNum, pageSize, (w) => w.orderByDesc('create_time'))
68
+ * getQueryWrapperAndPage(form, UserPageDTO, (w) => w.orderByDesc('id'))
69
+ */
70
+ export declare function getQueryWrapperAndPage(form: unknown, formClass: FormCtor, currentOrConsumer?: number | WrapperConsumer, size?: number, consumer?: WrapperConsumer): QueryWrapperAndPage;
71
+ export {};
72
+ //# sourceMappingURL=tableSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableSearch.d.ts","sourceRoot":"","sources":["../src/tableSearch.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,+DAA+D;AAC/D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;CAiBf,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAExE,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,kCAAkC;AAClC,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,YAAY,CAAC;IAC3B,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;CAC3B;AAED,KAAK,QAAQ,GAAG,QAAQ,CAAC;AACzB,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;AAmBvD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,OAAO,CAAC,EAAE,kBAAkB,GAAG,QAAQ,GACtC,iBAAiB,CAcnB;AAUD,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,QAAQ,GAAG,eAAe,EAAE,CAQzE;AA6HD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,QAAQ,EACnB,QAAQ,CAAC,EAAE,eAAe,GACzB,YAAY,CAKd;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,QAAQ,EACnB,iBAAiB,CAAC,EAAE,MAAM,GAAG,eAAe,EAC5C,IAAI,CAAC,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,eAAe,GACzB,mBAAmB,CAuBrB"}
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OperTypeEnum = void 0;
4
+ exports.TableSearch = TableSearch;
5
+ exports.getTableSearchMeta = getTableSearchMeta;
6
+ exports.getQueryWrapper = getQueryWrapper;
7
+ exports.getQueryWrapperAndPage = getQueryWrapperAndPage;
8
+ require("reflect-metadata");
9
+ const beanKeys_1 = require("@pangza/core/Json/beanKeys");
10
+ const case_1 = require("@pangza/core/utils/case");
11
+ const QueryWrapper_1 = require("./QueryWrapper");
12
+ /** 对齐 Java OperTypeEnum(并补充 NOT_* / IN / BETWEEN / IS_NULL) */
13
+ exports.OperTypeEnum = {
14
+ EQ: "EQ",
15
+ LIKE: "LIKE",
16
+ LIKE_LEFT: "LIKE_LEFT",
17
+ LIKE_RIGHT: "LIKE_RIGHT",
18
+ NOT_LIKE: "NOT_LIKE",
19
+ GT: "GT",
20
+ GE: "GE",
21
+ LT: "LT",
22
+ LE: "LE",
23
+ NE: "NE",
24
+ IN: "IN",
25
+ NOT_IN: "NOT_IN",
26
+ BETWEEN: "BETWEEN",
27
+ NOT_BETWEEN: "NOT_BETWEEN",
28
+ IS_NULL: "IS_NULL",
29
+ IS_NOT_NULL: "IS_NOT_NULL",
30
+ };
31
+ const TABLE_SEARCH_KEY = Symbol.for("pangza.orm.tableSearch");
32
+ function searchMap(ctor) {
33
+ return (Reflect.getOwnMetadata(TABLE_SEARCH_KEY, ctor) ??
34
+ {});
35
+ }
36
+ function resolveColumn(property, column) {
37
+ const c = column?.trim();
38
+ if (c)
39
+ return c;
40
+ return (0, case_1.camelToSnake)(property);
41
+ }
42
+ /**
43
+ * 标记分页/列表查询字段(对齐 Java @TableSearch)。
44
+ *
45
+ * @example
46
+ * class UserPageDTO {
47
+ * @TableSearch({ operator: OperTypeEnum.LIKE })
48
+ * username?: string;
49
+ * @TableSearch({ column: "name_zh" })
50
+ * name?: string;
51
+ * }
52
+ */
53
+ function TableSearch(options) {
54
+ return (target, propertyKey) => {
55
+ const ctor = target.constructor;
56
+ const prop = String(propertyKey);
57
+ const opts = typeof options === "string" ? { operator: options } : options ?? {};
58
+ const map = { ...searchMap(ctor) };
59
+ map[prop] = {
60
+ column: resolveColumn(prop, opts.column),
61
+ operator: opts.operator ?? exports.OperTypeEnum.EQ,
62
+ };
63
+ Reflect.defineMetadata(TABLE_SEARCH_KEY, map, ctor);
64
+ (0, beanKeys_1.addBeanKey)(ctor, prop);
65
+ };
66
+ }
67
+ function collectSearchMap(ctor) {
68
+ const proto = Object.getPrototypeOf(ctor.prototype);
69
+ const parentCtor = proto?.constructor;
70
+ const parentMap = parentCtor && parentCtor !== Object ? collectSearchMap(parentCtor) : {};
71
+ return { ...parentMap, ...searchMap(ctor) };
72
+ }
73
+ /** 读取类上全部 @TableSearch 元数据(含父类,子类覆盖) */
74
+ function getTableSearchMeta(formClass) {
75
+ return Object.entries(collectSearchMap(formClass)).map(([property, meta]) => ({
76
+ property,
77
+ column: meta.column,
78
+ operator: meta.operator,
79
+ }));
80
+ }
81
+ function isEmptyValue(value) {
82
+ if (value == null)
83
+ return true;
84
+ if (typeof value === "string" && value.trim() === "")
85
+ return true;
86
+ if (Array.isArray(value) && value.length === 0)
87
+ return true;
88
+ return false;
89
+ }
90
+ function toArray(value) {
91
+ if (Array.isArray(value))
92
+ return value;
93
+ if (typeof value === "string") {
94
+ return value
95
+ .split(",")
96
+ .map((s) => s.trim())
97
+ .filter((s) => s !== "");
98
+ }
99
+ return [value];
100
+ }
101
+ function toBetweenPair(value) {
102
+ if (Array.isArray(value) && value.length >= 2) {
103
+ return [value[0], value[1]];
104
+ }
105
+ if (typeof value === "string" && value.includes(",")) {
106
+ const parts = value.split(",").map((s) => s.trim());
107
+ if (parts.length >= 2)
108
+ return [parts[0], parts[1]];
109
+ }
110
+ return null;
111
+ }
112
+ function applyOperator(wrapper, operator, column, value) {
113
+ switch (operator) {
114
+ case exports.OperTypeEnum.LIKE:
115
+ wrapper.like(column, String(value));
116
+ break;
117
+ case exports.OperTypeEnum.LIKE_LEFT:
118
+ wrapper.likeLeft(column, String(value));
119
+ break;
120
+ case exports.OperTypeEnum.LIKE_RIGHT:
121
+ wrapper.likeRight(column, String(value));
122
+ break;
123
+ case exports.OperTypeEnum.NOT_LIKE:
124
+ wrapper.notLike(column, String(value));
125
+ break;
126
+ case exports.OperTypeEnum.GT:
127
+ wrapper.gt(column, value);
128
+ break;
129
+ case exports.OperTypeEnum.GE:
130
+ wrapper.ge(column, value);
131
+ break;
132
+ case exports.OperTypeEnum.LT:
133
+ wrapper.lt(column, value);
134
+ break;
135
+ case exports.OperTypeEnum.LE:
136
+ wrapper.le(column, value);
137
+ break;
138
+ case exports.OperTypeEnum.NE:
139
+ wrapper.ne(column, value);
140
+ break;
141
+ case exports.OperTypeEnum.IN:
142
+ wrapper.in(column, toArray(value));
143
+ break;
144
+ case exports.OperTypeEnum.NOT_IN:
145
+ wrapper.notIn(column, toArray(value));
146
+ break;
147
+ case exports.OperTypeEnum.BETWEEN: {
148
+ const pair = toBetweenPair(value);
149
+ if (!pair) {
150
+ throw new Error(`@TableSearch BETWEEN 需要 [start, end] 或 "start,end",字段列: ${column}`);
151
+ }
152
+ wrapper.between(column, pair[0], pair[1]);
153
+ break;
154
+ }
155
+ case exports.OperTypeEnum.NOT_BETWEEN: {
156
+ const pair = toBetweenPair(value);
157
+ if (!pair) {
158
+ throw new Error(`@TableSearch NOT_BETWEEN 需要 [start, end] 或 "start,end",字段列: ${column}`);
159
+ }
160
+ wrapper.notBetween(column, pair[0], pair[1]);
161
+ break;
162
+ }
163
+ case exports.OperTypeEnum.IS_NULL:
164
+ wrapper.isNull(column);
165
+ break;
166
+ case exports.OperTypeEnum.IS_NOT_NULL:
167
+ wrapper.isNotNull(column);
168
+ break;
169
+ case exports.OperTypeEnum.EQ:
170
+ default:
171
+ wrapper.eq(column, value);
172
+ break;
173
+ }
174
+ }
175
+ function buildFromForm(form, formClass, wrapper) {
176
+ if (form == null || typeof form !== "object")
177
+ return;
178
+ const data = form;
179
+ for (const meta of getTableSearchMeta(formClass)) {
180
+ const value = data[meta.property];
181
+ // IS_NULL / IS_NOT_NULL 不依赖表单值;其它运算符空值跳过
182
+ if (meta.operator !== exports.OperTypeEnum.IS_NULL &&
183
+ meta.operator !== exports.OperTypeEnum.IS_NOT_NULL &&
184
+ isEmptyValue(value)) {
185
+ continue;
186
+ }
187
+ applyOperator(wrapper, meta.operator, meta.column, value);
188
+ }
189
+ }
190
+ /**
191
+ * 根据表单 + DTO 类上的 @TableSearch 构建 QueryWrapper。
192
+ * JSON body 无原型信息,故第二参数必须传类(如 UserPageDTO)。
193
+ */
194
+ function getQueryWrapper(form, formClass, consumer) {
195
+ const wrapper = new QueryWrapper_1.QueryWrapper();
196
+ buildFromForm(form, formClass, wrapper);
197
+ consumer?.(wrapper);
198
+ return wrapper;
199
+ }
200
+ /**
201
+ * 构建 QueryWrapper + 分页参数。
202
+ *
203
+ * @example
204
+ * getQueryWrapperAndPage(form, UserPageDTO)
205
+ * getQueryWrapperAndPage(form, UserPageDTO, pageNum, pageSize)
206
+ * getQueryWrapperAndPage(form, UserPageDTO, pageNum, pageSize, (w) => w.orderByDesc('create_time'))
207
+ * getQueryWrapperAndPage(form, UserPageDTO, (w) => w.orderByDesc('id'))
208
+ */
209
+ function getQueryWrapperAndPage(form, formClass, currentOrConsumer, size, consumer) {
210
+ let current = 1;
211
+ let pageSize = 10;
212
+ let fn;
213
+ if (typeof currentOrConsumer === "function") {
214
+ fn = currentOrConsumer;
215
+ }
216
+ else {
217
+ if (currentOrConsumer != null) {
218
+ const n = Number(currentOrConsumer);
219
+ current = Number.isFinite(n) && n > 0 ? n : 1;
220
+ }
221
+ if (size != null) {
222
+ const n = Number(size);
223
+ pageSize = Number.isFinite(n) && n > 0 ? n : 10;
224
+ }
225
+ fn = consumer;
226
+ }
227
+ return {
228
+ queryWrapper: getQueryWrapper(form, formClass, fn),
229
+ page: { current, size: pageSize },
230
+ };
231
+ }
232
+ //# sourceMappingURL=tableSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tableSearch.js","sourceRoot":"","sources":["../src/tableSearch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { TransactionPropagation } from "./types";
2
+ export interface TransactionalOptions {
3
+ /** 事务所属数据源,默认 "default" */
4
+ datasource?: string;
5
+ /**
6
+ * 传播行为(对齐 Spring):
7
+ * - `REQUIRED`(默认):加入外层或新建
8
+ * - `REQUIRES_NEW`:挂起外层,独立提交/回滚
9
+ */
10
+ propagation?: TransactionPropagation;
11
+ }
12
+ /**
13
+ * 事务装饰器(对齐 Spring @Transactional)。
14
+ * 可标在类或方法上;方法内同数据源的 Db.queryOn / BaseMapper 走同一连接,抛错则回滚。
15
+ *
16
+ * @example
17
+ * @Transactional()
18
+ * async transfer() { ... }
19
+ *
20
+ * @Transactional({ propagation: "REQUIRES_NEW" })
21
+ * async auditLog() { ... }
22
+ *
23
+ * @Transactional({ datasource: "pg" })
24
+ * async syncToPg() { ... }
25
+ */
26
+ export declare function Transactional(options?: TransactionalOptions): MethodDecorator & ClassDecorator;
27
+ //# sourceMappingURL=transactional.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional.d.ts","sourceRoot":"","sources":["../src/transactional.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAMtD,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,eAAe,GAAG,cAAc,CA8BlC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Transactional = Transactional;
7
+ const Db_1 = __importDefault(require("./Db"));
8
+ const TX_WRAPPED = Symbol.for("pangza.orm.transactional.wrapped");
9
+ function wrapTransactional(fn, datasource = "default", propagation = "REQUIRED") {
10
+ if (fn[TX_WRAPPED])
11
+ return fn;
12
+ const ds = (datasource || "default").trim() || "default";
13
+ const wrapped = async function (...args) {
14
+ return Db_1.default.transactionOn(ds, async () => fn.apply(this, args), { propagation });
15
+ };
16
+ wrapped[TX_WRAPPED] = true;
17
+ return wrapped;
18
+ }
19
+ /**
20
+ * 事务装饰器(对齐 Spring @Transactional)。
21
+ * 可标在类或方法上;方法内同数据源的 Db.queryOn / BaseMapper 走同一连接,抛错则回滚。
22
+ *
23
+ * @example
24
+ * @Transactional()
25
+ * async transfer() { ... }
26
+ *
27
+ * @Transactional({ propagation: "REQUIRES_NEW" })
28
+ * async auditLog() { ... }
29
+ *
30
+ * @Transactional({ datasource: "pg" })
31
+ * async syncToPg() { ... }
32
+ */
33
+ function Transactional(options) {
34
+ const datasource = options?.datasource ?? "default";
35
+ const propagation = options?.propagation ?? "REQUIRED";
36
+ return ((target, propertyKey, descriptor) => {
37
+ if (propertyKey !== undefined && descriptor && typeof descriptor.value === "function") {
38
+ descriptor.value = wrapTransactional(descriptor.value, datasource, propagation);
39
+ return descriptor;
40
+ }
41
+ const proto = target.prototype;
42
+ if (!proto)
43
+ return;
44
+ for (const key of Object.getOwnPropertyNames(proto)) {
45
+ if (key === "constructor")
46
+ continue;
47
+ const desc = Object.getOwnPropertyDescriptor(proto, key);
48
+ if (!desc || typeof desc.value !== "function")
49
+ continue;
50
+ Object.defineProperty(proto, key, {
51
+ ...desc,
52
+ value: wrapTransactional(desc.value, datasource, propagation),
53
+ });
54
+ }
55
+ });
56
+ }
57
+ //# sourceMappingURL=transactional.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transactional.js","sourceRoot":"","sources":["../src/transactional.ts"],"names":[],"mappings":";;;;;AAkDA,sCAgCC;AAlFD,8CAAsB;AAGtB,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAelE,SAAS,iBAAiB,CACxB,EAAK,EACL,UAAU,GAAG,SAAS,EACtB,cAAsC,UAAU;IAEhD,IAAK,EAAU,CAAC,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IACzD,MAAM,OAAO,GAAG,KAAK,WAA0B,GAAG,IAAe;QAC/D,OAAO,YAAE,CAAC,aAAa,CACrB,EAAE,EACF,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,EAChC,EAAE,WAAW,EAAE,CAChB,CAAC;IACJ,CAAC,CAAC;IACD,OAAe,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACpC,OAAO,OAAuB,CAAC;AACjC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,aAAa,CAC3B,OAA8B;IAE9B,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,SAAS,CAAC;IACpD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,UAAU,CAAC;IACvD,OAAO,CAAC,CACN,MAAyB,EACzB,WAA6B,EAC7B,UAA+B,EAC/B,EAAE;QACF,IAAI,WAAW,KAAK,SAAS,IAAI,UAAU,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACtF,UAAU,CAAC,KAAK,GAAG,iBAAiB,CAClC,UAAU,CAAC,KAAK,EAChB,UAAU,EACV,WAAW,CACZ,CAAC;YACF,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,KAAK,GAAI,MAAiC,CAAC,SAAS,CAAC;QAC3D,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpD,IAAI,GAAG,KAAK,aAAa;gBAAE,SAAS;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACzD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU;gBAAE,SAAS;YACxD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;gBAChC,GAAG,IAAI;gBACP,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC;aAC9D,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAqC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,155 @@
1
+ /** 兼容:单库 MySQL 连接配置(也可用作 DataSourceConfig) */
2
+ export interface MysqlConfig {
3
+ host?: string;
4
+ port?: number;
5
+ user?: string;
6
+ password?: string;
7
+ database?: string;
8
+ connectionLimit?: number;
9
+ }
10
+ /** BaseMapper 表级配置(可覆盖全局 YAML / configureOrm) */
11
+ export interface MapperOptions {
12
+ /** 表名 */
13
+ table: string;
14
+ /** 主键,默认 id */
15
+ idField?: string;
16
+ /**
17
+ * 数据源名称(Db.register 的名字),默认 "default"。
18
+ * 多库 / 多数据源时在此指定。
19
+ */
20
+ datasource?: string;
21
+ /** 是否开启逻辑删除 */
22
+ logicDelete?: boolean;
23
+ /** 逻辑删除字段名 */
24
+ logicDeleteField?: string;
25
+ /** 已删除值 */
26
+ logicDeleteValue?: unknown;
27
+ /** 未删除值 */
28
+ logicNotDeleteValue?: unknown;
29
+ /** 是否开启乐观锁 */
30
+ optimisticLock?: boolean;
31
+ /** 版本号字段名 */
32
+ versionField?: string;
33
+ /** 是否自动填充 create/update 字段,默认 true */
34
+ fill?: boolean;
35
+ /**
36
+ * 更新时对 `null` 的策略(`undefined` 始终跳过):
37
+ * - `INCLUDE`(默认):写入 NULL
38
+ * - `IGNORE`:跳过 null,不更新该列
39
+ */
40
+ updateNullStrategy?: "INCLUDE" | "IGNORE";
41
+ /**
42
+ * 实体类(带 @TableName / @TableId / @TableField)。
43
+ * 用于读取表字段填充策略 insertFill / updateFill。
44
+ */
45
+ entity?: Function;
46
+ }
47
+ /** 表级配置(不含 table) */
48
+ export type MapperTableOptions = Omit<MapperOptions, "table">;
49
+ /** 解析后的全局 ORM 配置 */
50
+ export interface ResolvedOrmConfig {
51
+ logicDelete: boolean;
52
+ logicDeleteField: string;
53
+ logicDeleteValue: unknown;
54
+ logicNotDeleteValue: unknown;
55
+ optimisticLock: boolean;
56
+ versionField: string;
57
+ /**
58
+ * 全局主键策略(@TableId type 为 NONE 时使用)。
59
+ * 默认 ASSIGN_ID(雪花字符串)。
60
+ */
61
+ idType?: string;
62
+ /**
63
+ * 查询结果下划线列名转驼峰(对齐 MyBatis mapUnderscoreToCamelCase)。
64
+ * 默认 true。
65
+ */
66
+ mapUnderscoreToCamelCase?: boolean;
67
+ fillCreateTime?: string;
68
+ fillUpdateTime?: string;
69
+ fillCreateBy?: string;
70
+ fillUpdateBy?: string;
71
+ /** 是否打印 SQL 日志,默认 false */
72
+ sqlLog?: boolean;
73
+ /**
74
+ * SQL 日志格式:
75
+ * - 字符串模板,占位符 {time} {type} {sql} {params} {cost}
76
+ * - 或自定义函数 (info) => string
77
+ * 默认:`{time} [{type}] {cost}ms | {sql} | params={params}`
78
+ */
79
+ sqlLogFormat?: string | SqlLogFormatFn;
80
+ /** 控制输出片段开关 */
81
+ sqlLogParts?: SqlLogParts;
82
+ /** SQL 日志级别,默认 info */
83
+ sqlLogLevel?: "trace" | "debug" | "info" | "warn";
84
+ /** saveBatch 每批行数,默认 200 */
85
+ batchInsertSize?: number;
86
+ /** updateBatch 每批实体数,默认 200 */
87
+ batchUpdateSize?: number;
88
+ /** 大 IN 分批(QueryWrapper.in / deleteByIds 等),默认 500 */
89
+ batchInSize?: number;
90
+ /** XML 扫描路径(相对项目根或绝对路径),如 mappers/**\/*.xml;空数组表示不启用 */
91
+ mapperLocations?: string[];
92
+ /** 开发态改 XML 热加载,默认 false */
93
+ mapperReload?: boolean;
94
+ }
95
+ /** @Transactional 传播行为(对齐 Spring) */
96
+ export type TransactionPropagation = "REQUIRED" | "REQUIRES_NEW";
97
+ /** SQL 日志各片段开关(时间 / 类型 / 语句 / 参数 / 耗时) */
98
+ export interface SqlLogParts {
99
+ time?: boolean;
100
+ type?: boolean;
101
+ sql?: boolean;
102
+ params?: boolean;
103
+ cost?: boolean;
104
+ }
105
+ /** 单次 SQL 日志上下文 */
106
+ export interface SqlLogInfo {
107
+ time: string;
108
+ type: string;
109
+ sql: string;
110
+ params: unknown[];
111
+ paramsText: string;
112
+ cost: number;
113
+ error?: boolean;
114
+ }
115
+ export type SqlLogFormatFn = (info: SqlLogInfo) => string;
116
+ /** 插入 / 更新拦截器(对齐 MyBatis-Plus MetaObjectHandler) */
117
+ export interface MetaObjectHandler {
118
+ insert?(entity: Record<string, any>): void | Promise<void>;
119
+ update?(entity: Record<string, any>): void | Promise<void>;
120
+ }
121
+ /** 分页查询(MyBatis-Plus Page 风格) */
122
+ export interface PageQuery {
123
+ current?: number;
124
+ size?: number;
125
+ }
126
+ /**
127
+ * 查询时关联 / 字段 @Select 填充选项。
128
+ * - `relations` 省略:仅 eager
129
+ * - `false`:不填充关联与字段 @Select
130
+ * - `string[]`:只填充列出的属性(含 lazy 关联)
131
+ */
132
+ export interface SelectQueryOptions {
133
+ limit?: number;
134
+ relations?: boolean | string[];
135
+ }
136
+ /** 分页结果 */
137
+ export interface IPage<T> {
138
+ records: T[];
139
+ total: number;
140
+ current: number;
141
+ size: number;
142
+ }
143
+ /** QueryWrapper SQL 片段 */
144
+ export interface SqlFragment {
145
+ selectSql: string;
146
+ whereSql: string;
147
+ /** `GROUP BY ...`,无则空串 */
148
+ groupSql: string;
149
+ /** `HAVING ...`,无则空串;参数已并入 params(接在 WHERE 之后) */
150
+ havingSql: string;
151
+ orderSql: string;
152
+ lastSql: string;
153
+ params: unknown[];
154
+ }
155
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import "reflect-metadata";
2
+ export interface MapperXmlOptions {
3
+ /** 默认数据源,可被语句 datasource 覆盖 */
4
+ datasource?: string;
5
+ }
6
+ /**
7
+ * 将类方法绑定到 XML namespace(方法名 = 语句 id)。
8
+ *
9
+ * @example
10
+ * @MapperXml("com.pangza.UserMapper")
11
+ * class UserMapper {
12
+ * findByRole(@Param("roleId") roleId: number): Promise<any[]> {
13
+ * throw new Error("bound by XML");
14
+ * }
15
+ * }
16
+ */
17
+ export declare function MapperXml(namespace: string, options?: MapperXmlOptions): ClassDecorator;
18
+ export declare function getMapperXmlNamespace(ctor: Function): string | undefined;
19
+ /** 标记方法已由 @Select 等绑定,供 MapperXml 冲突检测 */
20
+ export declare function markSqlMethodBound(fn: Function, kind?: string): void;
21
+ export declare function isSqlMethodBound(fn: Function): boolean;
22
+ /** 启动时加载 XML(若配置了 mapperLocations) */
23
+ export declare function bootstrapXmlMappers(): void;
24
+ //# sourceMappingURL=MapperXml.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapperXml.d.ts","sourceRoot":"","sources":["../../src/xml/MapperXml.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAU1B,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAqDD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB,cAAc,CAoBhB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAExE;AAED,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,SAAe,GAAG,IAAI,CAE1E;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAEtD;AAED,sCAAsC;AACtC,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}