@coursebuilder/adapter-drizzle
Version:
Drizzle adapter for Course Builder.
25 lines (22 loc) • 1.36 kB
TypeScript
import { MySqlDatabase, MySqlTableFn, AnyMySqlTable } from 'drizzle-orm/mysql-core';
import { PgDatabase, PgTableFn } from 'drizzle-orm/pg-core';
import { BaseSQLiteDatabase, SQLiteTableFn, AnySQLiteTable } from 'drizzle-orm/sqlite-core';
import { DefaultSchema } from './mysql/index.js';
import 'drizzle-orm';
import '@auth/core/adapters';
import '@coursebuilder/core/adapters';
import '@coursebuilder/core/types';
type AnyMySqlDatabase = MySqlDatabase<any, any>;
type AnyPgDatabase = PgDatabase<any, any, any>;
type AnySQLiteDatabase = BaseSQLiteDatabase<any, any, any, any>;
interface MinimumSchema {
mysql: DefaultSchema & Record<string, AnyMySqlTable>;
}
type SqlFlavorOptions = AnyMySqlDatabase | AnyPgDatabase | AnySQLiteDatabase;
type ClientFlavors<Flavor> = Flavor extends AnyMySqlDatabase ? MinimumSchema['mysql'] : never;
type TableFn<Flavor> = Flavor extends AnyMySqlDatabase ? MySqlTableFn : Flavor extends AnyPgDatabase ? PgTableFn : Flavor extends AnySQLiteDatabase ? SQLiteTableFn : AnySQLiteTable;
type NonNullableProps<T> = {
[P in keyof T]: null extends T[P] ? never : P;
}[keyof T];
declare function stripUndefined<T>(obj: T): Pick<T, NonNullableProps<T>>;
export { type AnyMySqlDatabase, type AnyPgDatabase, type AnySQLiteDatabase, type ClientFlavors, type MinimumSchema, type SqlFlavorOptions, type TableFn, stripUndefined };