mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-03 16:00:25 +08:00
feat: 机器文件优化&sql新增引号包裹
This commit is contained in:
@@ -266,6 +266,7 @@ const cellClick = (row: any, column: any, cell: any) => {
|
||||
};
|
||||
|
||||
const submitUpdateFields = () => {
|
||||
const dbInst = DbInst.getInst(state.dbId)
|
||||
let currentUpdatedFields = state.updatedFields;
|
||||
if (currentUpdatedFields.length <= 0) {
|
||||
return;
|
||||
@@ -274,12 +275,12 @@ const submitUpdateFields = () => {
|
||||
let res = '';
|
||||
let divs: HTMLElement[] = [];
|
||||
currentUpdatedFields.forEach(a => {
|
||||
let sql = `UPDATE ${state.table} SET `;
|
||||
let sql = `UPDATE ${dbInst.wrapName(state.table)} SET `;
|
||||
let primaryKey = a.primaryKey;
|
||||
let primaryKeyType = a.primaryKeyType;
|
||||
let primaryKeyName = a.primaryKeyName;
|
||||
a.fields.forEach(f => {
|
||||
sql += ` ${f.fieldName} = ${DbInst.wrapColumnValue(f.fieldType, f.newValue)},`
|
||||
sql += ` ${dbInst.wrapName(f.fieldName)} = ${DbInst.wrapColumnValue(f.fieldType, f.newValue)},`
|
||||
// 如果修改的字段是主键
|
||||
if (f.fieldName === primaryKeyName) {
|
||||
primaryKey = f.oldValue
|
||||
@@ -287,11 +288,11 @@ const submitUpdateFields = () => {
|
||||
divs.push(f.div)
|
||||
})
|
||||
sql = sql.substring(0, sql.length - 1)
|
||||
sql += ` WHERE ${primaryKeyName} = ${DbInst.wrapColumnValue(primaryKeyType, primaryKey)} ;`
|
||||
sql += ` WHERE ${dbInst.wrapName(primaryKeyName)} = ${DbInst.wrapColumnValue(primaryKeyType, primaryKey)} ;`
|
||||
res += sql;
|
||||
})
|
||||
|
||||
DbInst.getInst(state.dbId).promptExeSql(db, res, () => { }, () => {
|
||||
dbInst.promptExeSql(db, res, () => { }, () => {
|
||||
currentUpdatedFields = [];
|
||||
divs.forEach(a => {
|
||||
a.classList.remove('update_field_active');
|
||||
|
||||
@@ -283,7 +283,7 @@ const selectData = async () => {
|
||||
const dbInst = state.ti.getNowDbInst();
|
||||
const { db } = state.ti;
|
||||
try {
|
||||
const countRes = await dbInst.runSql(db, DbInst.getDefaultCountSql(state.table, state.condition));
|
||||
const countRes = await dbInst.runSql(db, dbInst.getDefaultCountSql(state.table, state.condition));
|
||||
state.count = countRes.res[0].count;
|
||||
let sql = dbInst.getDefaultSelectSql(state.table, state.condition, state.orderBy, state.pageNum, state.pageSize);
|
||||
state.sql = sql;
|
||||
@@ -427,6 +427,7 @@ const closeAddDataDialog = () => {
|
||||
const addRow = async () => {
|
||||
dataForm.value.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
const dbInst = state.ti.getNowDbInst();
|
||||
const data = state.addDataDialog.data;
|
||||
// key: 字段名,value: 字段名提示
|
||||
let obj: any = {};
|
||||
@@ -435,12 +436,12 @@ const addRow = async () => {
|
||||
if (!value) {
|
||||
continue;
|
||||
}
|
||||
obj[`${item.columnName}`] = DbInst.wrapValueByType(value);
|
||||
obj[`${dbInst.wrapName(item.columnName)}`] = DbInst.wrapValueByType(value);
|
||||
}
|
||||
let columnNames = Object.keys(obj).join(',');
|
||||
let values = Object.values(obj).join(',');
|
||||
let sql = `INSERT INTO ${state.table} (${columnNames}) VALUES (${values});`;
|
||||
state.ti.getNowDbInst().promptExeSql(state.ti.db, sql, null, () => {
|
||||
let sql = `INSERT INTO ${dbInst.wrapName(state.table)} (${columnNames}) VALUES (${values});`;
|
||||
dbInst.promptExeSql(state.ti.db, sql, null, () => {
|
||||
closeAddDataDialog();
|
||||
onRefresh();
|
||||
});
|
||||
|
||||
@@ -141,9 +141,19 @@ export class DbInst {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取count sql
|
||||
* @param table 表名
|
||||
* @param condition 条件
|
||||
* @returns count sql
|
||||
*/
|
||||
getDefaultCountSql = (table: string, condition?: string) => {
|
||||
return `SELECT COUNT(*) count FROM ${this.wrapName(table)} ${condition ? 'WHERE ' + condition : ''} limit 1`;
|
||||
};
|
||||
|
||||
// 获取指定表的默认查询sql
|
||||
getDefaultSelectSql(table: string, condition: string, orderBy: string, pageNum: number, limit: number = DbInst.DefaultLimit) {
|
||||
const baseSql = `SELECT * FROM ${table} ${condition ? 'WHERE ' + condition : ''} ${orderBy ? orderBy : ''}`;
|
||||
const baseSql = `SELECT * FROM ${this.wrapName(table)} ${condition ? 'WHERE ' + condition : ''} ${orderBy ? orderBy : ''}`;
|
||||
if (this.type == 'mysql') {
|
||||
return `${baseSql} LIMIT ${(pageNum - 1) * limit}, ${limit};`;
|
||||
}
|
||||
@@ -170,10 +180,10 @@ export class DbInst {
|
||||
let values = [];
|
||||
for (let column of columns) {
|
||||
const colName = column.columnName;
|
||||
colNames.push(colName);
|
||||
colNames.push(this.wrapName(colName));
|
||||
values.push(DbInst.wrapValueByType(data[colName]));
|
||||
}
|
||||
sqls.push(`INSERT INTO ${table} (${colNames.join(', ')}) VALUES(${values.join(', ')})`);
|
||||
sqls.push(`INSERT INTO ${this.wrapName(table)} (${colNames.join(', ')}) VALUES(${values.join(', ')})`);
|
||||
}
|
||||
return sqls.join(';\n') + ';';
|
||||
}
|
||||
@@ -187,7 +197,7 @@ export class DbInst {
|
||||
const primaryKey = this.getDb(db).getColumn(table);
|
||||
const primaryKeyColumnName = primaryKey.columnName;
|
||||
const ids = datas.map((d: any) => `${DbInst.wrapColumnValue(primaryKey.columnType, d[primaryKeyColumnName])}`).join(',');
|
||||
return `DELETE FROM ${table} WHERE ${primaryKeyColumnName} IN (${ids})`;
|
||||
return `DELETE FROM ${this.wrapName(table)} WHERE ${this.wrapName(primaryKeyColumnName)} IN (${ids})`;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -203,6 +213,22 @@ export class DbInst {
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 包裹数据库表名、字段名等,避免使用关键字为字段名或表名时报错
|
||||
* @param table
|
||||
* @param condition
|
||||
* @returns
|
||||
*/
|
||||
wrapName = (name: string) => {
|
||||
if (this.type == 'mysql') {
|
||||
return `\`${name}\``;
|
||||
}
|
||||
if (this.type == 'postgres') {
|
||||
return `"${name}"`;
|
||||
}
|
||||
return name;
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取或新建dbInst,如果缓存中不存在则新建,否则直接返回
|
||||
* @param inst 数据库实例,后端返回的列表接口中的信息
|
||||
@@ -252,16 +278,6 @@ export class DbInst {
|
||||
dbInstCache.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取count sql
|
||||
* @param table 表名
|
||||
* @param condition 条件
|
||||
* @returns count sql
|
||||
*/
|
||||
static getDefaultCountSql = (table: string, condition?: string) => {
|
||||
return `SELECT COUNT(*) count FROM ${table} ${condition ? 'WHERE ' + condition : ''}`;
|
||||
};
|
||||
|
||||
/**
|
||||
* 根据返回值包装值,若值为字符串类型则添加''
|
||||
* @param val 值
|
||||
|
||||
Reference in New Issue
Block a user