import relationalStore from '@ohos.data.relationalStore'; import CommonConstants from '../../common/constants/CommonConstants'; import StorageInfo from '../StorageInfo'; class StorageModel { private rdbStore: relationalStore.RdbStore private tableName: string = 'STORAGE' /** * 初始化表 */ initTaskDB(context){ // 1.rdb配置 const config = { name: CommonConstants.RDB_NAME, securityLevel: relationalStore.SecurityLevel.S1 } // 2.初始化SQL语句 const sql = `CREATE TABLE IF NOT EXISTS STORAGE ( ID INTEGER PRIMARY KEY AUTOINCREMENT, STORAGE_NAME TEXT NOT NULL, X_SIZE INTEGER NOT NULL, Y_SIZE INTEGER NOT NULL, DEFAULT_LAYER INTEGER NOT NULL )` // 3.获取rdb relationalStore.getRdbStore(context, config, (err, rdbStore) => { if(err){ console.log('testTag', '获取rdbStore失败!') return } // 执行Sql rdbStore.executeSql(sql).then(()=>{ console.log('testTag', '创建仓储表成功!') }).catch(err=>{ console.log('testTag', '创建失败') }) // 保存rdbStore this.rdbStore = rdbStore }) } /** * 查询仓储列表 */ async getStorageList(){ // 1.构建查询条件 let predicates = new relationalStore.RdbPredicates(this.tableName) // 2.查询 let result = await this.rdbStore.query(predicates, ['ID', 'STORAGE_NAME', 'X_SIZE', 'Y_SIZE', 'DEFAULT_LAYER']) // 3.解析查询结果 // 3.1.定义一个数组,组装最终的查询结果 let storages: StorageInfo[] = [] // 3.2.遍历封装 while(!result.isAtLastRow){ // 3.3.指针移动到下一行 result.goToNextRow() // 3.4.获取数据 let id = result.getLong(result.getColumnIndex('ID')) let storageName = result.getString(result.getColumnIndex('STORAGE_NAME')) let xSize = result.getLong(result.getColumnIndex('X_SIZE')) let ySize = result.getLong(result.getColumnIndex('Y_SIZE')) let defaultLayer = result.getLong(result.getColumnIndex('DEFAULT_LAYER')) // 3.5.封装到数组 storages.push({id, storageName, xSize, ySize, defaultLayer}) } return storages } /** * 添加仓储 * @param storageName 仓储名称 * @param xSize x尺寸 * @param ySize y尺寸 * @param defaultLayer 默认尺寸 * @returns 仓储id */ addStorage(storageName: string, xSize: number, ySize: number, defaultLayer: number): Promise{ return this.rdbStore.insert(this.tableName, {STORAGE_NAME: storageName, X_SIZE: xSize, Y_SIZE: ySize, DEFAULT_LAYER: defaultLayer}) } /** * 根据id更新仓储状态 * @param id 任务id * @param finished 任务是否完成 */ updateStorage(id: number, storageName: string, xSize: number, ySize: number, defaultLayer: number) { // 1.要更新的数据 let data = {STORAGE_NAME: storageName, X_SIZE: xSize, Y_SIZE: ySize, DEFAULT_LAYER: defaultLayer} // 2.更新的条件 let predicates = new relationalStore.RdbPredicates(this.tableName) predicates.equalTo('ID', id) // 3.更新操作 return this.rdbStore.update(data, predicates) } /** * 根据id删除任务 * @param id 任务id */ deleteStorageById(id: number){ // 1.删除的条件 let predicates = new relationalStore.RdbPredicates(this.tableName) predicates.equalTo('ID', id) // 2.删除操作 return this.rdbStore.delete(predicates) } } let storageModel = new StorageModel(); export default storageModel as StorageModel;