0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2025-02-24 22:46:02 -05:00

chore: remove db.batch() for now

This commit is contained in:
bholmesdev 2024-02-29 18:10:38 -05:00
parent 21ef62cd35
commit a3fcfdced8

View file

@ -3,7 +3,6 @@ import { createClient } from '@libsql/client';
import type { LibSQLDatabase } from 'drizzle-orm/libsql';
import { drizzle as drizzleLibsql } from 'drizzle-orm/libsql';
import { drizzle as drizzleProxy } from 'drizzle-orm/sqlite-proxy';
import { AsyncLocalStorage } from 'node:async_hooks';
import { z } from 'zod';
const isWebContainer = !!process.versions?.webcontainer;
@ -77,64 +76,8 @@ export function createRemoteDatabaseClient(appToken: string, remoteDbURL: string
return { rows: rowValues };
});
const batchContext = new AsyncLocalStorage<{ queries: InStatement[] }>();
(db as any).batch = (drizzleQueries: Array<Promise<unknown>>) => {
return batchContext.run({ queries: [] }, async () => {
await Promise.all(drizzleQueries);
const { queries } = batchContext.getStore()!;
const res = await fetch(url, {
method: 'POST',
headers: {
Authorization: `Bearer ${appToken}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(queries),
});
if (!res.ok) {
throw new Error(
`Failed to execute batch queries.\nFull error: ${res.status} ${await res.text()}}`
);
}
const queryResultSchema = z.array(
z.object({
columns: z.array(z.string()),
columnTypes: z.array(z.string()),
rows: z.array(z.array(z.unknown())),
rowsAffected: z.number(),
lastInsertRowid: z.unknown().optional(),
})
);
try {
const json = await res.json();
const rawResults = queryResultSchema.parse(json);
let results: unknown[] = [];
for (const rawResult of rawResults) {
const ignoreReturning = rawResult.rows.length === 0 && rawResult.rowsAffected > 0;
if (ignoreReturning) {
results.push(rawResult);
continue;
}
const rows = rawResult.rows.map((row) => {
let obj: Record<string, unknown> = {};
for (const [idx, column] of rawResult.columns.entries()) {
obj[column] = row[idx];
}
return obj;
});
results.push(rows);
}
return results;
} catch (e) {
throw new Error(
`Failed to execute batch queries.\nFull error: Unexpected JSON response. ${
e instanceof Error ? e.message : String(e)
}`
);
}
});
(db as any).batch = (_drizzleQueries: Array<Promise<unknown>>) => {
throw new Error('db.batch() is not currently supported.');
};
return db;
}