AK-21/Graphite-Industrial-Intelligence
0
1import { entityKind } from "../entity.js";2import { DefaultLogger } from "../logger.js";3import {4 createTableRelationsHelpers,5 extractTablesRelationalConfig6} from "../relations.js";7import { BaseSQLiteDatabase } from "../sqlite-core/db.js";8import { SQLiteAsyncDialect } from "../sqlite-core/dialect.js";9import { SQLiteD1Session } from "./session.js";10class DrizzleD1Database extends BaseSQLiteDatabase {11 static [entityKind] = "D1Database";12 async batch(batch) {13 return this.session.batch(batch);14 }15}16function drizzle(client, config = {}) {17 const dialect = new SQLiteAsyncDialect({ casing: config.casing });18 let logger;19 if (config.logger === true) {20 logger = new DefaultLogger();21 } else if (config.logger !== false) {22 logger = config.logger;23 }24 let schema;25 if (config.schema) {26 const tablesConfig = extractTablesRelationalConfig(27 config.schema,28 createTableRelationsHelpers29 );30 schema = {31 fullSchema: config.schema,32 schema: tablesConfig.tables,33 tableNamesMap: tablesConfig.tableNamesMap34 };35 }36 const session = new SQLiteD1Session(client, dialect, schema, { logger, cache: config.cache });37 const db = new DrizzleD1Database("async", dialect, session, schema);38 db.$client = client;39 db.$cache = config.cache;40 if (db.$cache) {41 db.$cache["invalidate"] = config.cache?.onMutate;42 }43 return db;44}45export {46 DrizzleD1Database,47 drizzle48};49//# sourceMappingURL=driver.js.map