103 lines
3.3 KiB
TypeScript
103 lines
3.3 KiB
TypeScript
import SKDataUtil from "./SKDataUtil";
|
|
|
|
export default class SKDBUtil {
|
|
// 创建插入
|
|
static createInsertDuplicatet(table: string, data: any, keyData: any): string {
|
|
let keys: string = "";
|
|
let values: string = "";
|
|
let sets: string = "";
|
|
for (let key in data) {
|
|
keys += `${keys.length > 0 ? `,` : ``}${key}`;
|
|
let value = data[key];
|
|
let fixed = "";
|
|
if (value == null) {
|
|
fixed = "NULL";
|
|
} else if (`${value}`.indexOf(`FROM_UNIXTIME(`) == 0) {
|
|
fixed = `${value}`;
|
|
} else {
|
|
fixed = `'${value}'`;
|
|
}
|
|
values += `${values.length > 0 ? `,` : ``}${fixed}`;
|
|
sets += `${sets.length > 0 ? `,` : ``}${key}=${fixed}`;
|
|
}
|
|
for (let key in keyData) {
|
|
keys += `,${key}`;
|
|
let value = keyData[key];
|
|
values += `,${value}`;
|
|
}
|
|
return `INSERT INTO ${table}(${keys}) VALUES(${values}) ON DUPLICATE KEY UPDATE ${sets};`;
|
|
}
|
|
static createInsert(table: string, rows: any, fields: any, fliter: string = ""): string {
|
|
let result = "";
|
|
for (let row of rows) {
|
|
let temp = ``;
|
|
let index = 0;
|
|
for (let field of fields) {
|
|
index++;
|
|
if (fliter.length > 0 && field.name == fliter) {
|
|
continue;
|
|
}
|
|
let key = field.name;
|
|
let value = this.toString(row[key]);
|
|
if (value.length < 1) {
|
|
continue;
|
|
}
|
|
temp += `${key}=${value}${index == fields.length ? "" : ","}`;
|
|
}
|
|
result += `INSERT INTO ${table} SET ${temp};`;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
static createUpdate(table: string, obj: any, keys: string[]): string {
|
|
let length = SKDataUtil.getLength(obj);
|
|
if (length < 1) {
|
|
return "";
|
|
}
|
|
let fields = ``;
|
|
let index = 0;
|
|
for (let field in obj) {
|
|
index++;
|
|
if (SKDataUtil.atRangeByString(field, keys)) {
|
|
continue;
|
|
}
|
|
let value = this.toString(obj[field]);
|
|
if (value.length < 1) {
|
|
continue;
|
|
}
|
|
fields += `${field}=${value}${index == length ? "" : ","}`;
|
|
}
|
|
index = 0;
|
|
let condition = ``;
|
|
for (let key of keys) {
|
|
let value = this.toString(obj[key]);
|
|
if (value.length < 1) {
|
|
continue;
|
|
}
|
|
condition += `${index > 0 ? " AND " : ""}${key}=${value}`;
|
|
index++;
|
|
}
|
|
let result = `UPDATE ${table} SET ${fields} WHERE ${condition};`;
|
|
return result;
|
|
}
|
|
|
|
static createDelete(table: string, key: string, value: any): string {
|
|
let temp = this.toString(value);
|
|
if (temp.length < 1) {
|
|
return "";
|
|
}
|
|
let result = `DELETE FROM ${table} WHERE ${key}=${value};`;
|
|
return result;
|
|
}
|
|
|
|
static toString(value: any): string {
|
|
if (value == null) {
|
|
return ``;
|
|
}
|
|
if (value instanceof Date) {
|
|
let result = SKDataUtil.formatDate("YYYY-mm-dd HH:MM:SS", value.toString());
|
|
return `'${result}'`;
|
|
}
|
|
return `'${String(value)}'`;
|
|
}
|
|
} |