• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/**
2 * Copyright (c) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15import HiLog from "./HiLog";
16import mmsTable from "../data/tableData";
17import ohosDataRdb from "@ohos.data.rdb";
18
19const TAG = "MmsDatabaseHelper";
20
21export default class MmsDatabaseHelper {
22    public static TABLE = {
23        SESSION: "session"
24    };
25    private static sInstance: MmsDatabaseHelper;
26    private mRdbStore = null;
27
28
29    static getInstance() {
30        if (MmsDatabaseHelper.sInstance == null) {
31            MmsDatabaseHelper.sInstance = new MmsDatabaseHelper();
32        }
33        return MmsDatabaseHelper.sInstance;
34    }
35
36    /**
37     * Creating Database Tables
38     */
39    async createTable() {
40        if (this.mRdbStore == null) {
41            this.mRdbStore = await ohosDataRdb.getRdbStore(globalThis.mmsContext,
42                { name: mmsTable.DB.MMSSMS.config.name }, mmsTable.DB.MMSSMS.version);
43
44            await this.mRdbStore.executeSql(mmsTable.table.session, null);
45            HiLog.i(TAG, "create session table finish");
46        } else {
47            HiLog.i(TAG, " this.mRdbStore !== null ");
48        }
49    }
50
51    /**
52     * Query Interface
53     * @param predicates     Search criteria
54     * @return
55     */
56    async query(predicates) {
57        if (this.mRdbStore !== null) {
58            return await this.mRdbStore.query(predicates);
59        } else {
60            HiLog.w(TAG, "mRdbStore is null, query fail.");
61            return null;
62        }
63    }
64
65    /**
66     * New data
67     */
68    async insert(tableName, valueBucket) {
69        let rowId = 0;
70        if (this.mRdbStore !== null) {
71            let insertPromise = this.mRdbStore.insert(tableName, valueBucket);
72            insertPromise.then((ret) => {
73                HiLog.i(TAG, "insert, first done: " + rowId);
74                rowId = ret;
75            }).catch((err) => {
76                HiLog.e(TAG, "insert, first fail: " + JSON.stringify(err.message));
77            })
78            await insertPromise;
79        } else {
80            HiLog.w(TAG, "mRdbStore is null, insert fail.");
81        }
82        return rowId;
83    }
84
85    /**
86     * Update Interface
87     * @param predicates
88     * @param predicates
89     * @return
90     */
91    async update(predicates, valueBucket) {
92        if (this.mRdbStore !== null) {
93            let changedRows = await this.mRdbStore.update(valueBucket, predicates);
94            HiLog.i(TAG, "update, changedRows=" + changedRows);
95        } else {
96            HiLog.w(TAG, "mRdbStore is null, update fail.");
97        }
98    }
99
100    /**
101     * Deleting an Interface
102     * @param predicates
103     * @return
104     */
105    async deleteItem(predicates) {
106        if (this.mRdbStore !== null) {
107            let deletedRows = await this.mRdbStore.delete(predicates);
108            HiLog.i(TAG, "deleteItem, deletedRows=" + deletedRows);
109        } else {
110            HiLog.w(TAG, "mRdbStore is null, delete item fail.");
111        }
112    }
113}