@eggjs/dal-runtime 4.0.0-beta.4 → 4.0.0-beta.5
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 +13 -1
- package/dist/BaseSqlMap.d.ts +18 -0
- package/dist/BaseSqlMap.js +247 -0
- package/dist/CodeGenerator.d.ts +17 -0
- package/dist/CodeGenerator.js +114 -0
- package/dist/DaoLoader.d.ts +8 -0
- package/dist/DaoLoader.js +16 -0
- package/dist/DataSource.d.ts +32 -0
- package/dist/DataSource.js +72 -0
- package/dist/DatabaseForker.d.ts +16 -0
- package/dist/DatabaseForker.js +47 -0
- package/dist/MySqlDataSource.d.ts +27 -0
- package/dist/MySqlDataSource.js +49 -0
- package/dist/NunjucksConverter.d.ts +76 -0
- package/dist/NunjucksConverter.js +90 -0
- package/dist/NunjucksUtil.d.ts +9 -0
- package/dist/NunjucksUtil.js +64 -0
- package/dist/SqlGenerator.d.ts +13 -0
- package/dist/SqlGenerator.js +224 -0
- package/dist/SqlMapLoader.d.ts +14 -0
- package/dist/SqlMapLoader.js +22 -0
- package/dist/SqlUtil.d.ts +6 -0
- package/dist/SqlUtil.js +193 -0
- package/dist/TableModelInstanceBuilder.d.ts +10 -0
- package/dist/TableModelInstanceBuilder.js +25 -0
- package/dist/TableSqlMap.d.ts +18 -0
- package/dist/TableSqlMap.js +81 -0
- package/dist/TemplateUtil.d.ts +22 -0
- package/dist/TemplateUtil.js +78 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +16 -0
- package/package.json +27 -28
- package/src/BaseSqlMap.d.ts +0 -15
- package/src/BaseSqlMap.js +0 -303
- package/src/CodeGenerator.d.ts +0 -14
- package/src/CodeGenerator.js +0 -138
- package/src/DaoLoader.d.ts +0 -4
- package/src/DaoLoader.js +0 -13
- package/src/DataSource.d.ts +0 -28
- package/src/DataSource.js +0 -79
- package/src/DatabaseForker.d.ts +0 -12
- package/src/DatabaseForker.js +0 -49
- package/src/MySqlDataSource.d.ts +0 -23
- package/src/MySqlDataSource.js +0 -63
- package/src/NunjucksConverter.d.ts +0 -73
- package/src/NunjucksConverter.js +0 -93
- package/src/NunjucksUtil.d.ts +0 -5
- package/src/NunjucksUtil.js +0 -74
- package/src/SqlGenerator.d.ts +0 -9
- package/src/SqlGenerator.js +0 -391
- package/src/SqlMapLoader.d.ts +0 -10
- package/src/SqlMapLoader.js +0 -19
- package/src/SqlUtil.d.ts +0 -3
- package/src/SqlUtil.js +0 -221
- package/src/TableModelInstanceBuilder.d.ts +0 -6
- package/src/TableModelInstanceBuilder.js +0 -22
- package/src/TableSqlMap.d.ts +0 -19
- package/src/TableSqlMap.js +0 -91
- package/src/TemplateUtil.d.ts +0 -19
- package/src/TemplateUtil.js +0 -86
- package/src/index.d.ts +0 -15
- package/src/index.js +0 -16
package/dist/SqlUtil.js
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
//#region src/SqlUtil.ts
|
|
2
|
+
function isWhiteChar(ch) {
|
|
3
|
+
return ch === " " || ch === "\n" || ch === "\r" || ch === " ";
|
|
4
|
+
}
|
|
5
|
+
const COMMENT_CHARS = "-#/";
|
|
6
|
+
const MUL_CHAR_LEADING_COMMENT_FIRST_CHAR = {
|
|
7
|
+
MAY_BE_FIRST_COMMENT: "-",
|
|
8
|
+
MAY_BE_FIRST_BLOCK_COMMENT: "/"
|
|
9
|
+
};
|
|
10
|
+
const MUL_CHAR_LEADING_COMMENT_VERIFIER = {
|
|
11
|
+
MAY_BE_FIRST_COMMENT: "-",
|
|
12
|
+
MAY_BE_FIRST_BLOCK_COMMENT: "*"
|
|
13
|
+
};
|
|
14
|
+
const MUL_CHAR_LEADING_COMMENT_NEXT_STATE = {
|
|
15
|
+
MAY_BE_FIRST_COMMENT: "IN_COMMENT_WAIT_HINT",
|
|
16
|
+
MAY_BE_FIRST_BLOCK_COMMENT: "IN_BLOCK_COMMENT_WAIT_HINT"
|
|
17
|
+
};
|
|
18
|
+
var SqlUtil = class {
|
|
19
|
+
static minify(sql) {
|
|
20
|
+
let ret = "";
|
|
21
|
+
let state = "START";
|
|
22
|
+
let tempNextState;
|
|
23
|
+
for (let i = 0; i < sql.length; i++) {
|
|
24
|
+
const ch = sql[i];
|
|
25
|
+
switch (state) {
|
|
26
|
+
case "MAY_BE_FIRST_COMMENT":
|
|
27
|
+
case "MAY_BE_FIRST_BLOCK_COMMENT":
|
|
28
|
+
switch (ch) {
|
|
29
|
+
case "\"":
|
|
30
|
+
tempNextState = "DOUBLE_QUOTE";
|
|
31
|
+
break;
|
|
32
|
+
case "'":
|
|
33
|
+
tempNextState = "SINGLE_QUOTE";
|
|
34
|
+
break;
|
|
35
|
+
case MUL_CHAR_LEADING_COMMENT_VERIFIER[state]:
|
|
36
|
+
tempNextState = MUL_CHAR_LEADING_COMMENT_NEXT_STATE[state];
|
|
37
|
+
break;
|
|
38
|
+
default:
|
|
39
|
+
tempNextState = "CONTENT";
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
if (ch !== MUL_CHAR_LEADING_COMMENT_VERIFIER[state]) ret += `${MUL_CHAR_LEADING_COMMENT_FIRST_CHAR[state]}${ch}`;
|
|
43
|
+
state = tempNextState;
|
|
44
|
+
break;
|
|
45
|
+
case "IN_COMMENT_WAIT_HINT":
|
|
46
|
+
if (ch !== "+") state = "IN_COMMENT";
|
|
47
|
+
else {
|
|
48
|
+
state = "IN_COMMENT_HINT";
|
|
49
|
+
ret += "--+";
|
|
50
|
+
}
|
|
51
|
+
break;
|
|
52
|
+
case "IN_BLOCK_COMMENT_WAIT_HINT":
|
|
53
|
+
if (ch !== "+") state = "IN_BLOCK_COMMENT";
|
|
54
|
+
else {
|
|
55
|
+
state = "IN_BLOCK_COMMENT_HINT";
|
|
56
|
+
ret += "/*+";
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
case "MAY_BE_LAST_BLOCK_COMMENT":
|
|
60
|
+
if (ch === "/") {
|
|
61
|
+
if (ret && !isWhiteChar(ret[ret.length - 1])) ret += " ";
|
|
62
|
+
state = "IN_SPACE";
|
|
63
|
+
} else state = "IN_BLOCK_COMMENT";
|
|
64
|
+
break;
|
|
65
|
+
case "MAY_BE_LAST_BLOCK_COMMENT_HINT":
|
|
66
|
+
ret += ch;
|
|
67
|
+
if (ch === "/") {
|
|
68
|
+
state = "IN_SPACE";
|
|
69
|
+
if (isWhiteChar(sql[i + 1])) ret += sql[i + 1];
|
|
70
|
+
} else state = "IN_BLOCK_COMMENT_HINT";
|
|
71
|
+
break;
|
|
72
|
+
case "IN_COMMENT":
|
|
73
|
+
if (ch === "\n" || ch === "\r") {
|
|
74
|
+
if (ret && !isWhiteChar(ret[ret.length - 1])) ret += " ";
|
|
75
|
+
state = "IN_SPACE";
|
|
76
|
+
}
|
|
77
|
+
break;
|
|
78
|
+
case "IN_COMMENT_HINT":
|
|
79
|
+
ret += ch;
|
|
80
|
+
if (ch === "\n" || ch === "\r") state = "IN_SPACE";
|
|
81
|
+
break;
|
|
82
|
+
case "IN_BLOCK_COMMENT":
|
|
83
|
+
if (ch === "*") state = "MAY_BE_LAST_BLOCK_COMMENT";
|
|
84
|
+
break;
|
|
85
|
+
case "IN_BLOCK_COMMENT_HINT":
|
|
86
|
+
ret += ch;
|
|
87
|
+
if (ch === "*") state = "MAY_BE_LAST_BLOCK_COMMENT_HINT";
|
|
88
|
+
break;
|
|
89
|
+
case "START":
|
|
90
|
+
if (isWhiteChar(ch)) continue;
|
|
91
|
+
switch (ch) {
|
|
92
|
+
case "\"":
|
|
93
|
+
state = "DOUBLE_QUOTE";
|
|
94
|
+
break;
|
|
95
|
+
case "'":
|
|
96
|
+
state = "SINGLE_QUOTE";
|
|
97
|
+
break;
|
|
98
|
+
case "-":
|
|
99
|
+
state = "MAY_BE_FIRST_COMMENT";
|
|
100
|
+
break;
|
|
101
|
+
case "#":
|
|
102
|
+
state = "IN_COMMENT";
|
|
103
|
+
break;
|
|
104
|
+
case "/":
|
|
105
|
+
state = "MAY_BE_FIRST_BLOCK_COMMENT";
|
|
106
|
+
break;
|
|
107
|
+
default:
|
|
108
|
+
state = "CONTENT";
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
if (!COMMENT_CHARS.includes(ch)) ret += ch;
|
|
112
|
+
break;
|
|
113
|
+
case "DOUBLE_QUOTE":
|
|
114
|
+
case "SINGLE_QUOTE":
|
|
115
|
+
switch (ch) {
|
|
116
|
+
case "\\":
|
|
117
|
+
state = `BACKSLASH_AFTER_${state}`;
|
|
118
|
+
break;
|
|
119
|
+
case "'":
|
|
120
|
+
if (state === "SINGLE_QUOTE") state = "QUOTE_DONE";
|
|
121
|
+
break;
|
|
122
|
+
case "\"":
|
|
123
|
+
if (state === "DOUBLE_QUOTE") state = "QUOTE_DONE";
|
|
124
|
+
break;
|
|
125
|
+
default: break;
|
|
126
|
+
}
|
|
127
|
+
ret += ch;
|
|
128
|
+
break;
|
|
129
|
+
case "BACKSLASH_AFTER_SINGLE_QUOTE":
|
|
130
|
+
case "BACKSLASH_AFTER_DOUBLE_QUOTE":
|
|
131
|
+
ret += ch;
|
|
132
|
+
state = state.substr(16);
|
|
133
|
+
break;
|
|
134
|
+
case "QUOTE_DONE":
|
|
135
|
+
case "CONTENT":
|
|
136
|
+
switch (ch) {
|
|
137
|
+
case "'":
|
|
138
|
+
state = "SINGLE_QUOTE";
|
|
139
|
+
break;
|
|
140
|
+
case "\"":
|
|
141
|
+
state = "DOUBLE_QUOTE";
|
|
142
|
+
break;
|
|
143
|
+
case "-":
|
|
144
|
+
state = "MAY_BE_FIRST_COMMENT";
|
|
145
|
+
break;
|
|
146
|
+
case "#":
|
|
147
|
+
state = "IN_COMMENT";
|
|
148
|
+
break;
|
|
149
|
+
case "/":
|
|
150
|
+
state = "MAY_BE_FIRST_BLOCK_COMMENT";
|
|
151
|
+
break;
|
|
152
|
+
default:
|
|
153
|
+
if (isWhiteChar(ch)) {
|
|
154
|
+
state = "IN_SPACE";
|
|
155
|
+
ret += " ";
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
state = "CONTENT";
|
|
159
|
+
}
|
|
160
|
+
if (!COMMENT_CHARS.includes(ch)) ret += ch;
|
|
161
|
+
break;
|
|
162
|
+
case "IN_SPACE":
|
|
163
|
+
switch (ch) {
|
|
164
|
+
case "'":
|
|
165
|
+
state = "SINGLE_QUOTE";
|
|
166
|
+
break;
|
|
167
|
+
case "\"":
|
|
168
|
+
state = "DOUBLE_QUOTE";
|
|
169
|
+
break;
|
|
170
|
+
case "-":
|
|
171
|
+
state = "MAY_BE_FIRST_COMMENT";
|
|
172
|
+
break;
|
|
173
|
+
case "#":
|
|
174
|
+
state = "IN_COMMENT";
|
|
175
|
+
break;
|
|
176
|
+
case "/":
|
|
177
|
+
state = "MAY_BE_FIRST_BLOCK_COMMENT";
|
|
178
|
+
break;
|
|
179
|
+
default:
|
|
180
|
+
if (isWhiteChar(ch)) continue;
|
|
181
|
+
state = "CONTENT";
|
|
182
|
+
}
|
|
183
|
+
if (!COMMENT_CHARS.includes(ch)) ret += ch;
|
|
184
|
+
break;
|
|
185
|
+
default: throw new Error("Unexpected state machine while minifying SQL.");
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return ret.trim();
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
//#endregion
|
|
193
|
+
export { SqlUtil };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { TableModel } from "@eggjs/dal-decorator";
|
|
2
|
+
|
|
3
|
+
//#region src/TableModelInstanceBuilder.d.ts
|
|
4
|
+
declare class TableModelInstanceBuilder {
|
|
5
|
+
constructor(tableModel: TableModel, row: Record<string, any>);
|
|
6
|
+
static buildInstance<T>(tableModel: TableModel<T>, row: Record<string, any>): any;
|
|
7
|
+
static buildRow<T extends object>(instance: T, tableModel: TableModel<T>): any;
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { TableModelInstanceBuilder };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { TableModel } from "@eggjs/dal-decorator";
|
|
2
|
+
|
|
3
|
+
//#region src/TableModelInstanceBuilder.ts
|
|
4
|
+
var TableModelInstanceBuilder = 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") result[`$${column.propertyName}`] = columnValue;
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
export { TableModelInstanceBuilder };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SqlMap, SqlType } from "@eggjs/tegg-types";
|
|
2
|
+
import { Template } from "nunjucks";
|
|
3
|
+
|
|
4
|
+
//#region src/TableSqlMap.d.ts
|
|
5
|
+
|
|
6
|
+
declare class TableSqlMap {
|
|
7
|
+
#private;
|
|
8
|
+
readonly name: string;
|
|
9
|
+
private readonly map;
|
|
10
|
+
private readonly blocks;
|
|
11
|
+
private readonly sqlGenerator;
|
|
12
|
+
constructor(name: string, map: Record<string, SqlMap>);
|
|
13
|
+
generate(name: string, data: object, timezone: string): string;
|
|
14
|
+
getType(name: string): SqlType;
|
|
15
|
+
getTemplateString(name: string): string;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { TableSqlMap };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { TemplateUtil } from "./TemplateUtil.js";
|
|
2
|
+
import { NunjucksUtils } from "./NunjucksUtil.js";
|
|
3
|
+
import { SqlType } from "@eggjs/tegg-types";
|
|
4
|
+
import { Template } from "nunjucks";
|
|
5
|
+
|
|
6
|
+
//#region src/TableSqlMap.ts
|
|
7
|
+
var TableSqlMap = class {
|
|
8
|
+
constructor(name, map) {
|
|
9
|
+
this.name = name;
|
|
10
|
+
this.map = map;
|
|
11
|
+
const env = NunjucksUtils.createEnv(name);
|
|
12
|
+
const extracted = this.#extract(this.map);
|
|
13
|
+
this.blocks = extracted.blocks;
|
|
14
|
+
this.sqlGenerator = extracted.sqlGenerator;
|
|
15
|
+
for (const key in this.blocks) {
|
|
16
|
+
// istanbul ignore if
|
|
17
|
+
if (!this.blocks.hasOwnProperty(key)) continue;
|
|
18
|
+
env.addGlobal(key, this.blocks[key]);
|
|
19
|
+
}
|
|
20
|
+
env.addFilter("toJson", TemplateUtil.toJson);
|
|
21
|
+
env.addFilter("toPoint", TemplateUtil.toPoint);
|
|
22
|
+
env.addFilter("toLine", TemplateUtil.toLine);
|
|
23
|
+
env.addFilter("toPolygon", TemplateUtil.toPolygon);
|
|
24
|
+
env.addFilter("toGeometry", TemplateUtil.toGeometry);
|
|
25
|
+
env.addFilter("toMultiPoint", TemplateUtil.toMultiPoint);
|
|
26
|
+
env.addFilter("toMultiLine", TemplateUtil.toMultiLine);
|
|
27
|
+
env.addFilter("toMultiPolygon", TemplateUtil.toMultiPolygon);
|
|
28
|
+
env.addFilter("toGeometryCollection", TemplateUtil.toGeometryCollection);
|
|
29
|
+
}
|
|
30
|
+
#extract(map) {
|
|
31
|
+
const ret = {
|
|
32
|
+
blocks: {},
|
|
33
|
+
sqlGenerator: {}
|
|
34
|
+
};
|
|
35
|
+
for (const key in map) {
|
|
36
|
+
// istanbul ignore if
|
|
37
|
+
if (!map.hasOwnProperty(key)) continue;
|
|
38
|
+
const sqlMap = map[key];
|
|
39
|
+
switch (sqlMap.type) {
|
|
40
|
+
case SqlType.BLOCK:
|
|
41
|
+
ret.blocks[key] = sqlMap.content || "";
|
|
42
|
+
break;
|
|
43
|
+
case SqlType.INSERT:
|
|
44
|
+
case SqlType.SELECT:
|
|
45
|
+
case SqlType.UPDATE:
|
|
46
|
+
case SqlType.DELETE:
|
|
47
|
+
default:
|
|
48
|
+
ret.sqlGenerator[key] = {
|
|
49
|
+
type: sqlMap.type,
|
|
50
|
+
template: NunjucksUtils.compile(this.name, key, sqlMap.sql || ""),
|
|
51
|
+
raw: sqlMap.sql
|
|
52
|
+
};
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return ret;
|
|
57
|
+
}
|
|
58
|
+
generate(name, data, timezone) {
|
|
59
|
+
const generator = this.sqlGenerator[name];
|
|
60
|
+
// istanbul ignore if
|
|
61
|
+
if (!generator) throw new Error(`No sql map named '${name}' in '${name}'.`);
|
|
62
|
+
const template = generator.template;
|
|
63
|
+
template.env.timezone = timezone;
|
|
64
|
+
return template.render(data);
|
|
65
|
+
}
|
|
66
|
+
getType(name) {
|
|
67
|
+
const generator = this.sqlGenerator[name];
|
|
68
|
+
// istanbul ignore if
|
|
69
|
+
if (!generator) throw new Error(`No sql map named '${name}' in '${name}'.`);
|
|
70
|
+
return generator.type;
|
|
71
|
+
}
|
|
72
|
+
getTemplateString(name) {
|
|
73
|
+
const generator = this.sqlGenerator[name];
|
|
74
|
+
// istanbul ignore if
|
|
75
|
+
if (!generator) throw new Error(`No sql map named '${name}' in '${name}'.`);
|
|
76
|
+
return generator.raw;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
//#endregion
|
|
81
|
+
export { TableSqlMap };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ColumnModel } from "@eggjs/dal-decorator";
|
|
2
|
+
import { ColumnType, Geometry, GeometryCollection, Line, MultiLine, MultiPoint, MultiPolygon, Point, Polygon } from "@eggjs/tegg-types";
|
|
3
|
+
|
|
4
|
+
//#region src/TemplateUtil.d.ts
|
|
5
|
+
declare class TemplateUtil {
|
|
6
|
+
static isSpatialType(columnModel: ColumnModel): boolean;
|
|
7
|
+
static importPath(tableModelPath: string, currentPath: string): string;
|
|
8
|
+
static dbTypeToTsType(columnType: ColumnType): string;
|
|
9
|
+
static toJson(value: any): string;
|
|
10
|
+
static toPoint(point: Point): string;
|
|
11
|
+
static toLine(val: Line): string;
|
|
12
|
+
static toPolygon(val: Polygon): string;
|
|
13
|
+
static toGeometry(val: Geometry): string;
|
|
14
|
+
static toMultiPoint(val: MultiPoint): string;
|
|
15
|
+
static toMultiLine(val: MultiLine): string;
|
|
16
|
+
static toMultiPolygon(val: MultiPolygon): string;
|
|
17
|
+
static toGeometryCollection(val: GeometryCollection): string;
|
|
18
|
+
static spatialFilter: Record<ColumnType, string>;
|
|
19
|
+
static getSpatialFilter(columnType: ColumnType): string;
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { TemplateUtil };
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ColumnModel, SpatialHelper } from "@eggjs/dal-decorator";
|
|
2
|
+
import { ColumnType } from "@eggjs/tegg-types";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
|
|
5
|
+
//#region src/TemplateUtil.ts
|
|
6
|
+
var TemplateUtil = class TemplateUtil {
|
|
7
|
+
static isSpatialType(columnModel) {
|
|
8
|
+
switch (columnModel.type.type) {
|
|
9
|
+
case ColumnType.GEOMETRY:
|
|
10
|
+
case ColumnType.POINT:
|
|
11
|
+
case ColumnType.LINESTRING:
|
|
12
|
+
case ColumnType.POLYGON:
|
|
13
|
+
case ColumnType.MULTIPOINT:
|
|
14
|
+
case ColumnType.MULTILINESTRING:
|
|
15
|
+
case ColumnType.MULTIPOLYGON:
|
|
16
|
+
case ColumnType.GEOMETRYCOLLECTION: return true;
|
|
17
|
+
default: return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
static importPath(tableModelPath, currentPath) {
|
|
21
|
+
return path.relative(currentPath, tableModelPath);
|
|
22
|
+
}
|
|
23
|
+
static dbTypeToTsType(columnType) {
|
|
24
|
+
return `ColumnTsType['${columnType}']`;
|
|
25
|
+
}
|
|
26
|
+
static toJson(value) {
|
|
27
|
+
return JSON.stringify(JSON.stringify(value));
|
|
28
|
+
}
|
|
29
|
+
static toPoint(point) {
|
|
30
|
+
if (typeof point.x !== "number" || typeof point.y !== "number") throw new Error(`invalidate point ${JSON.stringify(point)}`);
|
|
31
|
+
return `Point(${point.x}, ${point.y})`;
|
|
32
|
+
}
|
|
33
|
+
static toLine(val) {
|
|
34
|
+
return `LINESTRING(${val.map((t) => TemplateUtil.toPoint(t)).join(",")})`;
|
|
35
|
+
}
|
|
36
|
+
static toPolygon(val) {
|
|
37
|
+
return `POLYGON(${val.map((t) => TemplateUtil.toLine(t)).join(",")})`;
|
|
38
|
+
}
|
|
39
|
+
static toGeometry(val) {
|
|
40
|
+
const type = SpatialHelper.getGeometryType(val);
|
|
41
|
+
const filterName = TemplateUtil.getSpatialFilter(type);
|
|
42
|
+
return TemplateUtil[filterName](val);
|
|
43
|
+
}
|
|
44
|
+
static toMultiPoint(val) {
|
|
45
|
+
return `MULTIPOINT(${val.map((t) => TemplateUtil.toPoint(t)).join(",")})`;
|
|
46
|
+
}
|
|
47
|
+
static toMultiLine(val) {
|
|
48
|
+
return `MULTILINESTRING(${val.map((t) => TemplateUtil.toLine(t)).join(",")})`;
|
|
49
|
+
}
|
|
50
|
+
static toMultiPolygon(val) {
|
|
51
|
+
return `MULTIPOLYGON(${val.map((t) => TemplateUtil.toPolygon(t)).join(",")})`;
|
|
52
|
+
}
|
|
53
|
+
static toGeometryCollection(val) {
|
|
54
|
+
return `GEOMETRYCOLLECTION(${val.map((t) => {
|
|
55
|
+
return TemplateUtil.toGeometry(t);
|
|
56
|
+
}).join(",")})`;
|
|
57
|
+
}
|
|
58
|
+
static {
|
|
59
|
+
this.spatialFilter = {
|
|
60
|
+
[ColumnType.POINT]: "toPoint",
|
|
61
|
+
[ColumnType.LINESTRING]: "toLine",
|
|
62
|
+
[ColumnType.POLYGON]: "toPolygon",
|
|
63
|
+
[ColumnType.GEOMETRY]: "toGeometry",
|
|
64
|
+
[ColumnType.MULTIPOINT]: "toMultiPoint",
|
|
65
|
+
[ColumnType.MULTILINESTRING]: "toMultiLine",
|
|
66
|
+
[ColumnType.MULTIPOLYGON]: "toMultiPolygon",
|
|
67
|
+
[ColumnType.GEOMETRYCOLLECTION]: "toGeometryCollection"
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
static getSpatialFilter(columnType) {
|
|
71
|
+
const filter = TemplateUtil.spatialFilter[columnType];
|
|
72
|
+
if (!filter) throw new Error(`type ${columnType} is not spatial type`);
|
|
73
|
+
return filter;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
//#endregion
|
|
78
|
+
export { TemplateUtil };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseSqlMapGenerator } from "./BaseSqlMap.js";
|
|
2
|
+
import { CodeGenerator } from "./CodeGenerator.js";
|
|
3
|
+
import { DaoLoader } from "./DaoLoader.js";
|
|
4
|
+
import { DataSourceOptions, MysqlDataSource } from "./MySqlDataSource.js";
|
|
5
|
+
import { DatabaseForker } from "./DatabaseForker.js";
|
|
6
|
+
import { TableSqlMap } from "./TableSqlMap.js";
|
|
7
|
+
import { DataSource, ExecuteSql } from "./DataSource.js";
|
|
8
|
+
import { NunjucksConverter } from "./NunjucksConverter.js";
|
|
9
|
+
import { NunjucksUtils } from "./NunjucksUtil.js";
|
|
10
|
+
import { SqlGenerator } from "./SqlGenerator.js";
|
|
11
|
+
import { SqlMapLoader } from "./SqlMapLoader.js";
|
|
12
|
+
import { SqlUtil } from "./SqlUtil.js";
|
|
13
|
+
import { TableModelInstanceBuilder } from "./TableModelInstanceBuilder.js";
|
|
14
|
+
import { TemplateUtil } from "./TemplateUtil.js";
|
|
15
|
+
export { BaseSqlMapGenerator, CodeGenerator, DaoLoader, DataSource, DataSourceOptions, DatabaseForker, ExecuteSql, MysqlDataSource, NunjucksConverter, NunjucksUtils, SqlGenerator, SqlMapLoader, SqlUtil, TableModelInstanceBuilder, TableSqlMap, TemplateUtil };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { TemplateUtil } from "./TemplateUtil.js";
|
|
2
|
+
import { BaseSqlMapGenerator } from "./BaseSqlMap.js";
|
|
3
|
+
import { SqlGenerator } from "./SqlGenerator.js";
|
|
4
|
+
import { CodeGenerator } from "./CodeGenerator.js";
|
|
5
|
+
import { DaoLoader } from "./DaoLoader.js";
|
|
6
|
+
import { MysqlDataSource } from "./MySqlDataSource.js";
|
|
7
|
+
import { DatabaseForker } from "./DatabaseForker.js";
|
|
8
|
+
import { NunjucksConverter } from "./NunjucksConverter.js";
|
|
9
|
+
import { SqlUtil } from "./SqlUtil.js";
|
|
10
|
+
import { NunjucksUtils } from "./NunjucksUtil.js";
|
|
11
|
+
import { TableSqlMap } from "./TableSqlMap.js";
|
|
12
|
+
import { TableModelInstanceBuilder } from "./TableModelInstanceBuilder.js";
|
|
13
|
+
import { DataSource } from "./DataSource.js";
|
|
14
|
+
import { SqlMapLoader } from "./SqlMapLoader.js";
|
|
15
|
+
|
|
16
|
+
export { BaseSqlMapGenerator, CodeGenerator, DaoLoader, DataSource, DatabaseForker, MysqlDataSource, NunjucksConverter, NunjucksUtils, SqlGenerator, SqlMapLoader, SqlUtil, TableModelInstanceBuilder, TableSqlMap, TemplateUtil };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/dal-runtime",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.5",
|
|
4
4
|
"description": "tegg dal decorator",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"egg",
|
|
@@ -11,24 +11,15 @@
|
|
|
11
11
|
],
|
|
12
12
|
"type": "module",
|
|
13
13
|
"exports": {
|
|
14
|
-
".":
|
|
15
|
-
|
|
16
|
-
"default": "./src/index.js"
|
|
17
|
-
}
|
|
14
|
+
".": "./dist/index.js",
|
|
15
|
+
"./package.json": "./package.json"
|
|
18
16
|
},
|
|
19
17
|
"files": [
|
|
20
|
-
"
|
|
21
|
-
"src/**/*.d.ts"
|
|
18
|
+
"dist"
|
|
22
19
|
],
|
|
23
|
-
"scripts": {
|
|
24
|
-
"clean": "tsc -b --clean",
|
|
25
|
-
"tsc": "npm run clean && tsc -p ./tsconfig.json",
|
|
26
|
-
"tsc:pub": "npm run tsc",
|
|
27
|
-
"prepublishOnly": "npm run tsc"
|
|
28
|
-
},
|
|
29
20
|
"author": "killagu <killa123@126.com>",
|
|
30
21
|
"license": "MIT",
|
|
31
|
-
"homepage": "https://github.com/eggjs/tegg",
|
|
22
|
+
"homepage": "https://github.com/eggjs/tegg/tree/next/core/dal-runtime",
|
|
32
23
|
"bugs": {
|
|
33
24
|
"url": "https://github.com/eggjs/tegg/issues"
|
|
34
25
|
},
|
|
@@ -38,31 +29,39 @@
|
|
|
38
29
|
"directory": "core/dal-decorator"
|
|
39
30
|
},
|
|
40
31
|
"engines": {
|
|
41
|
-
"node": ">=
|
|
32
|
+
"node": ">=22.18.0"
|
|
42
33
|
},
|
|
43
34
|
"dependencies": {
|
|
44
|
-
"@eggjs/
|
|
45
|
-
"@eggjs/dal-decorator": "^4.0.0-beta.4",
|
|
46
|
-
"@eggjs/rds": "^1.0.0",
|
|
47
|
-
"@eggjs/tegg-loader": "^4.0.0-beta.4",
|
|
48
|
-
"@eggjs/tegg-types": "^4.0.0-beta.4",
|
|
35
|
+
"@eggjs/rds": "^1.3.0",
|
|
49
36
|
"js-beautify": "^1.15.3",
|
|
50
37
|
"lodash": "^4.17.21",
|
|
51
38
|
"nunjucks": "^3.2.4",
|
|
52
39
|
"sdk-base": "^5.0.1",
|
|
53
|
-
"sqlstring": "^2.3.3"
|
|
40
|
+
"sqlstring": "^2.3.3",
|
|
41
|
+
"@eggjs/tegg-loader": "4.0.0-beta.5",
|
|
42
|
+
"@eggjs/tegg-types": "4.0.0-beta.5",
|
|
43
|
+
"@eggjs/dal-decorator": "4.0.0-beta.5",
|
|
44
|
+
"@eggjs/core-decorator": "4.0.0-beta.5"
|
|
54
45
|
},
|
|
55
46
|
"publishConfig": {
|
|
56
47
|
"access": "public"
|
|
57
48
|
},
|
|
58
49
|
"devDependencies": {
|
|
59
50
|
"@types/js-beautify": "^1.14.3",
|
|
60
|
-
"@types/lodash": "4",
|
|
61
|
-
"@types/node": "22",
|
|
62
|
-
"@types/nunjucks": "3",
|
|
51
|
+
"@types/lodash": "^4.17.20",
|
|
52
|
+
"@types/node": "^22.10.5",
|
|
53
|
+
"@types/nunjucks": "^3.2.6",
|
|
63
54
|
"@types/sqlstring": "^2.3.2",
|
|
64
|
-
"
|
|
65
|
-
"
|
|
55
|
+
"typescript": "^5.9.3",
|
|
56
|
+
"tsdown": "^0.15.6",
|
|
57
|
+
"unplugin-unused": "^0.5.3"
|
|
66
58
|
},
|
|
67
|
-
"
|
|
68
|
-
|
|
59
|
+
"main": "./dist/index.js",
|
|
60
|
+
"module": "./dist/index.js",
|
|
61
|
+
"types": "./dist/index.d.ts",
|
|
62
|
+
"scripts": {
|
|
63
|
+
"clean": "rimraf dist",
|
|
64
|
+
"build": "tsdown",
|
|
65
|
+
"typecheck": "tsc --noEmit"
|
|
66
|
+
}
|
|
67
|
+
}
|
package/src/BaseSqlMap.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { TableModel } from '@eggjs/dal-decorator';
|
|
2
|
-
import { 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>;
|
|
15
|
-
}
|