1 /* 2 * Copyright (c) 2024 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 16 #ifndef RELATIONAL_STORE_IMPL_RDBPREDICATES_FFI_H 17 #define RELATIONAL_STORE_IMPL_RDBPREDICATES_FFI_H 18 19 #include <memory> 20 #include <string> 21 22 #include "ffi_remote_data.h" 23 #include "rdb_predicates.h" 24 #include "relational_store_utils.h" 25 #include "value_object.h" 26 27 namespace OHOS { 28 namespace Relational { 29 class RdbPredicatesImpl : public OHOS::FFI::FFIData { 30 public: GetRuntimeType()31 OHOS::FFI::RuntimeType *GetRuntimeType() override 32 { 33 return GetClassType(); 34 } 35 36 explicit RdbPredicatesImpl(const char *tableName); 37 38 explicit RdbPredicatesImpl(std::shared_ptr<NativeRdb::RdbPredicates> predicates); 39 40 void InDevices(const char **devicesArray, int64_t devicesSize); 41 42 void InAllDevices(); 43 44 void BeginWrap(); 45 46 void EndWrap(); 47 48 void Or(); 49 50 void And(); 51 52 void Contains(const char *field, const char *value); 53 54 void BeginsWith(const char *field, const char *value); 55 56 void EndsWith(const char *field, const char *value); 57 58 void IsNull(const char *field); 59 60 void IsNotNull(const char *field); 61 62 void Like(const char *field, const char *value); 63 64 void Glob(const char *field, const char *value); 65 66 void OrderByAsc(const char *field); 67 68 void OrderByDesc(const char *field); 69 70 void Distinct(); 71 72 void LimitAs(int32_t value); 73 74 void OffsetAs(int32_t rowOffset); 75 76 void GroupBy(const char **fieldsArray, int64_t fieldsSize); 77 78 void IndexedBy(const char *field); 79 80 void LessThanOrEqualTo(const char *field, ValueType value); 81 82 void EqualTo(const char *field, ValueType value); 83 84 void GreaterThanOrEqualTo(const char *field, ValueType value); 85 86 void GreaterThan(const char *field, ValueType value); 87 88 void NotBetween(const char *field, ValueType lowValue, ValueType highValue); 89 90 void LessThan(const char *field, ValueType value); 91 92 void Between(const char *field, ValueType lowValue, ValueType highValue); 93 94 void In(const char *field, ValueType *values, int64_t valuesSize); 95 96 void NotIn(const char *field, ValueType *values, int64_t valuesSize); 97 98 void NotEqualTo(const char *field, ValueType value); 99 100 void NotContains(const char* field, const char* value); 101 102 void NotLike(const char* field, const char* value); 103 104 std::shared_ptr<NativeRdb::RdbPredicates> GetPredicates(); 105 106 void LessThanOrEqualToEx(const char *field, const ValueTypeEx *value); 107 108 void EqualToEx(const char *field, const ValueTypeEx *value); 109 110 void GreaterThanOrEqualToEx(const char *field, const ValueTypeEx *value); 111 112 void GreaterThanEx(const char *field, const ValueTypeEx *value); 113 114 void NotBetweenEx(const char *field, const ValueTypeEx *lowValue, const ValueTypeEx *highValue); 115 116 void LessThanEx(const char *field, const ValueTypeEx *value); 117 118 void BetweenEx(const char *field, const ValueTypeEx *lowValue, const ValueTypeEx *highValue); 119 120 void InEx(const char *field, ValueTypeEx *values, int64_t valuesSize); 121 122 void NotInEx(const char *field, ValueTypeEx *values, int64_t valuesSize); 123 124 void NotEqualToEx(const char *field, const ValueTypeEx *value); 125 126 private: 127 std::shared_ptr<NativeRdb::RdbPredicates> predicates_; 128 129 friend class OHOS::FFI::RuntimeType; 130 131 friend class OHOS::FFI::TypeBase; 132 133 static OHOS::FFI::RuntimeType *GetClassType(); 134 }; 135 } // namespace Relational 136 } // namespace OHOS 137 138 #endif