2025-03-07 11:54:23 +08:00
|
|
|
import { TableDefinition, User } from '../../model';
|
|
|
|
|
import DB, { ColumnInfo, ColumnType } from '../DbSql';
|
2025-02-20 13:27:49 +08:00
|
|
|
import { ParameterPlatform } from './Relationship';
|
2025-03-07 11:54:23 +08:00
|
|
|
import { BusinessError } from '@ohos.base';
|
2025-02-20 13:27:49 +08:00
|
|
|
|
|
|
|
|
// 建表操作
|
2025-03-07 11:54:23 +08:00
|
|
|
export async function InitTable() {
|
2025-02-20 13:27:49 +08:00
|
|
|
Object.keys(ParameterPlatform).forEach(async (item) => {
|
2025-03-07 11:54:23 +08:00
|
|
|
await DB.executeSql(ParameterPlatform[item].sqlCreate);
|
2025-02-20 13:27:49 +08:00
|
|
|
});
|
|
|
|
|
}
|
2025-03-07 11:54:23 +08:00
|
|
|
|
|
|
|
|
// 插表操作
|
|
|
|
|
export function SqlInsertTable(tableName: string, data: Array<User>, delFlag = true): Promise<boolean> {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
data.forEach((element, index) => {
|
|
|
|
|
element.id = !delFlag ? `${index + data.length}` : `${index}`
|
|
|
|
|
})
|
|
|
|
|
DB.clearTable(tableName).then((res) => {
|
|
|
|
|
const columns = Object.keys(data[0]).join(', ');
|
|
|
|
|
const values = data
|
|
|
|
|
.map((item) => {
|
|
|
|
|
const rowValues = Object.values(item)
|
|
|
|
|
.map((value: string | number) => (typeof value === 'string' ? `'${value}'` : value))
|
|
|
|
|
return `(${rowValues})`;
|
|
|
|
|
})
|
|
|
|
|
.join(', ');
|
|
|
|
|
let INSERT_SQL = "INSERT INTO " + tableName
|
|
|
|
|
+ " (" + columns + ") VALUES " + values
|
|
|
|
|
DB.executeSql(INSERT_SQL).then(() => {
|
|
|
|
|
console.log('sql insert,', res, 'tableName', tableName)
|
|
|
|
|
resolve(true)
|
|
|
|
|
}).catch((err: BusinessError) => {
|
|
|
|
|
console.log('sql insert err,', JSON.stringify(err), 'tableName', tableName)
|
|
|
|
|
reject(err)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 参数平台
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO 后续废弃这个方法,直接调用SqlInsertTable
|
|
|
|
|
// 依据数组和表名更新sql表
|
|
|
|
|
export function UpdateTableByArray(tableName: string, arr: Array<User>): Promise<boolean> {
|
|
|
|
|
return SqlInsertTable(tableName, arr)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//依据表名同步获取数据
|
|
|
|
|
export async function GetSyncData(tableName: string): Promise<boolean> {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
const columns: ColumnInfo[] = ParameterPlatform[tableName].columns.map((res: string) => {
|
|
|
|
|
return {
|
|
|
|
|
name: res,
|
|
|
|
|
columnName: res,
|
|
|
|
|
type: ColumnType.STRING
|
|
|
|
|
} as ColumnInfo
|
|
|
|
|
})
|
|
|
|
|
// TODO 需要完善此处类型
|
|
|
|
|
DB.queryListBySql<ESObject>(`select * from ${tableName}`, columns).then(() => {
|
|
|
|
|
resolve(true)
|
|
|
|
|
}).catch((err: BusinessError) => {
|
|
|
|
|
reject(err)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TODO 后续废弃这个方法,直接调用DB.deleteByName
|
|
|
|
|
// 删除表
|
|
|
|
|
export async function DeleteSyncTable(tableName: string): Promise<boolean> {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
DB.deleteByName(tableName).then(() => {
|
|
|
|
|
resolve(true)
|
|
|
|
|
}).catch(() => {
|
|
|
|
|
reject(false)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|