summaryrefslogtreecommitdiff
path: root/packages/db/src
diff options
context:
space:
mode:
authorGravatar Matthew Phillips <matthew@skypack.dev> 2024-05-21 17:12:39 -0400
committerGravatar GitHub <noreply@github.com> 2024-05-21 17:12:39 -0400
commite14ce5726df73e2988fe1a39e078ef2d66d2f4a8 (patch)
treec3ff9591130c35e4f8a9880f591279b50e8d3ef3 /packages/db/src
parentb78e83f448d142e83be592f6249c4822e7cd5726 (diff)
downloadastro-e14ce5726df73e2988fe1a39e078ef2d66d2f4a8.tar.gz
astro-e14ce5726df73e2988fe1a39e078ef2d66d2f4a8.tar.zst
astro-e14ce5726df73e2988fe1a39e078ef2d66d2f4a8.zip
Fix inconsistent results from raw SQL (#11091)
* Fix inconsistent results from raw SQL * Remove .only * Fix * Update packages/db/src/runtime/db-client.ts Co-authored-by: Ben Holmes <hey@bholmes.dev> --------- Co-authored-by: Ben Holmes <hey@bholmes.dev>
Diffstat (limited to 'packages/db/src')
-rw-r--r--packages/db/src/runtime/db-client.ts18
1 files changed, 17 insertions, 1 deletions
diff --git a/packages/db/src/runtime/db-client.ts b/packages/db/src/runtime/db-client.ts
index ecab7782d..3d62eba06 100644
--- a/packages/db/src/runtime/db-client.ts
+++ b/packages/db/src/runtime/db-client.ts
@@ -71,7 +71,23 @@ export function createRemoteDatabaseClient(appToken: string, remoteDbURL: string
});
}
- if (method === 'run') return remoteResult;
+ if (method === 'run') {
+ const rawRows = Array.from(remoteResult.rows);
+ // Implement basic `toJSON()` for Drizzle to serialize properly
+ (remoteResult as any).rows.toJSON = () => rawRows;
+ // Using `db.run()` drizzle massages the rows into an object.
+ // So in order to make dev/prod consistent, we need to do the same here.
+ // This creates an object and loops over each row replacing it with the object.
+ for(let i = 0; i < remoteResult.rows.length; i++) {
+ let row = remoteResult.rows[i];
+ let item: Record<string, any> = {};
+ remoteResult.columns.forEach((col, index) => {
+ item[col] = row[index];
+ });
+ (remoteResult as any).rows[i] = item;
+ }
+ return remoteResult;
+ }
// Drizzle expects each row as an array of its values
const rowValues: unknown[][] = [];