123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- 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<number>{
- 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;
|