@eggjs/dal-runtime 4.0.0-beta.34 → 4.0.0-beta.36

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.
@@ -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 | undefined;
13
- generateDelete(): string | undefined;
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,90 +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
- tableModel;
7
- logger;
8
- constructor(tableModel, logger) {
9
- this.tableModel = tableModel;
10
- this.logger = logger;
11
- }
12
- generateAllColumns(countIf) {
13
- const str = this.tableModel.columns.map((t) => `\`${t.columnName}\``).join(',');
14
- return countIf ? `{% if $$count == true %}0{% else %}${str}{% endif %}` : str;
15
- }
16
- generateFindByPrimary() {
17
- const result = [];
18
- const primary = this.tableModel.getPrimary();
19
- if (!primary) {
20
- this.logger.warn(`表 \`${this.tableModel.name}\` 没有主键,无法生成主键查询语句。`);
21
- return result;
22
- }
23
- 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)}
24
26
  FROM \`${this.tableModel.name}\`
25
27
  WHERE `;
26
- sql += primary.keys.map((indexKey) => `\`${indexKey.columnName}\` = {{$${indexKey.propertyName}}}`).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}}}`).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
51
- .map((indexKey) => {
52
- const s = `\`${indexKey.columnName}\` {{ "IS" if $${indexKey.propertyName} == null else "=" }} {{$${indexKey.propertyName}}}`;
53
- return s;
54
- })
55
- .join(' AND ');
56
- const tempName = _.upperFirst(_.camelCase(index.keys.length === 1 ? index.keys[0].propertyName : index.name));
57
- sqlMaps.push({
58
- name: `findBy${tempName}`,
59
- type: SqlType.SELECT,
60
- sql,
61
- });
62
- sqlMaps.push({
63
- name: `findOneBy${tempName}`,
64
- type: SqlType.SELECT,
65
- sql: `${sql} LIMIT 0, 1`,
66
- });
67
- }
68
- return sqlMaps;
69
- }
70
- generateInsert() {
71
- let sql = `INSERT INTO \`${this.tableModel.name}\` `;
72
- sql += '{% set ___first = true %}';
73
- const keys = [];
74
- const values = [];
75
- for (const column of this.tableModel.columns) {
76
- const { propertyName, columnName, type } = column;
77
- if (column.propertyName !== 'gmtCreate' && column.propertyName !== 'gmtModified') {
78
- // Add filter for Spatial Type
79
- // - toPoint
80
- // - toLine
81
- // - toPolygon
82
- // - toGeometry
83
- // - toMultiPoint
84
- // - toMultiLine
85
- // - toMultiPolygon
86
- // - toGeometryCollection
87
- keys.push(`
48
+ sql += index.keys.map((indexKey) => {
49
+ return `\`${indexKey.columnName}\` {{ "IS" if $${indexKey.propertyName} == null else "=" }} {{$${indexKey.propertyName}}}`;
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(`
88
74
  {% if $${propertyName} !== undefined %}
89
75
  {% if ___first %}
90
76
  {% set ___first = false %}
@@ -95,9 +81,9 @@ export class BaseSqlMapGenerator {
95
81
  \`${columnName}\`
96
82
  {% endif %}
97
83
  `.trim());
98
- if (TemplateUtil.isSpatialType(column)) {
99
- const filter = TemplateUtil.getSpatialFilter(column.type.type);
100
- values.push(`
84
+ if (TemplateUtil.isSpatialType(column)) {
85
+ const filter = TemplateUtil.getSpatialFilter(column.type.type);
86
+ values.push(`
101
87
  {% if $${propertyName} !== undefined %}
102
88
  {% if ___first %}
103
89
  {% set ___first = false %}
@@ -108,9 +94,7 @@ export class BaseSqlMapGenerator {
108
94
  {{$${propertyName} | ${filter}}}
109
95
  {% endif %}
110
96
  `.trim());
111
- }
112
- else if (column.type.type === ColumnType.JSON) {
113
- values.push(`
97
+ } else if (column.type.type === ColumnType.JSON) values.push(`
114
98
  {% if $${propertyName} !== undefined %}
115
99
  {% if ___first %}
116
100
  {% set ___first = false %}
@@ -121,9 +105,7 @@ export class BaseSqlMapGenerator {
121
105
  {{$${propertyName} | toJson}}
122
106
  {% endif %}
123
107
  `.trim());
124
- }
125
- else {
126
- values.push(`
108
+ else values.push(`
127
109
  {% if $${propertyName} !== undefined %}
128
110
  {% if ___first %}
129
111
  {% set ___first = false %}
@@ -134,29 +116,13 @@ export class BaseSqlMapGenerator {
134
116
  {{$${propertyName}}}
135
117
  {% endif %}
136
118
  `.trim());
137
- }
138
- }
139
- else {
140
- let now;
141
- // Default value for gmtCreate/gmtModified
142
- // int:UNIX_TEIMESTAMP
143
- // bigint: ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)
144
- // datetime/timestamp Now()
145
- if (type.type === ColumnType.INT) {
146
- // 秒级时间戳
147
- now = 'UNIX_TIMESTAMP()';
148
- }
149
- else if (type.type === ColumnType.BIGINT) {
150
- // 毫秒级时间戳
151
- now = 'ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)';
152
- }
153
- else if (type.type === ColumnType.DATETIME || type.type === ColumnType.TIMESTAMP) {
154
- now = type.precision ? `NOW(${type.precision})` : 'NOW()';
155
- }
156
- else {
157
- this.logger.warn(`unknown type ${type.type} for ${propertyName}`);
158
- }
159
- keys.push(`
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(`
160
126
  {% if ___first %}
161
127
  {% set ___first = false %}
162
128
  {% else %}
@@ -165,7 +131,7 @@ export class BaseSqlMapGenerator {
165
131
 
166
132
  \`${columnName}\`
167
133
  `.trim());
168
- values.push(`
134
+ values.push(`
169
135
  {% if ___first %}
170
136
  {% set ___first = false %}
171
137
  {% else %}
@@ -174,39 +140,29 @@ export class BaseSqlMapGenerator {
174
140
 
175
141
  {{ $${propertyName} if $${propertyName} !== undefined else '${now}' }}
176
142
  `.trim());
177
- }
178
- }
179
- sql += `(${keys.join('')})`;
180
- sql += '{% set ___first = true %}';
181
- sql += `VALUES(${values.join('')});`;
182
- return sql;
183
- }
184
- generateUpdate() {
185
- const primary = this.tableModel.getPrimary();
186
- if (!primary) {
187
- this.logger.warn(`表 \`${this.tableModel.name}\` 没有主键,无法生成主键更新语句。`);
188
- return;
189
- }
190
- let sql = `UPDATE \`${this.tableModel.name}\` SET`;
191
- sql += '{% set ___first = true %}';
192
- const kv = [];
193
- for (const column of this.tableModel.columns) {
194
- const { type, propertyName, columnName } = column;
195
- let now;
196
- if (type.type === ColumnType.INT) {
197
- // 秒级时间戳
198
- now = 'UNIX_TIMESTAMP()';
199
- }
200
- else if (type.type === ColumnType.BIGINT) {
201
- // 毫秒级时间戳
202
- now = 'ROUND(UNIX_TIMESTAMP(CURTIME(4)) * 1000)';
203
- }
204
- else if (type.type === ColumnType.TIMESTAMP || type.type === ColumnType.DATETIME) {
205
- now = type.precision ? `NOW(${type.precision})` : 'NOW()';
206
- }
207
- // 若无更新时间字段,则自动更新该字段
208
- const temp = propertyName !== 'gmtModified'
209
- ? `
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" ? `
210
166
  {% if $${propertyName} !== undefined %}
211
167
  {% if ___first %}
212
168
  {% set ___first = false %}
@@ -216,8 +172,7 @@ export class BaseSqlMapGenerator {
216
172
 
217
173
  \`${columnName}\` = {{$${propertyName}}}
218
174
  {% endif %}
219
- `
220
- : `
175
+ ` : `
221
176
  {% if ___first %}
222
177
  {% set ___first = false %}
223
178
  {% else %}
@@ -227,77 +182,68 @@ export class BaseSqlMapGenerator {
227
182
  \`${columnName}\` =
228
183
  {{ $${propertyName} if $${propertyName} !== undefined else '${now}' }}
229
184
  `;
230
- kv.push(temp);
231
- }
232
- sql += kv.join('');
233
- sql += `WHERE ${primary.keys.map((indexKey) => `\`${indexKey.columnName}\` = {{primary.${indexKey.propertyName}}}`).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}}}`).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}}}`).join(' AND ');
246
- return sql;
247
- }
248
- load() {
249
- const map = {};
250
- map.allColumns = {
251
- type: SqlType.BLOCK,
252
- content: this.generateAllColumns(false),
253
- };
254
- const sqlMaps = [
255
- /**
256
- * 以主键进行索引
257
- *
258
- * + `findByPrimary`
259
- * + 若为单主键,则再加 `findBy键名`
260
- */
261
- ...this.generateFindByPrimary(),
262
- /**
263
- * findBy 各索引
264
- *
265
- * + 若为多列索引,则为 `findBy索引名`
266
- * + 若为单列索引,则为 `findBy列名`
267
- */
268
- ...this.generateFindByIndexes(),
269
- /**
270
- * 插入
271
- */
272
- {
273
- name: 'insert',
274
- type: SqlType.INSERT,
275
- sql: this.generateInsert(),
276
- },
277
- /**
278
- * 主键更新
279
- */
280
- {
281
- name: 'update',
282
- type: SqlType.UPDATE,
283
- sql: this.generateUpdate(),
284
- },
285
- /**
286
- * 主键删除
287
- */
288
- {
289
- name: 'delete',
290
- type: SqlType.DELETE,
291
- sql: this.generateDelete(),
292
- },
293
- ];
294
- for (const sqlMap of sqlMaps) {
295
- map[sqlMap.name] = {
296
- type: sqlMap.type,
297
- sql: sqlMap.sql,
298
- };
299
- }
300
- return map;
301
- }
302
- }
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZVNxbE1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9CYXNlU3FsTWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFHaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE1BQU0sT0FBTyxtQkFBbUI7SUFDYixVQUFVLENBQWE7SUFDdkIsTUFBTSxDQUFTO0lBRWhDLFlBQVksVUFBc0IsRUFBRSxNQUFjO1FBQ2hELElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFnQjtRQUNqQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hGLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxzQ0FBc0MsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNoRixDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE1BQU0sTUFBTSxHQUEwQixFQUFFLENBQUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFB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
200
+ sql += primary.keys.map((indexKey) => `\`${indexKey.columnName}\` = {{${indexKey.propertyName}}}`).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 };