MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / initDrizzleClient

Function initDrizzleClient

packages/core/fumadb/test/shared.ts:324–379  ·  view source on GitHub ↗
(
  factory: FumaDBFactory<Schemas>,
  version: Version,
  provider: Exclude<SQLProvider, "mssql" | "cockroachdb">,
)

Source from the content-addressed store, hash-verified

322}
323
324export async function initDrizzleClient<
325 Schemas extends AnySchema[],
326 Version extends Schemas[number]["version"],
327>(
328 factory: FumaDBFactory<Schemas>,
329 version: Version,
330 provider: Exclude<SQLProvider, "mssql" | "cockroachdb">,
331) {
332 const DrizzleAPI = await import("drizzle-kit/api");
333 const { drizzleAdapter } = await import("../src/adapters/drizzle");
334 const test = drizzleTests.find((t) => t.provider === provider)!;
335
336 const db = test.db({});
337
338 const schema = factory
339 .client(
340 drizzleAdapter({
341 db,
342 provider,
343 }),
344 )
345 .generateSchema(version);
346
347 schema.path = path.join(import.meta.dirname, `drizzle-schema.${provider}.ts`);
348 fs.writeFileSync(schema.path, schema.code);
349 const drizzleSchema = await import(`${schema.path}?hash=${Date.now()}`);
350
351 if (provider === "postgresql") {
352 const { apply } = await DrizzleAPI.pushSchema(drizzleSchema, db as any);
353 await apply();
354 } else if (provider === "mysql") {
355 const { sql } = await import("drizzle-orm");
356 const prev = await DrizzleAPI.generateMySQLDrizzleJson({});
357 const cur = await DrizzleAPI.generateMySQLDrizzleJson(drizzleSchema);
358 const statements = await DrizzleAPI.generateMySQLMigration(prev, cur);
359
360 for (const statement of statements) {
361 await (db as any).execute(sql.raw(statement));
362 }
363 } else {
364 // they need libsql
365 const { apply } = await DrizzleAPI.pushSQLiteSchema(
366 drizzleSchema,
367 db as any,
368 );
369 await apply();
370 }
371
372 fs.rmSync(schema.path);
373 return factory.client(
374 drizzleAdapter({
375 db: test.db(drizzleSchema),
376 provider,
377 }),
378 );
379}
380
381export const cleanupFiles = () => {

Callers 2

query.test.tsFile · 0.90
relations.test.tsFile · 0.90

Calls 3

drizzleAdapterFunction · 0.85
executeMethod · 0.65
applyFunction · 0.50

Tested by

no test coverage detected