AK-21/Graphite-Industrial-Intelligence
0
1import { SQL } from "bun";2import { entityKind } from "../entity.js";3import { DefaultLogger } from "../logger.js";4import { PgDatabase } from "../pg-core/db.js";5import { PgDialect } from "../pg-core/dialect.js";6import {7 createTableRelationsHelpers,8 extractTablesRelationalConfig9} from "../relations.js";10import { isConfig } from "../utils.js";11import { BunSQLSession } from "./session.js";12class BunSQLDatabase extends PgDatabase {13 static [entityKind] = "BunSQLDatabase";14}15function construct(client, config = {}) {16 const dialect = new PgDialect({ casing: config.casing });17 let logger;18 if (config.logger === true) {19 logger = new DefaultLogger();20 } else if (config.logger !== false) {21 logger = config.logger;22 }23 let schema;24 if (config.schema) {25 const tablesConfig = extractTablesRelationalConfig(26 config.schema,27 createTableRelationsHelpers28 );29 schema = {30 fullSchema: config.schema,31 schema: tablesConfig.tables,32 tableNamesMap: tablesConfig.tableNamesMap33 };34 }35 const session = new BunSQLSession(client, dialect, schema, { logger, cache: config.cache });36 const db = new BunSQLDatabase(dialect, session, schema);37 db.$client = client;38 db.$cache = config.cache;39 if (db.$cache) {40 db.$cache["invalidate"] = config.cache?.onMutate;41 }42 return db;43}44function drizzle(...params) {45 if (typeof params[0] === "string") {46 const instance = new SQL(params[0]);47 return construct(instance, params[1]);48 }49 if (isConfig(params[0])) {50 const { connection, client, ...drizzleConfig } = params[0];51 if (client) return construct(client, drizzleConfig);52 if (typeof connection === "object" && connection.url !== void 0) {53 const { url, ...config } = connection;54 const instance2 = new SQL({ url, ...config });55 return construct(instance2, drizzleConfig);56 }57 const instance = new SQL(connection);58 return construct(instance, drizzleConfig);59 }60 return construct(params[0], params[1]);61}62((drizzle2) => {63 function mock(config) {64 return construct({65 options: {66 parsers: {},67 serializers: {}68 }69 }, config);70 }71 drizzle2.mock = mock;72})(drizzle || (drizzle = {}));73export {74 BunSQLDatabase,75 drizzle76};77//# sourceMappingURL=driver.js.map