@eggjs/dal-runtime 3.51.2 → 4.0.0-beta.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.
Files changed (48) hide show
  1. package/package.json +27 -24
  2. package/{dist/src → src}/BaseSqlMap.d.ts +1 -1
  3. package/src/BaseSqlMap.js +303 -0
  4. package/{dist/src → src}/CodeGenerator.d.ts +1 -1
  5. package/src/CodeGenerator.js +138 -0
  6. package/{dist/src → src}/DaoLoader.d.ts +1 -1
  7. package/src/DaoLoader.js +13 -0
  8. package/{dist/src → src}/DataSource.d.ts +5 -5
  9. package/src/DataSource.js +79 -0
  10. package/{dist/src → src}/DatabaseForker.d.ts +1 -1
  11. package/src/DatabaseForker.js +49 -0
  12. package/{dist/src → src}/MySqlDataSource.d.ts +5 -1
  13. package/src/MySqlDataSource.js +63 -0
  14. package/{dist/src → src}/NunjucksConverter.js +3 -7
  15. package/src/NunjucksUtil.js +74 -0
  16. package/{dist/src → src}/SqlGenerator.d.ts +1 -1
  17. package/src/SqlGenerator.js +391 -0
  18. package/{dist/src → src}/SqlMapLoader.d.ts +2 -2
  19. package/src/SqlMapLoader.js +19 -0
  20. package/{dist/src → src}/SqlUtil.js +2 -6
  21. package/{dist/src → src}/TableModelInstanceBuilder.d.ts +1 -1
  22. package/src/TableModelInstanceBuilder.js +22 -0
  23. package/src/TableSqlMap.js +91 -0
  24. package/{dist/src → src}/TemplateUtil.d.ts +3 -12
  25. package/src/TemplateUtil.js +86 -0
  26. package/src/index.d.ts +15 -0
  27. package/src/index.js +16 -0
  28. package/dist/index.d.ts +0 -9
  29. package/dist/index.js +0 -28
  30. package/dist/src/BaseSqlMap.js +0 -310
  31. package/dist/src/CodeGenerator.js +0 -145
  32. package/dist/src/DaoLoader.js +0 -17
  33. package/dist/src/DataSource.js +0 -83
  34. package/dist/src/DatabaseForker.js +0 -56
  35. package/dist/src/MySqlDataSource.js +0 -38
  36. package/dist/src/NunjucksUtil.js +0 -104
  37. package/dist/src/SqlGenerator.js +0 -395
  38. package/dist/src/SqlMapLoader.js +0 -23
  39. package/dist/src/TableModelInstanceBuilder.js +0 -26
  40. package/dist/src/TableSqlMap.js +0 -95
  41. package/dist/src/TemplateUtil.js +0 -93
  42. package/dist/src/templates/base_dao.njk +0 -164
  43. package/dist/src/templates/dao.njk +0 -17
  44. package/dist/src/templates/extension.njk +0 -17
  45. /package/{dist/src → src}/NunjucksConverter.d.ts +0 -0
  46. /package/{dist/src → src}/NunjucksUtil.d.ts +0 -0
  47. /package/{dist/src → src}/SqlUtil.d.ts +0 -0
  48. /package/{dist/src → src}/TableSqlMap.d.ts +0 -0
@@ -1,395 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SqlGenerator = void 0;
4
- const tegg_types_1 = require("@eggjs/tegg-types");
5
- // TODO diff 实现
6
- class SqlGenerator {
7
- formatComment(comment) {
8
- return comment.replace(/\n/g, '\\n');
9
- }
10
- generateColumn(column) {
11
- const sqls = [
12
- ' ',
13
- column.columnName,
14
- this.generateColumnType(column.type),
15
- ];
16
- if (column.canNull) {
17
- sqls.push('NULL');
18
- }
19
- else {
20
- sqls.push('NOT NULL');
21
- }
22
- if ([
23
- tegg_types_1.ColumnType.POINT,
24
- tegg_types_1.ColumnType.GEOMETRY,
25
- tegg_types_1.ColumnType.POINT,
26
- tegg_types_1.ColumnType.LINESTRING,
27
- tegg_types_1.ColumnType.POLYGON,
28
- tegg_types_1.ColumnType.MULTIPOINT,
29
- tegg_types_1.ColumnType.MULTILINESTRING,
30
- tegg_types_1.ColumnType.MULTIPOLYGON,
31
- tegg_types_1.ColumnType.GEOMETRYCOLLECTION,
32
- ].includes(column.type.type)) {
33
- const SRID = column.type.SRID;
34
- if (SRID) {
35
- sqls.push(`SRID ${SRID}`);
36
- }
37
- }
38
- if (typeof column.default !== 'undefined') {
39
- sqls.push(`DEFAULT ${column.default}`);
40
- }
41
- if (column.autoIncrement) {
42
- sqls.push('AUTO_INCREMENT');
43
- }
44
- if (column.uniqueKey) {
45
- sqls.push('UNIQUE KEY');
46
- }
47
- if (column.primaryKey) {
48
- sqls.push('PRIMARY KEY');
49
- }
50
- if (column.comment) {
51
- sqls.push(`COMMENT '${this.formatComment(column.comment)}'`);
52
- }
53
- if (column.collate) {
54
- sqls.push(`COLLATE ${column.collate}`);
55
- }
56
- if (column.columnFormat) {
57
- sqls.push(`COLUMN_FORMAT ${column.columnFormat}`);
58
- }
59
- if (column.engineAttribute) {
60
- sqls.push(`ENGINE_ATTRIBUTE='${column.engineAttribute}'`);
61
- }
62
- if (column.secondaryEngineAttribute) {
63
- sqls.push(`SECONDARY_ENGINE_ATTRIBUTE='${column.secondaryEngineAttribute}'`);
64
- }
65
- return sqls.join(' ');
66
- }
67
- generateColumnType(columnType) {
68
- const sqls = [];
69
- switch (columnType.type) {
70
- case tegg_types_1.ColumnType.BOOL: {
71
- sqls.push('BOOL');
72
- break;
73
- }
74
- case tegg_types_1.ColumnType.BIT: {
75
- if (columnType.length) {
76
- sqls.push(`BIT(${columnType.length})`);
77
- }
78
- else {
79
- sqls.push('BIT');
80
- }
81
- break;
82
- }
83
- case tegg_types_1.ColumnType.TINYINT:
84
- case tegg_types_1.ColumnType.SMALLINT:
85
- case tegg_types_1.ColumnType.MEDIUMINT:
86
- case tegg_types_1.ColumnType.INT:
87
- case tegg_types_1.ColumnType.BIGINT: {
88
- if (typeof columnType.length === 'number') {
89
- sqls.push(`${columnType.type}(${columnType.length})`);
90
- }
91
- else {
92
- sqls.push(columnType.type);
93
- }
94
- if (columnType.unsigned) {
95
- sqls.push('UNSIGNED');
96
- }
97
- if (columnType.zeroFill) {
98
- sqls.push('ZEROFILL');
99
- }
100
- break;
101
- }
102
- case tegg_types_1.ColumnType.DECIMAL:
103
- case tegg_types_1.ColumnType.FLOAT:
104
- case tegg_types_1.ColumnType.DOUBLE: {
105
- if (typeof columnType.length === 'number' && typeof columnType.fractionalLength === 'number') {
106
- sqls.push(`${columnType.type}(${columnType.length},${columnType.fractionalLength})`);
107
- }
108
- else if (typeof columnType.length === 'number') {
109
- sqls.push(`${columnType.type}(${columnType.length})`);
110
- }
111
- else {
112
- sqls.push('TINYINT');
113
- }
114
- if (columnType.unsigned) {
115
- sqls.push('UNSIGNED');
116
- }
117
- if (columnType.zeroFill) {
118
- sqls.push('ZEROFILL');
119
- }
120
- break;
121
- }
122
- case tegg_types_1.ColumnType.DATE: {
123
- sqls.push('DATE');
124
- break;
125
- }
126
- case tegg_types_1.ColumnType.DATETIME:
127
- case tegg_types_1.ColumnType.TIMESTAMP: {
128
- if (columnType.precision) {
129
- sqls.push(`${columnType.type}(${columnType.precision})`);
130
- }
131
- else {
132
- sqls.push(columnType.type);
133
- }
134
- if (columnType.autoUpdate) {
135
- if (columnType.precision) {
136
- sqls.push(`ON UPDATE CURRENT_TIMESTAMP(${columnType.precision})`);
137
- }
138
- else {
139
- sqls.push('ON UPDATE CURRENT_TIMESTAMP');
140
- }
141
- }
142
- break;
143
- }
144
- case tegg_types_1.ColumnType.TIME: {
145
- if (columnType.precision) {
146
- sqls.push(`${columnType.type}(${columnType.precision})`);
147
- }
148
- else {
149
- sqls.push(columnType.type);
150
- }
151
- break;
152
- }
153
- case tegg_types_1.ColumnType.YEAR: {
154
- sqls.push('YEAR');
155
- break;
156
- }
157
- case tegg_types_1.ColumnType.CHAR:
158
- case tegg_types_1.ColumnType.TEXT: {
159
- if (columnType.length) {
160
- sqls.push(`${columnType.type}(${columnType.length})`);
161
- }
162
- else {
163
- sqls.push(columnType.type);
164
- }
165
- if (columnType.characterSet) {
166
- sqls.push(`CHARACTER SET ${columnType.characterSet}`);
167
- }
168
- if (columnType.collate) {
169
- sqls.push(`COLLATE ${columnType.collate}`);
170
- }
171
- break;
172
- }
173
- case tegg_types_1.ColumnType.VARCHAR: {
174
- sqls.push(`${columnType.type}(${columnType.length})`);
175
- if (columnType.characterSet) {
176
- sqls.push(`CHARACTER SET ${columnType.characterSet}`);
177
- }
178
- if (columnType.collate) {
179
- sqls.push(`COLLATE ${columnType.collate}`);
180
- }
181
- break;
182
- }
183
- case tegg_types_1.ColumnType.BINARY: {
184
- if (columnType.length) {
185
- sqls.push(`${columnType.type}(${columnType.length})`);
186
- }
187
- else {
188
- sqls.push(columnType.type);
189
- }
190
- break;
191
- }
192
- case tegg_types_1.ColumnType.VARBINARY: {
193
- sqls.push(`${columnType.type}(${columnType.length})`);
194
- break;
195
- }
196
- case tegg_types_1.ColumnType.TINYBLOB: {
197
- sqls.push('TINYBLOB');
198
- break;
199
- }
200
- case tegg_types_1.ColumnType.TINYTEXT:
201
- case tegg_types_1.ColumnType.MEDIUMTEXT:
202
- case tegg_types_1.ColumnType.LONGTEXT: {
203
- sqls.push(columnType.type);
204
- if (columnType.characterSet) {
205
- sqls.push(`CHARACTER SET ${columnType.characterSet}`);
206
- }
207
- if (columnType.collate) {
208
- sqls.push(`COLLATE ${columnType.collate}`);
209
- }
210
- break;
211
- }
212
- case tegg_types_1.ColumnType.BLOB: {
213
- if (columnType.length) {
214
- sqls.push(`${columnType.type}(${columnType.length})`);
215
- }
216
- else {
217
- sqls.push(columnType.type);
218
- }
219
- break;
220
- }
221
- case tegg_types_1.ColumnType.MEDIUMBLOB: {
222
- sqls.push('MEDIUMBLOB');
223
- break;
224
- }
225
- case tegg_types_1.ColumnType.LONGBLOB: {
226
- sqls.push('LONGBLOB');
227
- break;
228
- }
229
- case tegg_types_1.ColumnType.ENUM: {
230
- const enumValue = columnType.enums.map(t => `'${t}'`).join(',');
231
- sqls.push(`ENUM(${enumValue})`);
232
- if (columnType.characterSet) {
233
- sqls.push(`CHARACTER SET ${columnType.characterSet}`);
234
- }
235
- if (columnType.collate) {
236
- sqls.push(`COLLATE ${columnType.collate}`);
237
- }
238
- break;
239
- }
240
- case tegg_types_1.ColumnType.SET: {
241
- const enumValue = columnType.enums.map(t => `'${t}'`).join(',');
242
- sqls.push(`SET(${enumValue})`);
243
- if (columnType.characterSet) {
244
- sqls.push(`CHARACTER SET ${columnType.characterSet}`);
245
- }
246
- if (columnType.collate) {
247
- sqls.push(`COLLATE ${columnType.collate}`);
248
- }
249
- break;
250
- }
251
- case tegg_types_1.ColumnType.JSON: {
252
- sqls.push('JSON');
253
- break;
254
- }
255
- case tegg_types_1.ColumnType.GEOMETRY:
256
- case tegg_types_1.ColumnType.POINT:
257
- case tegg_types_1.ColumnType.LINESTRING:
258
- case tegg_types_1.ColumnType.POLYGON:
259
- case tegg_types_1.ColumnType.MULTIPOINT:
260
- case tegg_types_1.ColumnType.MULTILINESTRING:
261
- case tegg_types_1.ColumnType.MULTIPOLYGON:
262
- case tegg_types_1.ColumnType.GEOMETRYCOLLECTION: {
263
- sqls.push(columnType.type);
264
- break;
265
- }
266
- default: {
267
- throw new Error(`unknown ColumnType ${columnType}`);
268
- }
269
- }
270
- return sqls.join(' ');
271
- }
272
- generateIndex(indexModel) {
273
- const indexSql = [
274
- ' ',
275
- ];
276
- switch (indexModel.type) {
277
- case tegg_types_1.IndexType.INDEX: {
278
- indexSql.push('KEY');
279
- break;
280
- }
281
- case tegg_types_1.IndexType.UNIQUE: {
282
- indexSql.push('UNIQUE KEY');
283
- break;
284
- }
285
- case tegg_types_1.IndexType.PRIMARY: {
286
- indexSql.push('PRIMARY KEY');
287
- break;
288
- }
289
- case tegg_types_1.IndexType.FULLTEXT: {
290
- indexSql.push('FULLTEXT KEY');
291
- break;
292
- }
293
- case tegg_types_1.IndexType.SPATIAL: {
294
- indexSql.push('SPATIAL KEY');
295
- break;
296
- }
297
- default: {
298
- throw new Error(`unknown IndexType ${indexModel.type}`);
299
- }
300
- }
301
- indexSql.push(indexModel.name);
302
- indexSql.push(`(${indexModel.keys.map(t => t.columnName).join(',')})`);
303
- if (indexModel.storeType) {
304
- indexSql.push(`USING ${indexModel.storeType}`);
305
- }
306
- if (indexModel.parser) {
307
- indexSql.push(`WITH PARSER ${indexModel.parser}`);
308
- }
309
- if (indexModel.comment) {
310
- indexSql.push(`COMMENT '${this.formatComment(indexModel.comment)}'`);
311
- }
312
- if (indexModel.engineAttribute) {
313
- indexSql.push(`ENGINE_ATTRIBUTE='${indexModel.engineAttribute}'`);
314
- }
315
- if (indexModel.secondaryEngineAttribute) {
316
- indexSql.push(`SECONDARY_ENGINE_ATTRIBUTE='${indexModel.secondaryEngineAttribute}'`);
317
- }
318
- return indexSql.join(' ');
319
- }
320
- generateTableOptions(tableModel) {
321
- const sqls = [];
322
- if (tableModel.autoExtendSize) {
323
- sqls.push(`AUTOEXTEND_SIZE=${tableModel.autoExtendSize}`);
324
- }
325
- if (tableModel.autoIncrement) {
326
- sqls.push(`AUTO_INCREMENT=${tableModel.autoIncrement}`);
327
- }
328
- if (tableModel.avgRowLength) {
329
- sqls.push(`AVG_ROW_LENGTH=${tableModel.avgRowLength}`);
330
- }
331
- if (tableModel.characterSet) {
332
- sqls.push(`DEFAULT CHARACTER SET ${tableModel.characterSet}`);
333
- }
334
- if (tableModel.collate) {
335
- sqls.push(`DEFAULT COLLATE ${tableModel.collate}`);
336
- }
337
- if (tableModel.comment) {
338
- sqls.push(`COMMENT='${this.formatComment(tableModel.comment)}'`);
339
- }
340
- if (tableModel.compression) {
341
- sqls.push(`COMPRESSION='${tableModel.compression}'`);
342
- }
343
- if (typeof tableModel.encryption !== 'undefined') {
344
- sqls.push(`ENCRYPTION='${tableModel.encryption ? 'Y' : 'N'}'`);
345
- }
346
- if (typeof tableModel.engine !== 'undefined') {
347
- sqls.push(`ENGINE=${tableModel.engine}`);
348
- }
349
- if (tableModel.engineAttribute) {
350
- sqls.push(`ENGINE_ATTRIBUTE='${tableModel.engineAttribute}'`);
351
- }
352
- if (tableModel.secondaryEngineAttribute) {
353
- sqls.push(`SECONDARY_ENGINE_ATTRIBUTE = '${tableModel.secondaryEngineAttribute}'`);
354
- }
355
- if (tableModel.insertMethod) {
356
- sqls.push(`INSERT_METHOD=${tableModel.insertMethod}`);
357
- }
358
- if (tableModel.keyBlockSize) {
359
- sqls.push(`KEY_BLOCK_SIZE=${tableModel.keyBlockSize}`);
360
- }
361
- if (tableModel.maxRows) {
362
- sqls.push(`MAX_ROWS=${tableModel.maxRows}`);
363
- }
364
- if (tableModel.minRows) {
365
- sqls.push(`MIN_ROWS=${tableModel.minRows}`);
366
- }
367
- if (tableModel.rowFormat) {
368
- sqls.push(`ROW_FORMAT=${tableModel.rowFormat}`);
369
- }
370
- return sqls.join(', ');
371
- }
372
- generate(tableModel) {
373
- const createSql = [];
374
- createSql.push(`CREATE TABLE IF NOT EXISTS ${tableModel.name} (`);
375
- const columnSql = [];
376
- for (const column of tableModel.columns) {
377
- columnSql.push(this.generateColumn(column));
378
- }
379
- const indexSql = [];
380
- for (const index of tableModel.indices) {
381
- indexSql.push(this.generateIndex(index));
382
- }
383
- if (indexSql.length) {
384
- createSql.push(columnSql.join(',\n') + ',');
385
- createSql.push(indexSql.join(',\n'));
386
- }
387
- else {
388
- createSql.push(columnSql.join(',\n'));
389
- }
390
- createSql.push(`) ${this.generateTableOptions(tableModel)};`);
391
- return createSql.join('\n');
392
- }
393
- }
394
- exports.SqlGenerator = SqlGenerator;
395
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3FsR2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NxbEdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxrREFBMEQ7QUFHMUQsZUFBZTtBQUNmLE1BQWEsWUFBWTtJQUNmLGFBQWEsQ0FBQyxPQUFlO1FBQ25DLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxNQUFtQjtRQUN4QyxNQUFNLElBQUksR0FBYTtZQUNyQixHQUFHO1lBQ0gsTUFBTSxDQUFDLFVBQVU7WUFDakIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDckMsQ0FBQztRQUNGLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFLO1lBQ0gsdUJBQVUsQ0FBQyxLQUFLO1lBQ2hCLHVCQUFVLENBQUMsUUFBUTtZQUNuQix1QkFBVSxDQUFDLEtBQUs7WUFDaEIsdUJBQVUsQ0FBQyxVQUFVO1lBQ3JCLHVCQUFVLENBQUMsT0FBTztZQUNsQix1QkFBVSxDQUFDLFVBQVU7WUFDckIsdUJBQVUsQ0FBQyxlQUFlO1lBQzFCLHVCQUFVLENBQUMsWUFBWTtZQUN2Qix1QkFBVSxDQUFDLGtCQUFrQjtTQUNiLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxNQUFNLElBQUksR0FBSSxNQUFNLENBQUMsSUFBMEIsQ0FBQyxJQUFJLENBQUM7WUFDckQsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFFB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
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SqlMapLoader = void 0;
4
- const BaseSqlMap_1 = require("./BaseSqlMap");
5
- const TableSqlMap_1 = require("./TableSqlMap");
6
- class SqlMapLoader {
7
- constructor(tableModel, baseDaoClazz, logger) {
8
- this.clazzExtension = baseDaoClazz.clazzExtension;
9
- this.logger = logger;
10
- this.tableModel = tableModel;
11
- }
12
- load() {
13
- const baseSqlMapGenerator = new BaseSqlMap_1.BaseSqlMapGenerator(this.tableModel, this.logger);
14
- const baseSqlMap = baseSqlMapGenerator.load();
15
- const sqlMap = {
16
- ...baseSqlMap,
17
- ...this.clazzExtension,
18
- };
19
- return new TableSqlMap_1.TableSqlMap(this.tableModel.clazz.name, sqlMap);
20
- }
21
- }
22
- exports.SqlMapLoader = SqlMapLoader;
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3FsTWFwTG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NxbE1hcExvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw2Q0FBbUQ7QUFDbkQsK0NBQTRDO0FBRTVDLE1BQWEsWUFBWTtJQUt2QixZQUFZLFVBQXNCLEVBQUUsWUFBeUIsRUFBRSxNQUFjO1FBQzNFLElBQUksQ0FBQyxjQUFjLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQztRQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxnQ0FBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNsRixNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM5QyxNQUFNLE1BQU0sR0FBRztZQUNiLEdBQUcsVUFBVTtZQUNiLEdBQUcsSUFBSSxDQUFDLGNBQWM7U0FDdkIsQ0FBQztRQUNGLE9BQU8sSUFBSSx5QkFBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFwQkQsb0NBb0JDIn0=
@@ -1,26 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TableModelInstanceBuilder = void 0;
4
- class TableModelInstanceBuilder {
5
- constructor(tableModel, row) {
6
- for (const [key, value] of Object.entries(row)) {
7
- const column = tableModel.columns.find(t => t.columnName === key);
8
- Reflect.set(this, column?.propertyName ?? key, value);
9
- }
10
- }
11
- static buildInstance(tableModel, row) {
12
- return Reflect.construct(TableModelInstanceBuilder, [tableModel, row], tableModel.clazz);
13
- }
14
- static buildRow(instance, tableModel) {
15
- const result = {};
16
- for (const column of tableModel.columns) {
17
- const columnValue = Reflect.get(instance, column.propertyName);
18
- if (typeof columnValue !== 'undefined') {
19
- result[`$${column.propertyName}`] = columnValue;
20
- }
21
- }
22
- return result;
23
- }
24
- }
25
- exports.TableModelInstanceBuilder = TableModelInstanceBuilder;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVNb2RlbEluc3RhbmNlQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9UYWJsZU1vZGVsSW5zdGFuY2VCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLE1BQWEseUJBQXlCO0lBQ3BDLFlBQVksVUFBc0IsRUFBRSxHQUF3QjtRQUMxRCxLQUFLLE1BQU0sQ0FBRSxHQUFHLEVBQUUsS0FBSyxDQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNsRSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsWUFBWSxJQUFJLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sQ0FBQyxhQUFhLENBQUksVUFBeUIsRUFBRSxHQUF3QjtRQUN6RSxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMseUJBQXlCLEVBQUUsQ0FBRSxVQUFVLEVBQUUsR0FBRyxDQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdGLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFtQixRQUFXLEVBQUUsVUFBeUI7UUFDdEUsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssTUFBTSxNQUFNLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMvRCxJQUFJLE9BQU8sV0FBVyxLQUFLLFdBQVcsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUF0QkQsOERBc0JDIn0=
@@ -1,95 +0,0 @@
1
- "use strict";
2
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
- };
7
- var _TableSqlMap_instances, _TableSqlMap_extract;
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.TableSqlMap = void 0;
10
- const NunjucksUtil_1 = require("./NunjucksUtil");
11
- const TemplateUtil_1 = require("./TemplateUtil");
12
- const tegg_types_1 = require("@eggjs/tegg-types");
13
- class TableSqlMap {
14
- constructor(name, map) {
15
- _TableSqlMap_instances.add(this);
16
- this.name = name;
17
- this.map = map;
18
- const env = NunjucksUtil_1.NunjucksUtils.createEnv(name);
19
- const extracted = __classPrivateFieldGet(this, _TableSqlMap_instances, "m", _TableSqlMap_extract).call(this, this.map);
20
- this.blocks = extracted.blocks;
21
- this.sqlGenerator = extracted.sqlGenerator;
22
- for (const key in this.blocks) {
23
- // istanbul ignore if
24
- if (!this.blocks.hasOwnProperty(key))
25
- continue;
26
- env.addGlobal(key, this.blocks[key]);
27
- }
28
- env.addFilter('toJson', TemplateUtil_1.TemplateUtil.toJson);
29
- env.addFilter('toPoint', TemplateUtil_1.TemplateUtil.toPoint);
30
- env.addFilter('toLine', TemplateUtil_1.TemplateUtil.toLine);
31
- env.addFilter('toPolygon', TemplateUtil_1.TemplateUtil.toPolygon);
32
- env.addFilter('toGeometry', TemplateUtil_1.TemplateUtil.toGeometry);
33
- env.addFilter('toMultiPoint', TemplateUtil_1.TemplateUtil.toMultiPoint);
34
- env.addFilter('toMultiLine', TemplateUtil_1.TemplateUtil.toMultiLine);
35
- env.addFilter('toMultiPolygon', TemplateUtil_1.TemplateUtil.toMultiPolygon);
36
- env.addFilter('toGeometryCollection', TemplateUtil_1.TemplateUtil.toGeometryCollection);
37
- }
38
- generate(name, data, timezone) {
39
- const generator = this.sqlGenerator[name];
40
- // istanbul ignore if
41
- if (!generator) {
42
- throw new Error(`No sql map named '${name}' in '${name}'.`);
43
- }
44
- const template = generator.template;
45
- template.env.timezone = timezone;
46
- return template.render(data);
47
- }
48
- getType(name) {
49
- const generator = this.sqlGenerator[name];
50
- // istanbul ignore if
51
- if (!generator) {
52
- throw new Error(`No sql map named '${name}' in '${name}'.`);
53
- }
54
- return generator.type;
55
- }
56
- getTemplateString(name) {
57
- const generator = this.sqlGenerator[name];
58
- // istanbul ignore if
59
- if (!generator) {
60
- throw new Error(`No sql map named '${name}' in '${name}'.`);
61
- }
62
- return generator.raw;
63
- }
64
- }
65
- exports.TableSqlMap = TableSqlMap;
66
- _TableSqlMap_instances = new WeakSet(), _TableSqlMap_extract = function _TableSqlMap_extract(map) {
67
- const ret = {
68
- blocks: {},
69
- sqlGenerator: {},
70
- };
71
- for (const key in map) {
72
- // istanbul ignore if
73
- if (!map.hasOwnProperty(key))
74
- continue;
75
- const sqlMap = map[key];
76
- switch (sqlMap.type) {
77
- case tegg_types_1.SqlType.BLOCK:
78
- ret.blocks[key] = sqlMap.content || '';
79
- break;
80
- case tegg_types_1.SqlType.INSERT:
81
- case tegg_types_1.SqlType.SELECT:
82
- case tegg_types_1.SqlType.UPDATE:
83
- case tegg_types_1.SqlType.DELETE:
84
- default:
85
- ret.sqlGenerator[key] = {
86
- type: sqlMap.type,
87
- template: NunjucksUtil_1.NunjucksUtils.compile(this.name, key, sqlMap.sql || ''),
88
- raw: sqlMap.sql,
89
- };
90
- break;
91
- }
92
- }
93
- return ret;
94
- };
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFibGVTcWxNYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvVGFibGVTcWxNYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRUEsaURBQStDO0FBQy9DLGlEQUE4QztBQUM5QyxrREFBNEM7QUFTNUMsTUFBYSxXQUFXO0lBTXRCLFlBQVksSUFBWSxFQUFFLEdBQTJCOztRQUNuRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUVmLE1BQU0sR0FBRyxHQUFHLDRCQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLHVCQUFBLElBQUksb0RBQVMsTUFBYixJQUFJLEVBQVUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7UUFFM0MsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUIscUJBQXFCO1lBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUM7Z0JBQUUsU0FBUztZQUMvQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUVELEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLDJCQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDN0MsR0FBRyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsMkJBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSwyQkFBWSxDQUFDLE1BQU0sQ0FB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