• 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 */
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}