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