1 /*
2  * Copyright 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package androidx.appsearch.localstorage;
18 
19 import androidx.annotation.RestrictTo;
20 import androidx.appsearch.app.GenericDocument;
21 
22 import com.google.android.icing.proto.PersistType;
23 
24 import org.jspecify.annotations.NonNull;
25 
26 /**
27  * An interface that wraps AppSearch configurations required to create {@link AppSearchImpl}.
28  */
29 @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
30 public interface AppSearchConfig extends IcingOptionsConfig, LimitConfig {
31 
32     /**
33      * Whether to store {@link GenericDocument}'s parent types as a synthetic property. If not,
34      * the list of parent types will be wrapped as a meta field in {@link GenericDocument}, in a
35      * similar way as namespace, id, creationTimestamp, etc.
36      */
shouldStoreParentInfoAsSyntheticProperty()37     boolean shouldStoreParentInfoAsSyntheticProperty();
38 
39     /**
40      * Whether to include the list of parent types when returning a {@link GenericDocument} or a
41      * {@link androidx.appsearch.app.SearchResult} when
42      * {@link androidx.appsearch.flags.Flags#FLAG_ENABLE_SEARCH_RESULT_PARENT_TYPES} in on.
43      */
shouldRetrieveParentInfo()44     boolean shouldRetrieveParentInfo();
45 
46     /**
47      * Returns the {@code PersistType.Code} that should be used to persist common mutations such as
48      * PUTs or DELETEs.
49      */
getLightweightPersistType()50     PersistType. @NonNull Code getLightweightPersistType();
51 }
52