|
@@ -3,6 +3,55 @@
|
|
|
// 应用配置信息
|
|
|
eval(dfs.read("/script/matrix/utils/ajs/config.js"))
|
|
|
|
|
|
+function compitable(dta, dtb) {
|
|
|
+ switch (dta) {
|
|
|
+ case "timestamp":
|
|
|
+ switch (dtb) {
|
|
|
+ case "timestamp":
|
|
|
+ return true;
|
|
|
+ default:
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ case "boolean":
|
|
|
+ switch (dtb) {
|
|
|
+ case "boolean":
|
|
|
+ return true;
|
|
|
+ default:
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ case "int":
|
|
|
+ case "integer":
|
|
|
+ case "bigint":
|
|
|
+ switch (dtb) {
|
|
|
+ case "int":
|
|
|
+ case "integer":
|
|
|
+ case "bigint":
|
|
|
+ return true;
|
|
|
+ default:
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ case "number":
|
|
|
+ case "float":
|
|
|
+ case "double":
|
|
|
+ switch (dtb) {
|
|
|
+ case "number":
|
|
|
+ case "float":
|
|
|
+ case "double":
|
|
|
+ case "int":
|
|
|
+ case "integer":
|
|
|
+ case "bigint":
|
|
|
+ return true;
|
|
|
+ default:
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ case "string":
|
|
|
+ case "varchar":
|
|
|
+ case "text":
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false
|
|
|
+}
|
|
|
+
|
|
|
// 根据 JSON 对象数据建类或新增字段
|
|
|
// classname 类名
|
|
|
// clsoption 建类选项
|
|
@@ -189,7 +238,7 @@ function alterClass(input) {
|
|
|
if (xk in { "id": "", "class": "", "name": "", "day": "", "tags": "", "vtime": "" }) {
|
|
|
throw ("内部使用字段名 " + xk + ",需要映射成其它名称");
|
|
|
}
|
|
|
- if (clsfields[xk] && clsfields[xk].ftype != xfields[xk]) {
|
|
|
+ if (clsfields[xk] && clsfields[xk].ftype != xfields[xk] && !compitable(clsfields[xk].ftype, xfields[xk])) {
|
|
|
throw ("类继承字段 " + xk + " 信息不一致," + clsfields[xk].ftype + "!=" + xfields[xk] + ",需手动干预");
|
|
|
}
|
|
|
mql += fi == 0 ? "\n" : ",\n";
|
|
@@ -236,8 +285,8 @@ function alterClass(input) {
|
|
|
mql += (addn == 0) ? " " : ", ";
|
|
|
mql += xk + " " + xfields[xk];
|
|
|
addn++;
|
|
|
- } else if (clsfields[xk].ftype != xfields[xk]) {
|
|
|
- throw ("已经存在同名类字段 " + xk + " 信息不一致,需手动干预");
|
|
|
+ } else if (clsfields[xk].ftype != xfields[xk] && !compitable(clsfields[xk].ftype, xfields[xk])) {
|
|
|
+ throw ("已经存在同名类字段 " + xk + " 信息不一致," + clsfields[xk].ftype + "!=" + xfields[xk] + ",需手动干预");
|
|
|
}
|
|
|
}
|
|
|
if (addn > 0) {
|