xy-server/game/gear/SKDBUtil.ts
2025-04-23 09:34:08 +08:00

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)}'`;
}
}