Page MenuHomePhabricator

D7118.diff
No OneTemporary

D7118.diff

diff --git a/web/database/utils/db-utils.js b/web/database/utils/db-utils.js
new file mode 100644
--- /dev/null
+++ b/web/database/utils/db-utils.js
@@ -0,0 +1,27 @@
+// @flow
+
+import type { QueryExecResult } from 'sql.js';
+
+function parseSQLiteQueryResult<T>(result: QueryExecResult): T[] {
+ const { columns, values } = result;
+ return values.map(rowResult => {
+ const row: any = Object.fromEntries(
+ columns.map((key, index) => [key, rowResult[index]]),
+ );
+ return row;
+ });
+}
+
+// NOTE: sql.js has behavior that when there are multiple statements in query
+// e.g. "statement1; statement2; statement3;"
+// and statement2 will not return anything, the result will be:
+// [result1, result3], not [result1, undefined, result3]
+function parseMultiStatementSQLiteResult<T: Object>(
+ rawResult: $ReadOnlyArray<QueryExecResult>,
+): T[][] {
+ return rawResult.map((queryResult: QueryExecResult) =>
+ parseSQLiteQueryResult<T>(queryResult),
+ );
+}
+
+export { parseMultiStatementSQLiteResult };

File Metadata

Mime Type
text/plain
Expires
Wed, Nov 27, 10:59 PM (21 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2592001
Default Alt Text
D7118.diff (1 KB)

Event Timeline