-
-
Notifications
You must be signed in to change notification settings - Fork 43
Expand file tree
/
Copy pathHybridNitroSQLiteQueryResult.cpp
More file actions
49 lines (39 loc) · 1.43 KB
/
HybridNitroSQLiteQueryResult.cpp
File metadata and controls
49 lines (39 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "HybridNitroSQLiteQueryResult.hpp"
#include <NitroModules/ArrayBuffer.hpp>
#include <NitroModules/Null.hpp>
#include <NitroModules/Promise.hpp>
#include <unordered_map>
#include <variant>
#include <vector>
namespace margelo::nitro::rnnitrosqlite {
std::optional<double> HybridNitroSQLiteQueryResult::getInsertId() {
return _result.insertId;
}
double HybridNitroSQLiteQueryResult::getRowsAffected() {
return _result.rowsAffected;
}
SQLiteQueryResults HybridNitroSQLiteQueryResult::getResults() {
return _result.results;
};
std::optional<NitroSQLiteQueryResultRows> HybridNitroSQLiteQueryResult::getRows() {
if (_result.results.empty()) {
return std::nullopt;
}
auto rows = _result.results;
// Create the item function that returns a Promise
auto itemFunction = [rows](double idx) -> std::shared_ptr<Promise<std::optional<SQLiteQueryResultRow>>> {
return Promise<std::optional<SQLiteQueryResultRow>>::async([rows, idx]() -> std::optional<SQLiteQueryResultRow> {
const auto index = static_cast<size_t>(idx);
if (index >= rows.size()) {
return std::nullopt;
}
return rows[index];
});
};
const auto length = static_cast<double>(rows.size());
return NitroSQLiteQueryResultRows(std::move(rows), length, itemFunction);
}
std::optional<SQLiteQueryTableMetadata> HybridNitroSQLiteQueryResult::getMetadata() {
return _result.metadata;
}
} // namespace margelo::nitro::rnnitrosqlite