Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 17 additions & 26 deletions cpp/DBHostObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -241,18 +241,12 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
auto obj_params = args[0].asObject(rt);

std::string secondary_db_name =
jsi_string_to_utf8(rt,
obj_params.getProperty(rt, "secondaryDbFileName")
.asString(rt));
std::string alias =
jsi_string_to_utf8(rt,
obj_params.getProperty(rt, "alias").asString(rt));
obj_params.getProperty(rt, "secondaryDbFileName").asString(rt).utf8(rt);
std::string alias = obj_params.getProperty(rt, "alias").asString(rt).utf8(rt);

if (obj_params.hasProperty(rt, "location")) {
std::string location =
jsi_string_to_utf8(rt,
obj_params.getProperty(rt, "location")
.asString(rt));
obj_params.getProperty(rt, "location").asString(rt).utf8(rt);
secondary_db_path = secondary_db_path + location;
}

Expand Down Expand Up @@ -283,7 +277,7 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
throw std::runtime_error("[op-sqlite] alias must be a strings");
}

std::string alias = jsi_string_to_utf8(rt, args[0].asString(rt));
std::string alias = args[0].asString(rt).utf8(rt);
if (alias.find('\0') != std::string::npos) {
throw std::runtime_error(
"[op-sqlite] detach alias must not contain a zero byte");
Expand Down Expand Up @@ -372,7 +366,7 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
});

function_map["executeRaw"] = HFN(this) {
const std::string query = jsi_string_to_utf8(rt, args[0].asString(rt));
const std::string query = args[0].asString(rt).utf8(rt);
const std::vector<JSVariant> params = count == 2 && args[1].isObject()
? to_variant_vec(rt, args[1])
: std::vector<JSVariant>();
Expand All @@ -399,7 +393,7 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
});

function_map["executeSync"] = HFN(this) {
std::string query = jsi_string_to_utf8(rt, args[0].asString(rt));
std::string query = args[0].asString(rt).utf8(rt);
std::vector<JSVariant> params;

if (count == 2) {
Expand All @@ -415,7 +409,7 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
});

function_map["executeRawSync"] = HFN(this) {
const std::string query = jsi_string_to_utf8(rt, args[0].asString(rt));
const std::string query = args[0].asString(rt).utf8(rt);
std::vector<JSVariant> params = count == 2 && args[1].isObject()
? to_variant_vec(rt, args[1])
: std::vector<JSVariant>();
Expand All @@ -432,7 +426,7 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
});

function_map["execute"] = HFN(this) {
const std::string query = jsi_string_to_utf8(rt, args[0].asString(rt));
const std::string query = args[0].asString(rt).utf8(rt);
std::vector<JSVariant> params = count == 2 && args[1].isObject()
? to_variant_vec(rt, args[1])
: std::vector<JSVariant>();
Expand All @@ -454,7 +448,7 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
});

function_map["executeWithHostObjects"] = HFN(this) {
const std::string query = jsi_string_to_utf8(rt, args[0].asString(rt));
const std::string query = args[0].asString(rt).utf8(rt);
std::vector<JSVariant> params = count == 2 && args[1].isObject()
? to_variant_vec(rt, args[1])
: std::vector<JSVariant>();
Expand Down Expand Up @@ -555,8 +549,7 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
"[op-sqlite][loadFile] Incorrect parameter count");
}

const std::string sqlFileName =
jsi_string_to_utf8(rt, args[0].asString(rt));
const std::string sqlFileName = args[0].asString(rt).utf8(rt);

return promisify(
rt, thread_pool,
Expand Down Expand Up @@ -617,10 +610,10 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
});

function_map["loadExtension"] = HFN(this) {
auto path = jsi_string_to_utf8(rt, args[0].asString(rt));
auto path = args[0].asString(rt).utf8(rt);
std::string entry_point;
if (count > 1 && args[1].isString()) {
entry_point = jsi_string_to_utf8(rt, args[1].asString(rt));
entry_point = args[1].asString(rt).utf8(rt);
}

opsqlite_load_extension(db, path, entry_point);
Expand All @@ -631,7 +624,7 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
auto query = args[0].asObject(rt);

const std::string query_str =
jsi_string_to_utf8(rt, query.getProperty(rt, "query").asString(rt));
query.getProperty(rt, "query").asString(rt).utf8(rt);
auto js_args = query.getProperty(rt, "arguments");
auto js_discriminators =
query.getProperty(rt, "fireOn").asObject(rt).asArray(rt);
Expand All @@ -648,10 +641,8 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
for (size_t i = 0; i < js_discriminators.length(rt); i++) {
auto js_discriminator =
js_discriminators.getValueAtIndex(rt, i).asObject(rt);
std::string table =
jsi_string_to_utf8(rt,
js_discriminator.getProperty(rt, "table")
.asString(rt));
std::string table =
js_discriminator.getProperty(rt, "table").asString(rt).utf8(rt);
std::vector<int> ids;
if (js_discriminator.hasProperty(rt, "ids")) {
auto js_ids =
Expand Down Expand Up @@ -687,7 +678,7 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
#endif

function_map["prepareStatement"] = HFN(this) {
auto query = jsi_string_to_utf8(rt, args[0].asString(rt));
auto query = args[0].asString(rt).utf8(rt);
#ifdef OP_SQLITE_USE_LIBSQL
libsql_stmt_t statement = opsqlite_libsql_prepare_statement(db, query);
#else
Expand All @@ -709,7 +700,7 @@ void DBHostObject::create_jsi_functions(jsi::Runtime &rt) {
"[op-sqlite][open] database location must be a string");
}

std::string last_path = jsi_string_to_utf8(rt, args[0].asString(rt));
std::string last_path = args[0].asString(rt).utf8(rt);

if (last_path == ":memory:") {
path = ":memory:";
Expand Down
36 changes: 11 additions & 25 deletions cpp/OPSqlite.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,22 +56,18 @@ void install(jsi::Runtime &rt,

auto open = HFN0 {
jsi::Object options = args[0].asObject(rt);
std::string name =
jsi_string_to_utf8(rt, options.getProperty(rt, "name").asString(rt));
std::string name = options.getProperty(rt, "name").asString(rt).utf8(rt);
std::string path = std::string(_base_path);
std::string location;
std::string encryption_key;

if (options.hasProperty(rt, "location")) {
location = jsi_string_to_utf8(
rt, options.getProperty(rt, "location").asString(rt));
location = options.getProperty(rt, "location").asString(rt).utf8(rt);
}

if (options.hasProperty(rt, "encryptionKey")) {
encryption_key =
jsi_string_to_utf8(rt,
options.getProperty(rt, "encryptionKey")
.asString(rt));
options.getProperty(rt, "encryptionKey").asString(rt).utf8(rt);
}

if (!location.empty()) {
Expand Down Expand Up @@ -126,12 +122,10 @@ void install(jsi::Runtime &rt,
auto open_remote = HFN(=) {
jsi::Object options = args[0].asObject(rt);

std::string url =
jsi_string_to_utf8(rt, options.getProperty(rt, "url").asString(rt));
std::string url = options.getProperty(rt, "url").asString(rt).utf8(rt);

std::string auth_token =
jsi_string_to_utf8(rt,
options.getProperty(rt, "authToken").asString(rt));
options.getProperty(rt, "authToken").asString(rt).utf8(rt);

#ifdef OP_SQLITE_USE_LIBSQL
std::shared_ptr<DBHostObject> db =
Expand All @@ -149,14 +143,11 @@ void install(jsi::Runtime &rt,

auto open_sync = HFN(=) {
jsi::Object options = args[0].asObject(rt);
std::string name =
jsi_string_to_utf8(rt, options.getProperty(rt, "name").asString(rt));
std::string name = options.getProperty(rt, "name").asString(rt).utf8(rt);
std::string path = std::string(_base_path);
std::string url =
jsi_string_to_utf8(rt, options.getProperty(rt, "url").asString(rt));
std::string url = options.getProperty(rt, "url").asString(rt).utf8(rt);
std::string auth_token =
jsi_string_to_utf8(rt,
options.getProperty(rt, "authToken").asString(rt));
options.getProperty(rt, "authToken").asString(rt).utf8(rt);

int sync_interval = 0;
if (options.hasProperty(rt, "libsqlSyncInterval")) {
Expand All @@ -172,23 +163,18 @@ void install(jsi::Runtime &rt,
std::string encryption_key;
if (options.hasProperty(rt, "encryptionKey")) {
encryption_key =
jsi_string_to_utf8(rt,
options.getProperty(rt, "encryptionKey")
.asString(rt));
options.getProperty(rt, "encryptionKey").asString(rt).utf8(rt);
}

std::string remote_encryption_key;
if (options.hasProperty(rt, "remoteEncryptionKey")) {
remote_encryption_key =
jsi_string_to_utf8(rt,
options.getProperty(rt, "remoteEncryptionKey")
.asString(rt));
options.getProperty(rt, "remoteEncryptionKey").asString(rt).utf8(rt);
}

std::string location;
if (options.hasProperty(rt, "location")) {
location = jsi_string_to_utf8(
rt, options.getProperty(rt, "location").asString(rt));
location = options.getProperty(rt, "location").asString(rt).utf8(rt);
}
if (!location.empty()) {
if (location == ":memory:") {
Expand Down
8 changes: 3 additions & 5 deletions cpp/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ inline JSVariant to_variant(jsi::Runtime &rt, const jsi::Value &value) {
return JSVariant(doubleVal);
}
} else if (value.isString()) {
std::string strVal = jsi_string_to_utf8(rt, value.asString(rt));
std::string strVal = value.asString(rt).utf8(rt);
return JSVariant(strVal);
} else if (value.isObject()) {
auto obj = value.asObject(rt);
Expand Down Expand Up @@ -145,8 +145,7 @@ std::vector<std::string> to_string_vec(jsi::Runtime &rt, jsi::Value const &xs) {
jsi::Array values = xs.asObject(rt).asArray(rt);
std::vector<std::string> res;
for (int ii = 0; ii < values.length(rt); ii++) {
std::string value =
jsi_string_to_utf8(rt, values.getValueAtIndex(rt, ii).asString(rt));
std::string value = values.getValueAtIndex(rt, ii).asString(rt).utf8(rt);
res.emplace_back(value);
}
return res;
Expand Down Expand Up @@ -267,8 +266,7 @@ void to_batch_arguments(jsi::Runtime &rt, jsi::Array const &tuples,
continue;
}

const std::string query =
jsi_string_to_utf8(rt, tuple.getValueAtIndex(rt, 0).asString(rt));
const std::string query = tuple.getValueAtIndex(rt, 0).asString(rt).utf8(rt);
if (length == 1) {
commands->push_back({query});
continue;
Expand Down
25 changes: 0 additions & 25 deletions cpp/utils.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,31 +19,6 @@ namespace opsqlite {
namespace jsi = facebook::jsi;
namespace react = facebook::react;

struct JSIStringDataAppender {
std::string *out;

void operator()(bool ascii, const void *data, size_t num) const {
if (ascii) {
out->append(static_cast<const char *>(data), num);
return;
}

const auto *u16 = static_cast<const char16_t *>(data);
out->reserve(out->size() + num);
for (size_t i = 0; i < num; i++) {
out->push_back(static_cast<char>(u16[i]));
}
}
};

inline std::string jsi_string_to_utf8(jsi::Runtime &rt,
const jsi::String &value) {
std::string result;
JSIStringDataAppender cb{&result};
value.getStringData(rt, cb);
return result;
}

jsi::Value to_jsi(jsi::Runtime &rt, const JSVariant &value);

JSVariant to_variant(jsi::Runtime &rt, jsi::Value const &value);
Expand Down
Loading
Loading