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 */ 15 16import Extension from '@ohos.application.DataShareExtensionAbility'; 17import rdb from '@ohos.data.rdb'; 18 19let DB_NAME = "book.db"; 20let TBL_NAME = "book"; 21let DDL_TBL_CREATE = "CREATE TABLE IF NOT EXISTS " + TBL_NAME + " (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, introduction TEXT NOT NULL)"; 22 23let rdbStore; 24 25function sleep(time: number) { 26 return new Promise((resolve) => { 27 setTimeout(resolve, time); 28 }) 29} 30 31async function output() { 32 let out = await sleep(1000); 33 console.log('1'); 34 return out; 35} 36 37export default class DataShareExtAbility extends Extension { 38 async onCreate(want, callback) { 39 console.log('[DataShareServer]: DataShareExtAbility onCreate, want:' + want.abilityName); 40 console.log('[DataShareServer]: DataShareExtAbility onCreate this.context.databaseDir:' + this.context.databaseDir); 41 // @ts-ignore 42 rdbStore = await rdb.getRdbStore(this.context, { 43 name: DB_NAME 44 }, 1); 45 console.log('[DataShareServer]: DataShareExtAbility getRdbStore done'); 46 await rdbStore.executeSql(DDL_TBL_CREATE, []); 47 console.log('[DataShareServer]: DataShareExtAbility executeSql done'); 48 let err = { 49 "code": 0 50 }; 51 callback(err); 52 console.log('[DataShareServer]: DataShareExtAbility onCreate end'); 53 } 54 55 async getFileTypes(uri: string, mimeTypeFilter: string, callback) { 56 console.log('[DataShareServer]: [getFileTypes] enter'); 57 let ret = new Array("type01", "type00", "type03"); 58 console.log('[DataShareServer]: [getFileTypes] leave, ret:' + ret); 59 let err = { 60 "code": 0 61 }; 62 await callback(err, ret); 63 return ret; 64 } 65 66 async openFile(uri: string, mode: string, callback) { 67 console.log('[DataShareServer]: [openFile] enter'); 68 let ret = 1; 69 let err = { 70 "code": 0 71 }; 72 await callback(err, ret); 73 console.log('[DataShareServer]: [openFile] leave, ret:' + ret); 74 } 75 76 async insert(uri, value, callback) { 77 console.log('[DataShareServer]: [insert] enter'); 78 if (value == null) { 79 console.error('[DataShareServer]: [insert] invalid valueBuckets'); 80 return; 81 } 82 console.log('[DataShareServer]: [insert] value = ' + value); 83 console.log('[DataShareServer]: [insert] value = ' + JSON.stringify(value)); 84 await rdbStore.insert(TBL_NAME, value, (err, ret) => { 85 console.log('[DataShareServer]: <<Provider>> [insert] callback ret:' + ret); 86 if (callback != undefined) { 87 callback(err, ret); 88 } 89 }); 90 console.log('[DataShareServer]: [insert] leave'); 91 } 92 93 async update(uri, predicates, value, callback) { 94 console.log('[DataShareServer]: [update] enter'); 95 if (predicates == null || predicates == undefined) { 96 console.error('[DataShareServer]: <<Provider>> [update] invalid predicates'); 97 return; 98 } 99 console.log('[DataShareServer]: [update] values = ' + value); 100 console.log('[DataShareServer]: [update] values = ' + JSON.stringify(value)); 101 console.log('[DataShareServer]: [update] predicates = ' + predicates); 102 console.log('[DataShareServer]: [update] predicates = ' + JSON.stringify(predicates)); 103 try { 104 await rdbStore.update(TBL_NAME, value, predicates, function (err, ret) { 105 console.log('[DataShareServer]: [update] callback ret:' + ret); 106 console.log('[DataShareServer]: [update] callback err:' + err); 107 if (callback != undefined) { 108 callback(err, ret); 109 } 110 }); 111 } catch (err) { 112 console.error('[DataShareServer]: [update] error' + err); 113 } 114 sleep(1); 115 console.log('[DataShareServer]: [update] leave'); 116 } 117 118 async delete(uri, predicates, callback) { 119 console.log('[DataShareServer]: [delete] enter'); 120 if (predicates == null || predicates == undefined) { 121 console.error('[DataShareServer]: [delete] invalid predicates'); 122 return; 123 } 124 console.log('[DataShareServer]: [delete] predicates = ' + predicates); 125 console.log('[DataShareServer]: [delete] predicates = ' + JSON.stringify(predicates)); 126 try { 127 await rdbStore.delete(TBL_NAME, predicates, (err, ret) => { 128 console.log('[DataShareServer]: [delete] ret:' + ret); 129 if (callback != undefined) { 130 callback(err, ret); 131 } 132 }); 133 } catch (err) { 134 console.error('[DataShareServer]: [delete] error' + err); 135 } 136 console.log('[DataShareServer]: [delete] leave'); 137 } 138 139 async query(uri, predicates, columns, callback) { 140 console.log('[DataShareServer]: [query] enter'); 141 if (predicates == null || predicates == undefined) { 142 console.error('[DataShareServer]: [query] invalid predicates'); 143 } 144 console.log('[DataShareServer]: [query] values = ' + columns); 145 console.log('[DataShareServer]: [query] values = ' + JSON.stringify(columns)); 146 console.log('[DataShareServer]: [query] predicates = ' + predicates); 147 console.log('[DataShareServer]: [query] predicates = ' + JSON.stringify(predicates)); 148 try { 149 await rdbStore.query(TBL_NAME, predicates, columns, (err, resultSet) => { 150 console.log('[DataShareServer]: [query] ret: ' + resultSet); 151 if (resultSet != undefined) { 152 console.log('[DataShareServer]: [query] resultSet.rowCount: ' + resultSet.rowCount); 153 } 154 if (callback != undefined) { 155 callback(err, resultSet); 156 } 157 }); 158 } catch (err) { 159 console.error('[DataShareServer]: [query] error' + err); 160 } 161 162 console.log('[DataShareServer]: [query] leave'); 163 } 164 165 async getType(uri: string, callback) { 166 console.log('[DataShareServer]: [getType] enter'); 167 let ret = "image"; 168 console.log('[DataShareServer]: [getType] leave, ret:' + ret); 169 let err = { 170 "code": 0 171 }; 172 await callback(err, ret); 173 return ret; 174 } 175 176 async batchInsert(uri: string, valueBuckets, callback) { 177 console.log('[DataShareServer]: [batchInsert] enter'); 178 if (valueBuckets == null || valueBuckets.length == undefined) { 179 console.error('[DataShareServer]: <<Provider>> [batchInsert] invalid valueBuckets'); 180 return; 181 } 182 console.log('[DataShareServer]: [batchInsert] valueBuckets.length:' + valueBuckets.length); 183 let resultNum = valueBuckets.length 184 await valueBuckets.forEach(vb => { 185 console.log('[DataShareServer]: [batchInsert] vb:' + JSON.stringify(vb)); 186 rdbStore.insert(TBL_NAME, vb, function (err, ret) { 187 console.log('[DataShareServer]: [batchInsert] callback ret:' + ret); 188 if (callback != undefined) { 189 callback(err, resultNum); 190 } 191 }); 192 }); 193 console.log('[DataShareServer]: [batchInsert] leave'); 194 } 195 196 async normalizeUri(uri: string, callback) { 197 console.log('[DataShareServer]: [normalizeUri] enter'); 198 let ret = uri; 199 let err = { 200 "code": 0 201 }; 202 await callback(err, ret); 203 console.log('[DataShareServer]: [normalizeUri] leave, ret:' + ret); 204 } 205 206 async denormalizeUri(uri: string, callback) { 207 console.log('[DataShareServer]: [denormalizeUri] enter'); 208 let ret = uri; 209 let err = { 210 "code": 0 211 }; 212 await callback(err, ret); 213 console.log('[DataShareServer]: [denormalizeUri] leave, ret:' + ret); 214 } 215}