CoolFace
Apppublic

AK-21/Graphite-Industrial-Intelligence

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
driver.js77 linesDownload Raw Back to vercel-postgres
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