Skip to content

Commit

Permalink
Formatting.
Browse files Browse the repository at this point in the history
  • Loading branch information
Chriztiaan committed Nov 6, 2024
1 parent 95dd89e commit c5cc5ed
Showing 1 changed file with 36 additions and 33 deletions.
69 changes: 36 additions & 33 deletions cpp/JSIHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,41 +148,44 @@ jsi::Value createSequelQueryExecutionResult(jsi::Runtime &rt, SQLiteOPResult sta
auto array = jsi::Array(rt, rowCount);
for (int i = 0; i < rowCount; i++)
{
jsi::Object rowObject = jsi::Object(rt);
auto row = results -> at(i);
// Iterate over metadata to maintain column order
for (const auto &column: * metadata)
jsi::Object rowObject = jsi::Object(rt);
auto row = results -> at(i);
// Iterate over metadata to maintain column order
for (const auto &column: * metadata)
{
std::string columnName = column.colunmName;
auto it = row.find(columnName);
if (it != row.end())
{
QuickValue value = it -> second;
if (value.dataType == TEXT)
{
// using value.textValue (std::string) directly allows jsi::String to use length property of std::string (allowing strings with NULLs in them like SQLite does)
rowObject.setProperty(rt, columnName.c_str(), jsi::String::createFromUtf8(rt, value.textValue));
} else if (value.dataType == INTEGER)
{
rowObject.setProperty(rt, columnName.c_str(), jsi::Value(value.doubleOrIntValue));
} else if (value.dataType == DOUBLE)
{
rowObject.setProperty(rt, columnName.c_str(), jsi::Value(value.doubleOrIntValue));
} else if (value.dataType == ARRAY_BUFFER)
{
jsi::Function array_buffer_ctor = rt.global().getPropertyAsFunction(rt, "ArrayBuffer");
jsi::Object o = array_buffer_ctor.callAsConstructor(rt, (int) value.arrayBufferSize).getObject(rt);
jsi::ArrayBuffer buf = o.getArrayBuffer(rt);
// It's a shame we have to copy here: see https://github.com/facebook/hermes/pull/419 and https://github.com/facebook/hermes/issues/564.
memcpy(buf.data(rt), value.arrayBufferValue.get(), value.arrayBufferSize);
rowObject.setProperty(rt, columnName.c_str(), o);
} else
{
rowObject.setProperty(rt, columnName.c_str(), jsi::Value(nullptr));
}
} else
{
std::string columnName = column.colunmName;
auto it = row.find(columnName);
if (it != row.end())
{
QuickValue value = it -> second;
if (value.dataType == TEXT)
{
// using value.textValue (std::string) directly allows jsi::String to use length property of std::string (allowing strings with NULLs in them like SQLite does)
rowObject.setProperty(rt, columnName.c_str(), jsi::String::createFromUtf8(rt, value.textValue));
} else if (value.dataType == INTEGER || value.dataType == DOUBLE)
{
rowObject.setProperty(rt, columnName.c_str(), jsi::Value(value.doubleOrIntValue));
} else if (value.dataType == ARRAY_BUFFER)
{
jsi::Function array_buffer_ctor = rt.global().getPropertyAsFunction(rt, "ArrayBuffer");
jsi::Object o = array_buffer_ctor.callAsConstructor(rt, (int) value.arrayBufferSize).getObject(rt);
jsi::ArrayBuffer buf = o.getArrayBuffer(rt);
// It's a shame we have to copy here: see https://github.com/facebook/hermes/pull/419 and https://github.com/facebook/hermes/issues/564.
memcpy(buf.data(rt), value.arrayBufferValue.get(), value.arrayBufferSize);
rowObject.setProperty(rt, columnName.c_str(), o);
} else
{
rowObject.setProperty(rt, columnName.c_str(), jsi::Value(nullptr));
}
} else
{
rowObject.setProperty(rt, columnName.c_str(), jsi::Value(nullptr));
}
rowObject.setProperty(rt, columnName.c_str(), jsi::Value(nullptr));
}
array.setValueAtIndex(rt, i, move(rowObject));
}
array.setValueAtIndex(rt, i, move(rowObject));
}
rows.setProperty(rt, "_array", move(array));
res.setProperty(rt, "rows", move(rows));
Expand Down

0 comments on commit c5cc5ed

Please sign in to comment.