import { TableDefinition, User } from '../../model'; import DB, { ColumnInfo, ColumnType } from '../DbSql'; import { ParameterPlatform } from './Relationship'; import { BusinessError } from '@ohos.base'; // 建表操作 export async function InitTable() { Object.keys(ParameterPlatform).forEach(async (item) => { await DB.executeSql(ParameterPlatform[item].sqlCreate); }); } // 插表操作 export function SqlInsertTable(tableName: string, data: Array, delFlag = true): Promise { 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): Promise { return SqlInsertTable(tableName, arr) } //依据表名同步获取数据 export async function GetSyncData(tableName: string): Promise { 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(`select * from ${tableName}`, columns).then(() => { resolve(true) }).catch((err: BusinessError) => { reject(err) }) }) } // TODO 后续废弃这个方法,直接调用DB.deleteByName // 删除表 export async function DeleteSyncTable(tableName: string): Promise { return new Promise((resolve, reject) => { DB.deleteByName(tableName).then(() => { resolve(true) }).catch(() => { reject(false) }) }) }