@eggjs/dal-runtime 4.0.0-beta.9 → 4.0.2-beta.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.
package/README.md CHANGED
@@ -14,4 +14,4 @@
14
14
 
15
15
  ## Usage
16
16
 
17
- Please read [@eggjs/tegg-dal-plugin](../../plugin/dal/README.md)
17
+ Please read [@eggjs/dal-plugin](../../plugin/dal/README.md)
@@ -1,15 +1,18 @@
1
- import { TableModel } from '@eggjs/dal-decorator';
2
- import { type SqlMap } from '@eggjs/tegg-types';
3
- import type { Logger, GenerateSqlMap } from '@eggjs/tegg-types';
4
- export declare class BaseSqlMapGenerator {
5
- private readonly tableModel;
6
- private readonly logger;
7
- constructor(tableModel: TableModel, logger: Logger);
8
- generateAllColumns(countIf: boolean): string;
9
- generateFindByPrimary(): Array<GenerateSqlMap>;
10
- generateFindByIndexes(): GenerateSqlMap[];
11
- generateInsert(): string;
12
- generateUpdate(): string;
13
- generateDelete(): string;
14
- load(): Record<string, SqlMap>;
1
+ import { TableModel } from "@eggjs/dal-decorator";
2
+ import { GenerateSqlMap, Logger, SqlMap } from "@eggjs/tegg-types";
3
+
4
+ //#region src/BaseSqlMap.d.ts
5
+ declare class BaseSqlMapGenerator {
6
+ private readonly tableModel;
7
+ private readonly logger;
8
+ constructor(tableModel: TableModel, logger: Logger);
9
+ generateAllColumns(countIf: boolean): string;
10
+ generateFindByPrimary(): Array<GenerateSqlMap>;
11
+ generateFindByIndexes(): GenerateSqlMap[];
12
+ generateInsert(): string;
13
+ generateUpdate(): string | undefined;
14
+ generateDelete(): string | undefined;
15
+ load(): Record<string, SqlMap>;
15
16
  }
17
+ //#endregion
18
+ export { BaseSqlMapGenerator };
@@ -1,89 +1,76 @@
1
- import _ from 'lodash';
2
- import { TableModel } from '@eggjs/dal-decorator';
3
- import { ColumnType, IndexType, SqlType } from '@eggjs/tegg-types';
4
1
  import { TemplateUtil } from "./TemplateUtil.js";
5
- export class BaseSqlMapGenerator {
6
- constructor(tableModel, logger) {
7
- this.tableModel = tableModel;
8
- this.logger = logger;
9
- }
10
- generateAllColumns(countIf) {
11
- const str = this.tableModel.columns.map(t => `\`${t.columnName}\``)
12
- .join(',');
13
- return countIf ? `{% if $$count == true %}0{% else %}${str}{% endif %}` : str;
14
- }
15
- generateFindByPrimary() {
16
- const result = [];
17
- const primary = this.tableModel.getPrimary();
18
- if (!primary) {
19
- this.logger.warn(`表 \`${this.tableModel.name}\` 没有主键,无法生成主键查询语句。`);
20
- return result;
21
- }
22
- let sql = `SELECT ${this.generateAllColumns(true)}
2
+ import { TableModel } from "@eggjs/dal-decorator";
3
+ import { ColumnType, IndexType, SqlType } from "@eggjs/tegg-types";
4
+ import _ from "lodash";
5
+
6
+ //#region src/BaseSqlMap.ts
7
+ var BaseSqlMapGenerator = class {
8
+ tableModel;
9
+ logger;
10
+ constructor(tableModel, logger) {
11
+ this.tableModel = tableModel;
12
+ this.logger = logger;
13
+ }
14
+ generateAllColumns(countIf) {
15
+ const str = this.tableModel.columns.map((t) => `\`${t.columnName}\``).join(",");
16
+ return countIf ? `{% if $$count == true %}0{% else %}${str}{% endif %}` : str;
17
+ }
18
+ generateFindByPrimary() {
19
+ const result = [];
20
+ const primary = this.tableModel.getPrimary();
21
+ if (!primary) {
22
+ this.logger.warn(`表 \`${this.tableModel.name}\` 没有主键,无法生成主键查询语句。`);
23
+ return result;
24
+ }
25
+ let sql = `SELECT ${this.generateAllColumns(true)}
23
26
  FROM \`${this.tableModel.name}\`
24
27
  WHERE `;
25
- sql += primary.keys.map(indexKey => `\`${indexKey.columnName}\` = {{$${indexKey.propertyName}}}`)
26
- .join(' AND ');
27
- if (primary.keys.length === 1) {
28
- result.push({
29
- type: SqlType.SELECT,
30
- name: `findBy${_.upperFirst(primary.keys[0].propertyName)}`,
31
- sql,
32
- });
33
- }
34
- result.push({
35
- name: 'findByPrimary',
36
- type: SqlType.SELECT,
37
- sql,
38
- });
39
- return result;
40
- }
41
- // TODO index 的左匹配
42
- generateFindByIndexes() {
43
- const sqlMaps = [];
44
- for (const index of this.tableModel.indices) {
45
- if (index.type === IndexType.PRIMARY)
46
- continue;
47
- let sql = `SELECT ${this.generateAllColumns(true)}
28
+ sql += primary.keys.map((indexKey) => `\`${indexKey.columnName}\` = {{$${indexKey.propertyName} | param}}`).join(" AND ");
29
+ if (primary.keys.length === 1) result.push({
30
+ type: SqlType.SELECT,
31
+ name: `findBy${_.upperFirst(primary.keys[0].propertyName)}`,
32
+ sql
33
+ });
34
+ result.push({
35
+ name: "findByPrimary",
36
+ type: SqlType.SELECT,
37
+ sql
38
+ });
39
+ return result;
40
+ }
41
+ generateFindByIndexes() {
42
+ const sqlMaps = [];
43
+ for (const index of this.tableModel.indices) {
44
+ if (index.type === IndexType.PRIMARY) continue;
45
+ let sql = `SELECT ${this.generateAllColumns(true)}
48
46
  FROM \`${this.tableModel.name}\`
49
47
  WHERE `;
50
- sql += index.keys.map(indexKey => {
51
- const s = `\`${indexKey.columnName}\` {{ "IS" if $${indexKey.propertyName} == null else "=" }} {{$${indexKey.propertyName}}}`;
52
- return s;
53
- })
54
- .join(' AND ');
55
- const tempName = _.upperFirst(_.camelCase(index.keys.length === 1 ? index.keys[0].propertyName : index.name));
56
- sqlMaps.push({
57
- name: `findBy${tempName}`,
58
- type: SqlType.SELECT,
59
- sql,
60
- });
61
- sqlMaps.push({
62
- name: `findOneBy${tempName}`,
63
- type: SqlType.SELECT,
64
- sql: `${sql} LIMIT 0, 1`,
65
- });
66
- }
67
- return sqlMaps;
68
- }
69
- generateInsert() {
70
- let sql = `INSERT INTO \`${this.tableModel.name}\` `;
71
- sql += '{% set ___first = true %}';
72
- const keys = [];
73
- const values = [];
74
- for (const column of this.tableModel.columns) {
75
- const { propertyName, columnName, type } = column;
76
- if (column.propertyName !== 'gmtCreate' && column.propertyName !== 'gmtModified') {
77
- // Add filter for Spatial Type
78
- // - toPoint
79
- // - toLine
80
- // - toPolygon
81
- // - toGeometry
82
- // - toMultiPoint
83
- // - toMultiLine
84
- // - toMultiPolygon
85
- // - toGeometryCollection
86
- keys.push((`
48
+ sql += index.keys.map((indexKey) => {
49
+ return `\`${indexKey.columnName}\` {{ "IS" if $${indexKey.propertyName} == null else "=" }} {{$${indexKey.propertyName} | param}}`;
50
+ }).join(" AND ");
51
+ const tempName = _.upperFirst(_.camelCase(index.keys.length === 1 ? index.keys[0].propertyName : index.name));
52
+ sqlMaps.push({
53
+ name: `findBy${tempName}`,
54
+ type: SqlType.SELECT,
55
+ sql
56
+ });
57
+ sqlMaps.push({
58
+ name: `findOneBy${tempName}`,
59
+ type: SqlType.SELECT,
60
+ sql: `${sql} LIMIT 0, 1`
61
+ });
62
+ }
63
+ return sqlMaps;
64
+ }
65
+ generateInsert() {
66
+ let sql = `INSERT INTO \`${this.tableModel.name}\` `;
67
+ sql += "{% set ___first = true %}";
68
+ const keys = [];
69
+ const values = [];
70
+ for (const column of this.tableModel.columns) {
71
+ const { propertyName, columnName, type } = column;
72
+ if (column.propertyName !== "gmtCreate" && column.propertyName !== "gmtModified") {
73
+ keys.push(`
87
74
  {% if $${propertyName} !== undefined %}
88
75
  {% if ___first %}
89
76
  {% set ___first = false %}
@@ -93,10 +80,10 @@ export class BaseSqlMapGenerator {
93
80
 
94
81
  \`${columnName}\`
95
82
  {% endif %}
96
- `).trim());
97
- if (TemplateUtil.isSpatialType(column)) {
98
- const filter = TemplateUtil.getSpatialFilter(column.type.type);
99
- values.push((`
83
+ `.trim());
84
+ if (TemplateUtil.isSpatialType(column)) {
85
+ const filter = TemplateUtil.getSpatialFilter(column.type.type);
86
+ values.push(`
100
87
  {% if $${propertyName} !== undefined %}
101
88
  {% if ___first %}
102
89
  {% set ___first = false %}
@@ -106,10 +93,8 @@ export class BaseSqlMapGenerator {
106
93
 
107
94
  {{$${propertyName} | ${filter}}}
108
95
  {% endif %}
109
- `).trim());
110
- }
111
- else if (column.type.type === ColumnType.JSON) {
112
- values.push((`
96
+ `.trim());
97
+ } else if (column.type.type === ColumnType.JSON) values.push(`
113
98
  {% if $${propertyName} !== undefined %}
114
99
  {% if ___first %}
115
100
  {% set ___first = false %}
@@ -119,10 +104,8 @@ export class BaseSqlMapGenerator {
119
104
 
120
105
  {{$${propertyName} | toJson}}
121
106
  {% endif %}
122
- `).trim());
123
- }
124
- else {
125
- values.push((`
107
+ `.trim());
108
+ else values.push(`
126
109
  {% if $${propertyName} !== undefined %}
127
110
  {% if ___first %}
128
111
  {% set ___first = false %}
@@ -130,32 +113,16 @@ export class BaseSqlMapGenerator {
130
113
  ,
131
114
  {% endif %}
132
115
 
133
- {{$${propertyName}}}
116
+ {{$${propertyName} | param}}
134
117
  {% endif %}
135
- `).trim());
136
- }
137
- }
138
- else {
139
- let now;
140
- // Default value for gmtCreate/gmtModified
141
- // int:UNIX_TEIMESTAMP
142
- // bigint: ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)
143
- // datetime/timestamp Now()
144
- if (type.type === ColumnType.INT) {
145
- // 秒级时间戳
146
- now = 'UNIX_TIMESTAMP()';
147
- }
148
- else if (type.type === ColumnType.BIGINT) {
149
- // 毫秒级时间戳
150
- now = 'ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)';
151
- }
152
- else if (type.type === ColumnType.DATETIME || type.type === ColumnType.TIMESTAMP) {
153
- now = type.precision ? `NOW(${type.precision})` : 'NOW()';
154
- }
155
- else {
156
- this.logger.warn(`unknown type ${type.type} for ${propertyName}`);
157
- }
158
- keys.push((`
118
+ `.trim());
119
+ } else {
120
+ let now;
121
+ if (type.type === ColumnType.INT) now = "UNIX_TIMESTAMP()";
122
+ else if (type.type === ColumnType.BIGINT) now = "ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)";
123
+ else if (type.type === ColumnType.DATETIME || type.type === ColumnType.TIMESTAMP) now = type.precision ? `NOW(${type.precision})` : "NOW()";
124
+ else this.logger.warn(`unknown type ${type.type} for ${propertyName}`);
125
+ keys.push(`
159
126
  {% if ___first %}
160
127
  {% set ___first = false %}
161
128
  {% else %}
@@ -163,49 +130,39 @@ export class BaseSqlMapGenerator {
163
130
  {% endif %}
164
131
 
165
132
  \`${columnName}\`
166
- `).trim());
167
- values.push((`
133
+ `.trim());
134
+ values.push(`
168
135
  {% if ___first %}
169
136
  {% set ___first = false %}
170
137
  {% else %}
171
138
  ,
172
139
  {% endif %}
173
140
 
174
- {{ $${propertyName} if $${propertyName} !== undefined else '${now}' }}
175
- `).trim());
176
- }
177
- }
178
- sql += `(${keys.join('')})`;
179
- sql += '{% set ___first = true %}';
180
- sql += `VALUES(${values.join('')});`;
181
- return sql;
182
- }
183
- generateUpdate() {
184
- const primary = this.tableModel.getPrimary();
185
- if (!primary) {
186
- this.logger.warn(`表 \`${this.tableModel.name}\` 没有主键,无法生成主键更新语句。`);
187
- return;
188
- }
189
- let sql = `UPDATE \`${this.tableModel.name}\` SET`;
190
- sql += '{% set ___first = true %}';
191
- const kv = [];
192
- for (const column of this.tableModel.columns) {
193
- const { type, propertyName, columnName } = column;
194
- let now;
195
- if (type.type === ColumnType.INT) {
196
- // 秒级时间戳
197
- now = 'UNIX_TIMESTAMP()';
198
- }
199
- else if (type.type === ColumnType.BIGINT) {
200
- // 毫秒级时间戳
201
- now = 'ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)';
202
- }
203
- else if (type.type === ColumnType.TIMESTAMP || type.type === ColumnType.DATETIME) {
204
- now = type.precision ? `NOW(${type.precision})` : 'NOW()';
205
- }
206
- // 若无更新时间字段,则自动更新该字段
207
- const temp = propertyName !== 'gmtModified' ?
208
- `
141
+ {{ ($${propertyName} | param) if $${propertyName} !== undefined else '${now}' }}
142
+ `.trim());
143
+ }
144
+ }
145
+ sql += `(${keys.join("")})`;
146
+ sql += "{% set ___first = true %}";
147
+ sql += `VALUES(${values.join("")});`;
148
+ return sql;
149
+ }
150
+ generateUpdate() {
151
+ const primary = this.tableModel.getPrimary();
152
+ if (!primary) {
153
+ this.logger.warn(`表 \`${this.tableModel.name}\` 没有主键,无法生成主键更新语句。`);
154
+ return;
155
+ }
156
+ let sql = `UPDATE \`${this.tableModel.name}\` SET`;
157
+ sql += "{% set ___first = true %}";
158
+ const kv = [];
159
+ for (const column of this.tableModel.columns) {
160
+ const { type, propertyName, columnName } = column;
161
+ let now;
162
+ if (type.type === ColumnType.INT) now = "UNIX_TIMESTAMP()";
163
+ else if (type.type === ColumnType.BIGINT) now = "ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)";
164
+ else if (type.type === ColumnType.TIMESTAMP || type.type === ColumnType.DATETIME) now = type.precision ? `NOW(${type.precision})` : "NOW()";
165
+ const temp = propertyName !== "gmtModified" ? `
209
166
  {% if $${propertyName} !== undefined %}
210
167
  {% if ___first %}
211
168
  {% set ___first = false %}
@@ -213,10 +170,9 @@ export class BaseSqlMapGenerator {
213
170
  ,
214
171
  {% endif %}
215
172
 
216
- \`${columnName}\` = {{$${propertyName}}}
173
+ \`${columnName}\` = {{$${propertyName} | param}}
217
174
  {% endif %}
218
- ` :
219
- `
175
+ ` : `
220
176
  {% if ___first %}
221
177
  {% set ___first = false %}
222
178
  {% else %}
@@ -224,81 +180,70 @@ export class BaseSqlMapGenerator {
224
180
  {% endif %}
225
181
 
226
182
  \`${columnName}\` =
227
- {{ $${propertyName} if $${propertyName} !== undefined else '${now}' }}
183
+ {{ ($${propertyName} | param) if $${propertyName} !== undefined else '${now}' }}
228
184
  `;
229
- kv.push(temp);
230
- }
231
- sql += kv.join('');
232
- sql += `WHERE ${primary.keys.map(indexKey => `\`${indexKey.columnName}\` = {{primary.${indexKey.propertyName}}}`)
233
- .join(' AND ')}`;
234
- return sql;
235
- }
236
- generateDelete() {
237
- const primary = this.tableModel.getPrimary();
238
- if (!primary) {
239
- this.logger.warn(`表 \`${this.tableModel.name}\` 没有主键,无法生成主键删除语句。`);
240
- return;
241
- }
242
- let sql = `DELETE
185
+ kv.push(temp);
186
+ }
187
+ sql += kv.join("");
188
+ sql += `WHERE ${primary.keys.map((indexKey) => `\`${indexKey.columnName}\` = {{primary.${indexKey.propertyName} | param}}`).join(" AND ")}`;
189
+ return sql;
190
+ }
191
+ generateDelete() {
192
+ const primary = this.tableModel.getPrimary();
193
+ if (!primary) {
194
+ this.logger.warn(`表 \`${this.tableModel.name}\` 没有主键,无法生成主键删除语句。`);
195
+ return;
196
+ }
197
+ let sql = `DELETE
243
198
  FROM \`${this.tableModel.name}\`
244
199
  WHERE `;
245
- sql += primary.keys.map(indexKey => `\`${indexKey.columnName}\` = {{${indexKey.propertyName}}}`)
246
- .join(' AND ');
247
- return sql;
248
- }
249
- load() {
250
- const map = {};
251
- map.allColumns = {
252
- type: SqlType.BLOCK,
253
- content: this.generateAllColumns(false),
254
- };
255
- const sqlMaps = [
256
- /**
257
- * 以主键进行索引
258
- *
259
- * + `findByPrimary`
260
- * + 若为单主键,则再加 `findBy键名`
261
- */
262
- ...this.generateFindByPrimary(),
263
- /**
264
- * findBy 各索引
265
- *
266
- * + 若为多列索引,则为 `findBy索引名`
267
- * + 若为单列索引,则为 `findBy列名`
268
- */
269
- ...this.generateFindByIndexes(),
270
- /**
271
- * 插入
272
- */
273
- {
274
- name: 'insert',
275
- type: SqlType.INSERT,
276
- sql: this.generateInsert(),
277
- },
278
- /**
279
- * 主键更新
280
- */
281
- {
282
- name: 'update',
283
- type: SqlType.UPDATE,
284
- sql: this.generateUpdate(),
285
- },
286
- /**
287
- * 主键删除
288
- */
289
- {
290
- name: 'delete',
291
- type: SqlType.DELETE,
292
- sql: this.generateDelete(),
293
- },
294
- ];
295
- for (const sqlMap of sqlMaps) {
296
- map[sqlMap.name] = {
297
- type: sqlMap.type,
298
- sql: sqlMap.sql,
299
- };
300
- }
301
- return map;
302
- }
303
- }
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVNxbE1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlU3FsTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFHaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE1BQU0sT0FBTyxtQkFBbUI7SUFJOUIsWUFBWSxVQUFzQixFQUFFLE1BQWM7UUFDaEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQWdCO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDO2FBQ2hFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNiLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxzQ0FBc0MsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNoRixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE1BQU0sTUFBTSxHQUEwQixFQUFFLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLEdBQUcsR0FBRyxVQUFVLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7d0JBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSTtzQkFDdEIsQ0FBQztRQUVuQixHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxVQUFVLFdBQVcsUUFBUSxDQUFDLFlBQVksSUFBSSxDQUFDO2FBQzlGLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUNwQixJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQzNELEdBQUc7YUFDSixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNWLElBQUksRUFBRSxlQUFlO1lBQ3JCLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTtZQUNwQixHQUFHO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixxQkFBcUI7UUFDbkIsTUFBTSxPQUFPLEdBQTBCLEVBQUUsQ0FBQztRQUMxQyxLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUMsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUFFLFNBQVM7WUFFL0MsSUFBSSxHQUFHLEdBQUcsVUFBVSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDOzBCQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7d0JBQ3RCLENBQUM7WUFFbkIsR0FBRyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO2dCQUMvQixNQUFNLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQyxVQUFVLGtCQUFrQixRQUFRLENBQUMsWUFBWSwyQkFBMkIsUUFBUSxDQUFDLFlBQVksSUFBSSxDQUFDO2dCQUM5SCxPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQztpQkFDQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFFakIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzlHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ1gsSUFBSSxFQUFFLFNBQVMsUUFBUSxFQUFFO2dCQUN6QixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU07Z0JBQ3BCLEdBQUc7YUFDSixDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLElBQUksRUFBRSxZQUFZLFFBQVEsRUFBRTtnQkFDNUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNO2dCQUNwQixHQUFHLEVBQUUsR0FBRyxHQUFHLGFBQWE7YUFDekIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxHQUFHLEdBQUcsaUJBQWlCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFLLENBQUM7UUFDckQsR0FBRyxJQUFJLDJCQUEyQixDQUFDO1FBRW5DLE1BQU0sSUFBSSxHQUFhLEVBQUUsQ0FBQztRQUMxQixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFDNUIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdDLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQztZQUNsRCxJQUFJLE1BQU0sQ0FBQyxZQUFZLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQyxZQUFZLEtBQUssYUFBYSxFQUFFLENBQUM7Z0JBQ2pGLDhCQUE4QjtnQkFDOUIsWUFBWTtnQkFDWixXQUFXO2dCQUNYLGNBQWM7Z0JBQ2QsZUFBZTtnQkFDZixpQkFBaUI7Z0JBQ2pCLGdCQUFnQjtnQkFDaEIsbUJBQW1CO2dCQUNuQix5QkFBeUI7Z0JBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDRixZQUFZOzs7Ozs7O2NBT2YsVUFBVTs7U0FFZixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFWCxJQUFJLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDdkMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQy9ELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDTixZQUFZOzs7Ozs7O2VBT2QsWUFBWSxNQUFNLE1BQU07O1NBRTlCLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNYLENBQUM7cUJBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2hELE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDTixZQUFZOzs7Ozs7O2VBT2QsWUFBWTs7U0FFbEIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ1gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDTixZQUFZOzs7Ozs7O2VBT2QsWUFBWTs7U0FFbEIsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ1gsQ0FBQztZQUdILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLEdBQUcsQ0FBQztnQkFDUiwwQ0FBMEM7Z0JBQzFDLHNCQUFzQjtnQkFDdEIsbURBQW1EO2dCQUNuRCwyQkFBMkI7Z0JBQzNCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ2pDLFFBQVE7b0JBQ1IsR0FBRyxHQUFHLGtCQUFrQixDQUFDO2dCQUMzQixDQUFDO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzNDLFNBQVM7b0JBQ1QsR0FBRyxHQUFHLDBDQUEwQyxDQUFDO2dCQUNuRCxDQUFDO3FCQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUNuRixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDNUQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxRQUFRLFlBQVksRUFBRSxDQUFDLENBQUM7Z0JBQ3BFLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7Ozs7O1lBT1AsVUFBVTtTQUNiLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUVYLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7Ozs7OztjQU9QLFlBQVksUUFBUSxZQUFZLHdCQUF3QixHQUFHO1NBQ2hFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUM7UUFFRCxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDNUIsR0FBRyxJQUFJLDJCQUEyQixDQUFDO1FBQ25DLEdBQUcsSUFBSSxVQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztRQUVyQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxjQUFjO1FBQ1osTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDO1lBQ25FLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxHQUFHLEdBQUcsWUFBWSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksUUFBUSxDQUFDO1FBQ25ELEdBQUcsSUFBSSwyQkFBMkIsQ0FBQztRQUNuQyxNQUFNLEVBQUUsR0FBYSxFQUFFLENBQUM7UUFDeEIsS0FBSyxNQUFNLE1BQU0sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdDLE1BQU0sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztZQUNsRCxJQUFJLEdBQUcsQ0FBQztZQUNSLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2pDLFFBQVE7Z0JBQ1IsR0FBRyxHQUFHLGtCQUFrQixDQUFDO1lBQzNCLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDM0MsU0FBUztnQkFDVCxHQUFHLEdBQUcsMENBQTBDLENBQUM7WUFDbkQsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbkYsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDNUQsQ0FBQztZQUVELG9CQUFvQjtZQUNwQixNQUFNLElBQUksR0FBRyxZQUFZLEtBQUssYUFBYSxDQUFDLENBQUM7Z0JBRTNDO2VBQ08sWUFBWTs7Ozs7OztZQU9mLFVBQVUsV0FBVyxZQUFZOztPQUV0QyxDQUFDLENBQUM7Z0JBRUQ7Ozs7Ozs7VUFPRSxVQUFVO1lBQ1IsWUFBWSxRQUFRLFlBQVksd0JBQXdCLEdBQUc7T0FDaEUsQ0FBQztZQUNGLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQztRQUVELEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLEdBQUcsSUFBSSxTQUFTLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxRQUFRLENBQUMsVUFBVSxrQkFBa0IsUUFBUSxDQUFDLFlBQVksSUFBSSxDQUFDO2FBQzlHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBRW5CLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLENBQUM7WUFDbkUsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLEdBQUcsR0FBRzt3QkFDVSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7c0JBQ3RCLENBQUM7UUFFbkIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxRQUFRLENBQUMsVUFBVSxVQUFVLFFBQVEsQ0FBQyxZQUFZLElBQUksQ0FBQzthQUM3RixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sR0FBRyxHQUEyQixFQUFFLENBQUM7UUFFdkMsR0FBRyxDQUFDLFVBQVUsR0FBRztZQUNmLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSztZQUNuQixPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQztTQUN4QyxDQUFDO1FBR0YsTUFBTSxPQUFPLEdBQTBCO1lBQ3JDOzs7OztlQUtHO1lBQ0gsR0FBRyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDL0I7Ozs7O2VBS0c7WUFDSCxHQUFHLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUMvQjs7ZUFFRztZQUNIO2dCQUNFLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDcEIsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7YUFDVDtZQUNuQjs7ZUFFRztZQUNIO2dCQUNFLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDcEIsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7YUFDVDtZQUNuQjs7ZUFFRztZQUNIO2dCQUNFLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDcEIsR0FBRyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7YUFDVDtTQUNwQixDQUFDO1FBQ0YsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUM3QixHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUNqQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7Z0JBQ2pCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRzthQUNoQixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGIn0=
200
+ sql += primary.keys.map((indexKey) => `\`${indexKey.columnName}\` = {{${indexKey.propertyName} | param}}`).join(" AND ");
201
+ return sql;
202
+ }
203
+ load() {
204
+ const map = {};
205
+ map.allColumns = {
206
+ type: SqlType.BLOCK,
207
+ content: this.generateAllColumns(false)
208
+ };
209
+ const sqlMaps = [
210
+ ...this.generateFindByPrimary(),
211
+ ...this.generateFindByIndexes(),
212
+ (
213
+ /**
214
+ * 插入
215
+ */
216
+ {
217
+ name: "insert",
218
+ type: SqlType.INSERT,
219
+ sql: this.generateInsert()
220
+ }),
221
+ (
222
+ /**
223
+ * 主键更新
224
+ */
225
+ {
226
+ name: "update",
227
+ type: SqlType.UPDATE,
228
+ sql: this.generateUpdate()
229
+ }),
230
+ (
231
+ /**
232
+ * 主键删除
233
+ */
234
+ {
235
+ name: "delete",
236
+ type: SqlType.DELETE,
237
+ sql: this.generateDelete()
238
+ })
239
+ ];
240
+ for (const sqlMap of sqlMaps) map[sqlMap.name] = {
241
+ type: sqlMap.type,
242
+ sql: sqlMap.sql
243
+ };
244
+ return map;
245
+ }
246
+ };
247
+
248
+ //#endregion
249
+ export { BaseSqlMapGenerator };
@@ -1,14 +1,17 @@
1
- import { Templates } from '@eggjs/tegg-types';
2
- import type { CodeGeneratorOptions } from '@eggjs/tegg-types';
3
- import { TableModel } from '@eggjs/dal-decorator';
4
- export declare class CodeGenerator {
5
- private readonly moduleDir;
6
- private readonly moduleName;
7
- private readonly teggPkg;
8
- private readonly dalPkg;
9
- constructor(options: CodeGeneratorOptions);
10
- private njkEnv;
11
- createNunjucksEnv(): void;
12
- genCode(tplName: Templates, filePath: string, tableModel: TableModel): string;
13
- generate(tableModel: TableModel): Promise<void>;
1
+ import { TableModel } from "@eggjs/dal-decorator";
2
+ import { CodeGeneratorOptions, Templates } from "@eggjs/tegg-types";
3
+
4
+ //#region src/CodeGenerator.d.ts
5
+ declare class CodeGenerator {
6
+ private readonly moduleDir;
7
+ private readonly moduleName;
8
+ private readonly teggPkg;
9
+ private readonly dalPkg;
10
+ constructor(options: CodeGeneratorOptions);
11
+ private njkEnv;
12
+ createNunjucksEnv(): void;
13
+ genCode(tplName: Templates, filePath: string, tableModel: TableModel): string;
14
+ generate(tableModel: TableModel): Promise<void>;
14
15
  }
16
+ //#endregion
17
+ export { CodeGenerator };