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 #include "relational_store_impl_rdbpredicatesproxy.h" 17 #include "relational_store_utils.h" 18 19 namespace OHOS { 20 namespace Relational { RdbPredicatesImpl(const char * tableName)21 RdbPredicatesImpl::RdbPredicatesImpl(const char* tableName) 22 { 23 std::string str = tableName; 24 predicates_ = std::make_shared<NativeRdb::RdbPredicates>(str); 25 } 26 RdbPredicatesImpl(std::shared_ptr<NativeRdb::RdbPredicates> predicates)27 RdbPredicatesImpl::RdbPredicatesImpl(std::shared_ptr<NativeRdb::RdbPredicates> predicates) 28 { 29 predicates_ = predicates; 30 } 31 GetClassType()32 OHOS::FFI::RuntimeType* RdbPredicatesImpl::GetClassType() 33 { 34 static OHOS::FFI::RuntimeType runtimeType = 35 OHOS::FFI::RuntimeType::Create<OHOS::FFI::FFIData>("RdbPredicatesImpl"); 36 return &runtimeType; 37 } 38 GetPredicates()39 std::shared_ptr<NativeRdb::RdbPredicates> RdbPredicatesImpl::GetPredicates() 40 { 41 return predicates_; 42 } 43 InDevices(const char ** devicesArray,int64_t devicesSize)44 void RdbPredicatesImpl::InDevices(const char** devicesArray, int64_t devicesSize) 45 { 46 std::vector<std::string> devices; 47 for (int64_t i = 0; i < devicesSize; i++) { 48 devices.push_back(devicesArray[i]); 49 } 50 predicates_->InDevices(devices); 51 } 52 InAllDevices()53 void RdbPredicatesImpl::InAllDevices() 54 { 55 predicates_->InAllDevices(); 56 } 57 BeginWrap()58 void RdbPredicatesImpl::BeginWrap() 59 { 60 predicates_->BeginWrap(); 61 } 62 EndWrap()63 void RdbPredicatesImpl::EndWrap() 64 { 65 predicates_->EndWrap(); 66 } 67 Or()68 void RdbPredicatesImpl::Or() 69 { 70 predicates_->Or(); 71 } 72 And()73 void RdbPredicatesImpl::And() 74 { 75 predicates_->And(); 76 } 77 Contains(const char * field,const char * value)78 void RdbPredicatesImpl::Contains(const char* field, const char* value) 79 { 80 std::string cfield = field; 81 std::string cvalue = value; 82 predicates_->Contains(cfield, cvalue); 83 } 84 BeginsWith(const char * field,const char * value)85 void RdbPredicatesImpl::BeginsWith(const char* field, const char* value) 86 { 87 std::string cfield = field; 88 std::string cvalue = value; 89 predicates_->BeginsWith(cfield, cvalue); 90 } 91 EndsWith(const char * field,const char * value)92 void RdbPredicatesImpl::EndsWith(const char* field, const char* value) 93 { 94 std::string cfield = field; 95 std::string cvalue = value; 96 predicates_->EndsWith(cfield, cvalue); 97 } 98 IsNull(const char * field)99 void RdbPredicatesImpl::IsNull(const char* field) 100 { 101 std::string cfield = field; 102 predicates_->IsNull(cfield); 103 } 104 IsNotNull(const char * field)105 void RdbPredicatesImpl::IsNotNull(const char* field) 106 { 107 std::string cfield = field; 108 predicates_->IsNotNull(cfield); 109 } 110 Like(const char * field,const char * value)111 void RdbPredicatesImpl::Like(const char* field, const char* value) 112 { 113 std::string cfield = field; 114 std::string cvalue = value; 115 predicates_->Like(cfield, cvalue); 116 } 117 Glob(const char * field,const char * value)118 void RdbPredicatesImpl::Glob(const char* field, const char* value) 119 { 120 std::string cfield = field; 121 std::string cvalue = value; 122 predicates_->Glob(cfield, cvalue); 123 } 124 OrderByAsc(const char * field)125 void RdbPredicatesImpl::OrderByAsc(const char* field) 126 { 127 std::string cfield = field; 128 predicates_->OrderByAsc(cfield); 129 } 130 OrderByDesc(const char * field)131 void RdbPredicatesImpl::OrderByDesc(const char* field) 132 { 133 std::string cfield = field; 134 predicates_->OrderByDesc(cfield); 135 } 136 Distinct()137 void RdbPredicatesImpl::Distinct() 138 { 139 predicates_->Distinct(); 140 } 141 LimitAs(int32_t value)142 void RdbPredicatesImpl::LimitAs(int32_t value) 143 { 144 predicates_->Limit(value); 145 } 146 OffsetAs(int32_t rowOffset)147 void RdbPredicatesImpl::OffsetAs(int32_t rowOffset) 148 { 149 predicates_->Offset(rowOffset); 150 } 151 GroupBy(const char ** fieldsArray,int64_t fieldsSize)152 void RdbPredicatesImpl::GroupBy(const char** fieldsArray, int64_t fieldsSize) 153 { 154 std::vector<std::string> fields; 155 for (int64_t i = 0; i < fieldsSize; i++) { 156 fields.push_back(fieldsArray[i]); 157 } 158 predicates_->GroupBy(fields); 159 } 160 IndexedBy(const char * field)161 void RdbPredicatesImpl::IndexedBy(const char* field) 162 { 163 std::string cfield = field; 164 predicates_->IndexedBy(cfield); 165 } 166 LessThanOrEqualTo(const char * field,ValueType value)167 void RdbPredicatesImpl::LessThanOrEqualTo(const char* field, ValueType value) 168 { 169 std::string cfield = field; 170 NativeRdb::ValueObject valueObject = ValueTypeToValueObject(value); 171 predicates_->LessThanOrEqualTo(cfield, valueObject); 172 } 173 EqualTo(const char * field,ValueType value)174 void RdbPredicatesImpl::EqualTo(const char* field, ValueType value) 175 { 176 std::string cfield = field; 177 NativeRdb::ValueObject valueObject = ValueTypeToValueObject(value); 178 predicates_->EqualTo(cfield, valueObject); 179 } 180 GreaterThanOrEqualTo(const char * field,ValueType value)181 void RdbPredicatesImpl::GreaterThanOrEqualTo(const char* field, ValueType value) 182 { 183 std::string cfield = field; 184 NativeRdb::ValueObject valueObject = ValueTypeToValueObject(value); 185 predicates_->GreaterThanOrEqualTo(cfield, valueObject); 186 } 187 GreaterThan(const char * field,ValueType value)188 void RdbPredicatesImpl::GreaterThan(const char* field, ValueType value) 189 { 190 std::string cfield = field; 191 NativeRdb::ValueObject valueObject = ValueTypeToValueObject(value); 192 predicates_->GreaterThan(cfield, valueObject); 193 } 194 NotBetween(const char * field,ValueType lowValue,ValueType highValue)195 void RdbPredicatesImpl::NotBetween(const char* field, ValueType lowValue, ValueType highValue) 196 { 197 std::string cfield = field; 198 NativeRdb::ValueObject lowValueObject = ValueTypeToValueObject(lowValue); 199 NativeRdb::ValueObject highValueObject = ValueTypeToValueObject(highValue); 200 predicates_->NotBetween(cfield, lowValueObject, highValueObject); 201 } 202 Between(const char * field,ValueType lowValue,ValueType highValue)203 void RdbPredicatesImpl::Between(const char* field, ValueType lowValue, ValueType highValue) 204 { 205 std::string cfield = field; 206 NativeRdb::ValueObject lowValueObject = ValueTypeToValueObject(lowValue); 207 NativeRdb::ValueObject highValueObject = ValueTypeToValueObject(highValue); 208 predicates_->Between(cfield, lowValueObject, highValueObject); 209 } 210 LessThan(const char * field,ValueType value)211 void RdbPredicatesImpl::LessThan(const char* field, ValueType value) 212 { 213 std::string cfield = field; 214 NativeRdb::ValueObject valueObject = ValueTypeToValueObject(value); 215 predicates_->LessThan(cfield, valueObject); 216 } 217 In(const char * field,ValueType * values,int64_t valuesSize)218 void RdbPredicatesImpl::In(const char* field, ValueType* values, int64_t valuesSize) 219 { 220 std::string cfield = field; 221 std::vector<NativeRdb::ValueObject> valueObjects = std::vector<NativeRdb::ValueObject>(); 222 for (int64_t i = 0; i < valuesSize; i++) { 223 valueObjects.push_back(ValueTypeToValueObject(values[i])); 224 } 225 predicates_->In(cfield, valueObjects); 226 } 227 NotIn(const char * field,ValueType * values,int64_t valuesSize)228 void RdbPredicatesImpl::NotIn(const char* field, ValueType* values, int64_t valuesSize) 229 { 230 std::string cfield = field; 231 std::vector<NativeRdb::ValueObject> valueObjects = std::vector<NativeRdb::ValueObject>(); 232 for (int64_t i = 0; i < valuesSize; i++) { 233 valueObjects.push_back(ValueTypeToValueObject(values[i])); 234 } 235 predicates_->NotIn(cfield, valueObjects); 236 } 237 NotEqualTo(const char * field,ValueType value)238 void RdbPredicatesImpl::NotEqualTo(const char* field, ValueType value) 239 { 240 std::string cfield = field; 241 NativeRdb::ValueObject valueObject = ValueTypeToValueObject(value); 242 predicates_->NotEqualTo(cfield, valueObject); 243 } 244 } 245 }