diff options
author | 2024-05-21 17:12:39 -0400 | |
---|---|---|
committer | 2024-05-21 17:12:39 -0400 | |
commit | e14ce5726df73e2988fe1a39e078ef2d66d2f4a8 (patch) | |
tree | c3ff9591130c35e4f8a9880f591279b50e8d3ef3 /packages/db/src | |
parent | b78e83f448d142e83be592f6249c4822e7cd5726 (diff) | |
download | astro-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.ts | 18 |
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[][] = []; |