CoolFace
Apppublic

AK-21/Graphite-Industrial-Intelligence

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
driver.js114 linesDownload Raw Back to singlestore
1import { createPool } from "mysql2";2import { entityKind } from "../entity.js";3import { DefaultLogger } from "../logger.js";4import {5  createTableRelationsHelpers,6  extractTablesRelationalConfig7} from "../relations.js";8import { SingleStoreDatabase } from "../singlestore-core/db.js";9import { SingleStoreDialect } from "../singlestore-core/dialect.js";10import { isConfig } from "../utils.js";11import { npmVersion } from "../version.js";12import { SingleStoreDriverSession } from "./session.js";13class SingleStoreDriverDriver {14  constructor(client, dialect, options = {}) {15    this.client = client;16    this.dialect = dialect;17    this.options = options;18  }19  static [entityKind] = "SingleStoreDriverDriver";20  createSession(schema) {21    return new SingleStoreDriverSession(this.client, this.dialect, schema, {22      logger: this.options.logger,23      cache: this.options.cache24    });25  }26}27import { SingleStoreDatabase as SingleStoreDatabase2 } from "../singlestore-core/db.js";28class SingleStoreDriverDatabase extends SingleStoreDatabase {29  static [entityKind] = "SingleStoreDriverDatabase";30}31function construct(client, config = {}) {32  const dialect = new SingleStoreDialect({ casing: config.casing });33  let logger;34  if (config.logger === true) {35    logger = new DefaultLogger();36  } else if (config.logger !== false) {37    logger = config.logger;38  }39  const clientForInstance = isCallbackClient(client) ? client.promise() : client;40  let schema;41  if (config.schema) {42    const tablesConfig = extractTablesRelationalConfig(43      config.schema,44      createTableRelationsHelpers45    );46    schema = {47      fullSchema: config.schema,48      schema: tablesConfig.tables,49      tableNamesMap: tablesConfig.tableNamesMap50    };51  }52  const driver = new SingleStoreDriverDriver(clientForInstance, dialect, {53    logger,54    cache: config.cache55  });56  const session = driver.createSession(schema);57  const db = new SingleStoreDriverDatabase(dialect, session, schema);58  db.$client = client;59  db.$cache = config.cache;60  if (db.$cache) {61    db.$cache["invalidate"] = config.cache?.onMutate;62  }63  return db;64}65function isCallbackClient(client) {66  return typeof client.promise === "function";67}68const CONNECTION_ATTRS = {69  _connector_name: "SingleStore Drizzle ORM Driver",70  _connector_version: npmVersion71};72function drizzle(...params) {73  if (typeof params[0] === "string") {74    const connectionString = params[0];75    const instance = createPool({76      uri: connectionString,77      connectAttributes: CONNECTION_ATTRS78    });79    return construct(instance, params[1]);80  }81  if (isConfig(params[0])) {82    const { connection, client, ...drizzleConfig } = params[0];83    if (client) return construct(client, drizzleConfig);84    let opts = {};85    opts = typeof connection === "string" ? {86      uri: connection,87      supportBigNumbers: true,88      connectAttributes: CONNECTION_ATTRS89    } : {90      ...connection,91      connectAttributes: {92        ...connection.connectAttributes,93        ...CONNECTION_ATTRS94      }95    };96    const instance = createPool(opts);97    const db = construct(instance, drizzleConfig);98    return db;99  }100  return construct(params[0], params[1]);101}102((drizzle2) => {103  function mock(config) {104    return construct({}, config);105  }106  drizzle2.mock = mock;107})(drizzle || (drizzle = {}));108export {109  SingleStoreDatabase2 as SingleStoreDatabase,110  SingleStoreDriverDatabase,111  SingleStoreDriverDriver,112  drizzle113};114//# sourceMappingURL=driver.js.map