1 /*
2 * Copyright (c) 2025 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
17
18 #include "napi/native_api.h"
19 #include <sys/stat.h>
20 #include <sys/types.h>
21 #include <string>
22
23 #include "common.h"
24 #include "database/rdb/oh_rdb_crypto_param.h"
25 #include "database/rdb/relational_store_error_code.h"
26 #include "database/rdb/relational_store.h"
27
28 OH_Rdb_Store *storeTestRdbStore_;
29 OH_Rdb_Store *predicatesTestRdbStore_;
OH_Rdb_Predicates_NotLike0100(napi_env env,napi_callback_info)30 static napi_value OH_Rdb_Predicates_NotLike0100(napi_env env, napi_callback_info)
31 {
32 const char *data5Value = "BBCD%";
33 auto ret = OH_Predicates_NotLike(nullptr, "data5", data5Value);
34 NAPI_ASSERT(env, ret == RDB_E_INVALID_ARGS, "OH_Predicates_NotLike is fail.");
35 napi_value result;
36 napi_create_int32(env, 0, &result);
37 return result;
38 }
39
OH_Rdb_Predicates_Glob0100(napi_env env,napi_callback_info)40 static napi_value OH_Rdb_Predicates_Glob0100(napi_env env, napi_callback_info)
41 {
42 const char *data5Value = "aBCD*";
43 auto ret = OH_Predicates_Glob(nullptr, "data5", data5Value);
44 NAPI_ASSERT(env, ret == RDB_E_INVALID_ARGS, "OH_Predicates_Glob is fail.");
45 napi_value result;
46 napi_create_int32(env, 0, &result);
47 return result;
48 }
49
OH_Rdb_Predicates_NotGlob0100(napi_env env,napi_callback_info)50 static napi_value OH_Rdb_Predicates_NotGlob0100(napi_env env, napi_callback_info)
51 {
52 const char *data5Value = "aBCD*";
53 auto ret = OH_Predicates_NotGlob(nullptr, "data5", data5Value);
54 NAPI_ASSERT(env, ret == RDB_E_INVALID_ARGS, "OH_Predicates_NotGlob is fail.");
55 napi_value result;
56 napi_create_int32(env, 0, &result);
57 return result;
58 }
59
OH_Rdb_Predicates_Having0100(napi_env env,napi_callback_info)60 static napi_value OH_Rdb_Predicates_Having0100(napi_env env, napi_callback_info)
61 {
62 auto ret = OH_Predicates_Having(nullptr, "data5", nullptr);
63 NAPI_ASSERT(env, ret == RDB_E_INVALID_ARGS, "OH_Predicates_Having is fail.");
64 napi_value result;
65 napi_create_int32(env, 0, &result);
66 return result;
67 }
68
69
OH_Rdb_SetCryptoParam0100(napi_env env,napi_callback_info)70 static napi_value OH_Rdb_SetCryptoParam0100(napi_env env, napi_callback_info)
71 {
72 OH_Rdb_ConfigV2 *confg = OH_Rdb_CreateConfig();
73 NAPI_ASSERT(env, confg != nullptr, "OH_Predicates_Having is fail.");
74
75 OH_Rdb_CryptoParam *crypto = OH_Rdb_CreateCryptoParam();
76 NAPI_ASSERT(env, crypto != NULL, "OH_Predicates_Having is fail.");
77
78 auto ret = OH_Rdb_SetCryptoParam(nullptr, crypto);
79 NAPI_ASSERT(env, ret == RDB_E_INVALID_ARGS, "OH_Predicates_Having is fail.");
80 napi_value result;
81 napi_create_int32(env, 0, &result);
82 return result;
83 }
84
OH_Rdb_InsertWithConflictResolution0100(napi_env env,napi_callback_info)85 static napi_value OH_Rdb_InsertWithConflictResolution0100(napi_env env, napi_callback_info)
86 {
87 OH_Rdb_Store *store = storeTestRdbStore_;
88 OH_VBucket *valueBucket = OH_Rdb_CreateValuesBucket();
89 valueBucket->putInt64(valueBucket, "id", 2);
90 valueBucket->putText(valueBucket, "data1", "liSi");
91 valueBucket->putInt64(valueBucket, "data2", 13800);
92 valueBucket->putReal(valueBucket, "data3", 200.1);
93 valueBucket->putText(valueBucket, "data5", "ABCDEFGH");
94 int64_t rowId = 0;
95 int errCode = OH_Rdb_InsertWithConflictResolution(nullptr, "store_test", valueBucket, RDB_CONFLICT_ROLLBACK, &rowId);
96 NAPI_ASSERT(env, errCode == RDB_E_INVALID_ARGS, "OH_Rdb_InsertWithConflictResolution is fail.");
97 napi_value result;
98 napi_create_int32(env, 0, &result);
99 return result;
100 }
101
OH_Rdb_UpdateWithConflictResolution0100(napi_env env,napi_callback_info)102 static napi_value OH_Rdb_UpdateWithConflictResolution0100(napi_env env, napi_callback_info)
103 {
104 OH_Rdb_Store *store = storeTestRdbStore_;
105 OH_Predicates *predicates = OH_Rdb_CreatePredicates("store_test");
106 NAPI_ASSERT(env, predicates != NULL, "OH_Rdb_CreatePredicates is fail.");
107
108 OH_VObject *valueObject = OH_Rdb_CreateValueObject();
109 NAPI_ASSERT(env, valueObject != NULL, "OH_Rdb_CreateValueObject is fail.");
110 const char *data1Value = "zhangSan";
111 valueObject->putText(valueObject, data1Value);
112 predicates->equalTo(predicates, "data1", valueObject);
113 OH_VBucket *valueBucket = OH_Rdb_CreateValuesBucket();
114 NAPI_ASSERT(env, valueBucket != NULL, "OH_Rdb_CreateValueObject is fail.");
115 valueBucket->putText(valueBucket, "data1", "liSi");
116 valueBucket->putInt64(valueBucket, "data2", 13800);
117 valueBucket->putReal(valueBucket, "data3", 200.1);
118 valueBucket->putNull(valueBucket, "data5");
119
120 int64_t chgs = 0;
121 int errCode = OH_Rdb_UpdateWithConflictResolution(nullptr, valueBucket, predicates, RDB_CONFLICT_ROLLBACK, &chgs);
122 NAPI_ASSERT(env, errCode == RDB_E_INVALID_ARGS, "OH_Rdb_CreateValueObject is fail.");
123 napi_value result;
124 napi_create_int32(env, 0, &result);
125 return result;
126 }
OH_Rdb_Attach0100(napi_env env,napi_callback_info)127 static napi_value OH_Rdb_Attach0100(napi_env env, napi_callback_info)
128 {
129 size_t attachedNumber = 0;
130 auto ret = OH_Rdb_Attach(nullptr, nullptr,"rdb_attach_test", 3, &attachedNumber);
131 NAPI_ASSERT(env, ret == RDB_E_INVALID_ARGS, "OH_Rdb_Detach is fail.");
132 napi_value result;
133 napi_create_int32(env, 0, &result);
134 return result;
135 }
OH_Rdb_Detach0100(napi_env env,napi_callback_info)136 static napi_value OH_Rdb_Detach0100(napi_env env, napi_callback_info)
137 {
138 size_t attachedNumber = 0;
139 auto ret = OH_Rdb_Detach(nullptr, "rdb_attach_test", 3, &attachedNumber);;
140 NAPI_ASSERT(env, ret == RDB_E_INVALID_ARGS, "OH_Rdb_CreateValueObject is fail.");
141 napi_value result;
142 napi_create_int32(env, 0, &result);
143 return result;
144 }
145
OH_Rdb_Setlocale0100(napi_env env,napi_callback_info)146 static napi_value OH_Rdb_Setlocale0100(napi_env env, napi_callback_info)
147 {
148 int errCode = OH_Rdb_SetLocale(nullptr, "zh");
149 NAPI_ASSERT(env, errCode == RDB_E_INVALID_ARGS, "OH_Rdb_CreateValueObject is fail.");
150 napi_value result;
151 napi_create_int32(env, 0, &result);
152 return result;
153 }
154
155
156 EXTERN_C_START
Init(napi_env env,napi_value exports)157 static napi_value Init(napi_env env, napi_value exports)
158 {
159 napi_property_descriptor desc[] = {
160 { "OH_Rdb_Predicates_NotLike0100", nullptr, OH_Rdb_Predicates_NotLike0100, nullptr, nullptr, nullptr, napi_default, nullptr },
161 { "OH_Rdb_Predicates_Glob0100", nullptr, OH_Rdb_Predicates_Glob0100, nullptr, nullptr, nullptr, napi_default, nullptr },
162 { "OH_Rdb_Predicates_NotGlob0100", nullptr, OH_Rdb_Predicates_NotGlob0100, nullptr, nullptr, nullptr, napi_default, nullptr },
163 { "OH_Rdb_Predicates_Having0100", nullptr, OH_Rdb_Predicates_Having0100, nullptr, nullptr, nullptr, napi_default, nullptr },
164 { "OH_Rdb_SetCryptoParam0100", nullptr, OH_Rdb_SetCryptoParam0100, nullptr, nullptr, nullptr, napi_default, nullptr },
165 { "OH_Rdb_InsertWithConflictResolution0100", nullptr, OH_Rdb_InsertWithConflictResolution0100, nullptr, nullptr, nullptr, napi_default, nullptr },
166 { "OH_Rdb_UpdateWithConflictResolution0100", nullptr, OH_Rdb_UpdateWithConflictResolution0100, nullptr, nullptr, nullptr, napi_default, nullptr },
167 { "OH_Rdb_Attach0100", nullptr, OH_Rdb_Attach0100, nullptr, nullptr, nullptr, napi_default, nullptr },
168 { "OH_Rdb_Detach0100", nullptr, OH_Rdb_Detach0100, nullptr, nullptr, nullptr, napi_default, nullptr },
169 { "OH_Rdb_Setlocale0100", nullptr, OH_Rdb_Setlocale0100, nullptr, nullptr, nullptr, napi_default, nullptr },
170 };
171
172 napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
173 return exports;
174 }
175 EXTERN_C_END
176
177 static napi_module demoModule = {
178 .nm_version = 1,
179 .nm_flags = 0,
180 .nm_filename = nullptr,
181 .nm_register_func = Init,
182 .nm_modname = "interfacetest",
183 .nm_priv = ((void*)0),
184 .reserved = { 0 },
185 };
186
RegisterEntryModule(void)187 extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
188 {
189 napi_module_register(&demoModule);
190 }
191
192