Skip to content
File

Blob: src/worker/db/d1/client.ts

typescript18 lines
1import { drizzle, type DrizzleD1Database } from "drizzle-orm/d1";
2 
3import * as schema from "@/worker/db/d1/schema";
4 
5export type D1Executor = D1Database | D1DatabaseSession;
6export type D1Db<TClient extends D1Executor = D1Executor> = DrizzleD1Database<typeof schema> & { $client: TClient };
7 
8export function createD1Db(executor: D1Database): D1Db<D1Database>;
9export function createD1Db(executor: D1DatabaseSession): D1Db<D1DatabaseSession>;
10export function createD1Db(executor: D1Executor): D1Db {
11 if ("withSession" in executor) {
12 return drizzle(executor, { schema });
13 }
14 
15 return drizzle(executor, { schema });
16}
17export type D1DbExecutor = D1Db;