161847f8eSopenharmony_ci/*
261847f8eSopenharmony_ci * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
361847f8eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"),
461847f8eSopenharmony_ci * you may not use this file except in compliance with the License.
561847f8eSopenharmony_ci * You may obtain a copy of the License at
661847f8eSopenharmony_ci *
761847f8eSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
861847f8eSopenharmony_ci *
961847f8eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1061847f8eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1161847f8eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1261847f8eSopenharmony_ci * See the License for the specific language governing permissions and
1361847f8eSopenharmony_ci * limitations under the License.
1461847f8eSopenharmony_ci */
1561847f8eSopenharmony_ci
1661847f8eSopenharmony_ci/**
1761847f8eSopenharmony_ci * @file
1861847f8eSopenharmony_ci * @kit ArkData
1961847f8eSopenharmony_ci */
2061847f8eSopenharmony_ci
2161847f8eSopenharmony_ciimport { AsyncCallback } from './@ohos.base';
2261847f8eSopenharmony_ciimport ExtensionContext from './application/ExtensionContext';
2361847f8eSopenharmony_ciimport Want from './@ohos.app.ability.Want';
2461847f8eSopenharmony_ciimport dataSharePredicates from './@ohos.data.dataSharePredicates';
2561847f8eSopenharmony_ciimport { ValuesBucket } from './@ohos.data.ValuesBucket';
2661847f8eSopenharmony_ciimport dataShare from './@ohos.data.dataShare';
2761847f8eSopenharmony_ci
2861847f8eSopenharmony_ci/**
2961847f8eSopenharmony_ci   * Struct for a batch update operation.
3061847f8eSopenharmony_ci   *
3161847f8eSopenharmony_ci   * @typedef { dataShare.UpdateOperation }
3261847f8eSopenharmony_ci   * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
3361847f8eSopenharmony_ci   * @systemapi
3461847f8eSopenharmony_ci   * @stagemodelonly
3561847f8eSopenharmony_ci   * @since 12
3661847f8eSopenharmony_ci   */
3761847f8eSopenharmony_citype UpdateOperation = dataShare.UpdateOperation;
3861847f8eSopenharmony_ci
3961847f8eSopenharmony_ci/**
4061847f8eSopenharmony_ci * This module provides data sharing and expansion capabilities.
4161847f8eSopenharmony_ci *
4261847f8eSopenharmony_ci * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
4361847f8eSopenharmony_ci * @systemapi
4461847f8eSopenharmony_ci * @StageModelOnly
4561847f8eSopenharmony_ci * @since 9
4661847f8eSopenharmony_ci */
4761847f8eSopenharmony_ciexport default class DataShareExtensionAbility {
4861847f8eSopenharmony_ci  /**
4961847f8eSopenharmony_ci   * Indicates datashare extension ability context.
5061847f8eSopenharmony_ci   *
5161847f8eSopenharmony_ci   * @type { ExtensionContext }
5261847f8eSopenharmony_ci   * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
5361847f8eSopenharmony_ci   * @systemapi
5461847f8eSopenharmony_ci   * @StageModelOnly
5561847f8eSopenharmony_ci   * @since 10
5661847f8eSopenharmony_ci   */
5761847f8eSopenharmony_ci  context: ExtensionContext;
5861847f8eSopenharmony_ci
5961847f8eSopenharmony_ci  /**
6061847f8eSopenharmony_ci   * Called back when a datashare extension ability is started for initialization.
6161847f8eSopenharmony_ci   *
6261847f8eSopenharmony_ci   * @param { Want } want - Indicates connection information about the datashare extension ability.
6361847f8eSopenharmony_ci   * @param { AsyncCallback<void> } callback - callback function, no return value.
6461847f8eSopenharmony_ci   * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
6561847f8eSopenharmony_ci   * @systemapi
6661847f8eSopenharmony_ci   * @StageModelOnly
6761847f8eSopenharmony_ci   * @since 9
6861847f8eSopenharmony_ci   */
6961847f8eSopenharmony_ci  onCreate?(want: Want, callback: AsyncCallback<void>): void;
7061847f8eSopenharmony_ci
7161847f8eSopenharmony_ci  /**
7261847f8eSopenharmony_ci   * Inserts a data record into the database. This method should be implemented by a data share.
7361847f8eSopenharmony_ci   *
7461847f8eSopenharmony_ci   * @param { string } uri - Indicates the position where the data is to insert.
7561847f8eSopenharmony_ci   * @param { ValuesBucket } valueBucket - Indicates the data to insert.
7661847f8eSopenharmony_ci   * @param { AsyncCallback<number> } callback - Returns the index of the newly inserted data record.
7761847f8eSopenharmony_ci   * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
7861847f8eSopenharmony_ci   * @systemapi
7961847f8eSopenharmony_ci   * @StageModelOnly
8061847f8eSopenharmony_ci   * @since 9
8161847f8eSopenharmony_ci   */
8261847f8eSopenharmony_ci  insert?(uri: string, valueBucket: ValuesBucket, callback: AsyncCallback<number>): void;
8361847f8eSopenharmony_ci
8461847f8eSopenharmony_ci  /**
8561847f8eSopenharmony_ci   * Updates one or more data records in the database. This method should be implemented by a data share.
8661847f8eSopenharmony_ci   *
8761847f8eSopenharmony_ci   * @param { string } uri - Indicates the database table storing the data to update.
8861847f8eSopenharmony_ci   * @param { dataSharePredicates.DataSharePredicates } predicates - Indicates filter criteria. If this parameter is
8961847f8eSopenharmony_ci   *                                                               null, all data records will be updated by default.
9061847f8eSopenharmony_ci   * @param { ValuesBucket } valueBucket - Indicates the data to update. This parameter can be null.
9161847f8eSopenharmony_ci   * @param { AsyncCallback<number> } callback - Returns the number of data records updated.
9261847f8eSopenharmony_ci   * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
9361847f8eSopenharmony_ci   * @systemapi
9461847f8eSopenharmony_ci   * @StageModelOnly
9561847f8eSopenharmony_ci   * @since 9
9661847f8eSopenharmony_ci   */
9761847f8eSopenharmony_ci  update?(
9861847f8eSopenharmony_ci    uri: string,
9961847f8eSopenharmony_ci    predicates: dataSharePredicates.DataSharePredicates,
10061847f8eSopenharmony_ci    valueBucket: ValuesBucket,
10161847f8eSopenharmony_ci    callback: AsyncCallback<number>
10261847f8eSopenharmony_ci  ): void;
10361847f8eSopenharmony_ci
10461847f8eSopenharmony_ci  /**
10561847f8eSopenharmony_ci   * Updates data records in the database.
10661847f8eSopenharmony_ci   *
10761847f8eSopenharmony_ci   * @param { Record<string, Array<UpdateOperation>> } operations - Indicates the data to update.
10861847f8eSopenharmony_ci   * @param { AsyncCallback<Record<string, Array<number>>> } callback - Callback used to return the result.
10961847f8eSopenharmony_ci   * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
11061847f8eSopenharmony_ci   * @systemapi
11161847f8eSopenharmony_ci   * @StageModelOnly
11261847f8eSopenharmony_ci   * @since 12
11361847f8eSopenharmony_ci   */
11461847f8eSopenharmony_ci  batchUpdate?(
11561847f8eSopenharmony_ci    operations: Record<string, Array<UpdateOperation>>,
11661847f8eSopenharmony_ci    callback: AsyncCallback<Record<string, Array<number>>>
11761847f8eSopenharmony_ci  ): void;
11861847f8eSopenharmony_ci
11961847f8eSopenharmony_ci  /**
12061847f8eSopenharmony_ci   * Deletes one or more data records. This method should be implemented by a data share.
12161847f8eSopenharmony_ci   *
12261847f8eSopenharmony_ci   * @param { string } uri - Indicates the database table storing the data to delete.
12361847f8eSopenharmony_ci   * @param { dataSharePredicates.DataSharePredicates } predicates - Indicates filter criteria. If this parameter is
12461847f8eSopenharmony_ci   *                                                                 null, all data records will be deleted by default.
12561847f8eSopenharmony_ci   * @param { AsyncCallback<number> } callback - Returns the number of data records deleted.
12661847f8eSopenharmony_ci   * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
12761847f8eSopenharmony_ci   * @systemapi
12861847f8eSopenharmony_ci   * @StageModelOnly
12961847f8eSopenharmony_ci   * @since 9
13061847f8eSopenharmony_ci   */
13161847f8eSopenharmony_ci  delete?(uri: string, predicates: dataSharePredicates.DataSharePredicates, callback: AsyncCallback<number>): void;
13261847f8eSopenharmony_ci
13361847f8eSopenharmony_ci  /**
13461847f8eSopenharmony_ci   * Queries one or more data records in the database. This method should be implemented by a data share.
13561847f8eSopenharmony_ci   * Only RDB and distributed KVDB resultsets are supported. The current version does not support custom resultsets.
13661847f8eSopenharmony_ci   *
13761847f8eSopenharmony_ci   * @param { string } uri - Indicates the database table storing the data to query.
13861847f8eSopenharmony_ci   * @param { dataSharePredicates.DataSharePredicates } predicates - Indicates filter criteria. If this parameter is
13961847f8eSopenharmony_ci   *                                                                 null, all data records will be queried by default.
14061847f8eSopenharmony_ci   * @param { Array<string> } columns - Indicates the columns to be queried, in array, for example, {"name","age"}.
14161847f8eSopenharmony_ci   *                                    You should define the processing logic when this parameter is null.
14261847f8eSopenharmony_ci   * @param { AsyncCallback<Object> } callback - Returns the queried data, only support result set of rdb or kvstore.
14361847f8eSopenharmony_ci   * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
14461847f8eSopenharmony_ci   * @systemapi
14561847f8eSopenharmony_ci   * @StageModelOnly
14661847f8eSopenharmony_ci   * @since 9
14761847f8eSopenharmony_ci   */
14861847f8eSopenharmony_ci  query?(
14961847f8eSopenharmony_ci    uri: string,
15061847f8eSopenharmony_ci    predicates: dataSharePredicates.DataSharePredicates,
15161847f8eSopenharmony_ci    columns: Array<string>,
15261847f8eSopenharmony_ci    callback: AsyncCallback<Object>
15361847f8eSopenharmony_ci  ): void;
15461847f8eSopenharmony_ci
15561847f8eSopenharmony_ci  /**
15661847f8eSopenharmony_ci   * Inserts multiple data records into the database. This method should be implemented by a data share.
15761847f8eSopenharmony_ci   *
15861847f8eSopenharmony_ci   * @param { string } uri - Indicates the position where the data is to insert.
15961847f8eSopenharmony_ci   * @param { Array<ValuesBucket> } valueBuckets - Indicates the data to insert.
16061847f8eSopenharmony_ci   * @param { AsyncCallback<number> } callback - Returns the number of data records inserted.
16161847f8eSopenharmony_ci   * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
16261847f8eSopenharmony_ci   * @systemapi
16361847f8eSopenharmony_ci   * @StageModelOnly
16461847f8eSopenharmony_ci   * @since 9
16561847f8eSopenharmony_ci   */
16661847f8eSopenharmony_ci  batchInsert?(uri: string, valueBuckets: Array<ValuesBucket>, callback: AsyncCallback<number>): void;
16761847f8eSopenharmony_ci
16861847f8eSopenharmony_ci  /**
16961847f8eSopenharmony_ci   * Converts the given {@code uri} that refer to the data share into a normalized URI. A normalized URI can be
17061847f8eSopenharmony_ci   * used across devices, persisted, backed up, and restored. It can refer to the same item in the data share
17161847f8eSopenharmony_ci   * even if the context has changed.
17261847f8eSopenharmony_ci   *
17361847f8eSopenharmony_ci   * @param { string } uri - Indicates the uri to normalize.
17461847f8eSopenharmony_ci   * @param { AsyncCallback<string> } callback - Returns the normalized uri if the data share supports URI normalization;
17561847f8eSopenharmony_ci   * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
17661847f8eSopenharmony_ci   * @systemapi
17761847f8eSopenharmony_ci   * @StageModelOnly
17861847f8eSopenharmony_ci   * @since 9
17961847f8eSopenharmony_ci   */
18061847f8eSopenharmony_ci  normalizeUri?(uri: string, callback: AsyncCallback<string>): void;
18161847f8eSopenharmony_ci
18261847f8eSopenharmony_ci  /**
18361847f8eSopenharmony_ci   * Converts the given normalized {@code uri} generated by {@link #normalizeUri(uri)} into a denormalized one.
18461847f8eSopenharmony_ci   * The default implementation of this method returns the original uri passed to it.
18561847f8eSopenharmony_ci   *
18661847f8eSopenharmony_ci   * @param { string } uri - Indicates the uri to denormalize.
18761847f8eSopenharmony_ci   * @param { AsyncCallback<string> } callback - Returns the denormalized {@code uri} object if the denormalization is
18861847f8eSopenharmony_ci   *                                             successful; returns the original {@code uri} passed to this method if
18961847f8eSopenharmony_ci   *                                             there is nothing to do; returns {@code null} if the data identified by
19061847f8eSopenharmony_ci   *                                             the original {@code uri} cannot be found in the current environment.
19161847f8eSopenharmony_ci   * @syscap SystemCapability.DistributedDataManager.DataShare.Provider
19261847f8eSopenharmony_ci   * @systemapi
19361847f8eSopenharmony_ci   * @StageModelOnly
19461847f8eSopenharmony_ci   * @since 9
19561847f8eSopenharmony_ci   */
19661847f8eSopenharmony_ci  denormalizeUri?(uri: string, callback: AsyncCallback<string>): void;
19761847f8eSopenharmony_ci}
198