diff --git a/build/cool/lib/eps/config.ts b/build/cool/lib/eps/config.ts
new file mode 100644
index 0000000..a50f974
--- /dev/null
+++ b/build/cool/lib/eps/config.ts
@@ -0,0 +1,36 @@
+export default {
+ // 实体生成
+ entity: {
+ // 是否生成
+ enable: true,
+ mapping: [
+ {
+ // 自定义匹配
+ custom: ({ entityName, propertyName, type }) => {
+ // status原本是tinyint,如果是1的话,== true是可以的,但是不能 === true,请谨慎使用
+ if (propertyName === "status" && type == "tinyint") return "boolean";
+ //如果没有,返回null或者不返回,则继续遍历其他匹配规则
+ return null;
+ }
+ },
+ {
+ // 返回类型
+ type: "string",
+ // 匹配列类型
+ includes: ["varchar", "text"]
+ },
+ {
+ type: "Date",
+ includes: ["datetime", "date"]
+ },
+ {
+ type: "number",
+ includes: ["tinyint", "int", "decimal"]
+ },
+ {
+ type: "BigInt",
+ includes: ["bigint"]
+ }
+ ]
+ }
+};
diff --git a/build/cool/lib/eps/index.ts b/build/cool/lib/eps/index.ts
index 9d995f9..6a71d03 100644
--- a/build/cool/lib/eps/index.ts
+++ b/build/cool/lib/eps/index.ts
@@ -3,6 +3,8 @@ import { isEmpty, last } from "lodash";
import { createDir, firstUpperCase, readFile, toCamel } from "../../utils";
import { createWriteStream } from "fs";
import { join } from "path";
+// import * as config from "/@/cool/config";
+import config from "./config";
// 临时目录路径
const tempPath = join(__dirname, "../../temp");
@@ -211,9 +213,70 @@ export async function createEps({ list, service }: any) {
})
)
);
+
+ if (config.entity.enable) createEntity(list);
}
// 获取描述
export function getEps() {
return JSON.stringify(readFile(join(tempPath, "eps.json")));
}
+
+function getType({ entityName, propertyName, type }) {
+ for (const map of config.entity.mapping) {
+ if (map.custom) {
+ const resType = map.custom({ entityName, propertyName, type });
+ if (resType) return resType;
+ }
+ if (map.includes?.includes(type)) return map.type;
+ }
+ return type;
+}
+
+// 创建Entity描述文件
+export function createEntity(list: any[]) {
+ const t2: any[] = [];
+
+ for (const item of list) {
+ if (!item.name) continue;
+ const t = [`declare interface ${item.name} {`];
+ for (const col of item.columns) {
+ // 描述
+ t.push("\n");
+ t.push("/**\n");
+ t.push(` * ${col.comment}\n`);
+ t.push(" */\n");
+ t.push(
+ `${col.propertyName}?: ${getType({
+ entityName: item.name,
+ propertyName: col.propertyName,
+ type: col.type
+ })};`
+ );
+ }
+ t.push("\n");
+ t.push("/**\n");
+ t.push(` * 任意键值\n`);
+ t.push(" */\n");
+ t.push(`[key: string]: any;`);
+ t.push("}");
+ t2.push(t);
+ }
+
+ // 文本内容
+ const content = prettier.format(t2.map((e) => e.join("")).join("\n\n"), {
+ parser: "typescript",
+ useTabs: true,
+ tabWidth: 4,
+ endOfLine: "lf",
+ semi: true,
+ singleQuote: false,
+ printWidth: 100,
+ trailingComma: "none"
+ });
+
+ // 创建 entity 描述文件
+ createWriteStream(join(tempPath, "entity.d.ts"), {
+ flags: "w"
+ }).write(content);
+}
diff --git a/src/env.d.ts b/src/env.d.ts
index 191a0fe..db16053 100644
--- a/src/env.d.ts
+++ b/src/env.d.ts
@@ -1,4 +1,5 @@
///
///
+///
declare const __EPS__: string;