• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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