CoolFace
Apppublic

AK-21/Graphite-Industrial-Intelligence

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
driver.js88 linesDownload Raw Back to pglite
1import { PGlite } from "@electric-sql/pglite";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 { PgliteSession } from "./session.js";12class PgliteDriver {13  constructor(client, dialect, options = {}) {14    this.client = client;15    this.dialect = dialect;16    this.options = options;17  }18  static [entityKind] = "PgliteDriver";19  createSession(schema) {20    return new PgliteSession(this.client, this.dialect, schema, {21      logger: this.options.logger,22      cache: this.options.cache23    });24  }25}26class PgliteDatabase extends PgDatabase {27  static [entityKind] = "PgliteDatabase";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 PgliteDriver(client, dialect, { logger, cache: config.cache });50  const session = driver.createSession(schema);51  const db = new PgliteDatabase(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 (params[0] === void 0 || typeof params[0] === "string") {61    const instance = new PGlite(params[0]);62    return construct(instance, params[1]);63  }64  if (isConfig(params[0])) {65    const { connection, client, ...drizzleConfig } = params[0];66    if (client) return construct(client, drizzleConfig);67    if (typeof connection === "object") {68      const { dataDir, ...options } = connection;69      const instance2 = new PGlite(dataDir, options);70      return construct(instance2, drizzleConfig);71    }72    const instance = new PGlite(connection);73    return construct(instance, drizzleConfig);74  }75  return construct(params[0], params[1]);76}77((drizzle2) => {78  function mock(config) {79    return construct({}, config);80  }81  drizzle2.mock = mock;82})(drizzle || (drizzle = {}));83export {84  PgliteDatabase,85  PgliteDriver,86  drizzle87};88//# sourceMappingURL=driver.js.map