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