UNPKG

@prisma-extensions/core

Version:

A collection of core helpers for @prisma-extensions/* packages.

52 lines (51 loc) 1.65 kB
import { Prisma } from '@prisma/client'; export class Connector { _client; requiredProvider = '$generic'; constructor(client, requiredProvider = '$generic') { this.setClient(client, requiredProvider); } setClient(client, requiredProvider) { const decoratedClient = client; if (requiredProvider) this.requiredProvider = requiredProvider; if (!this.isValidClientConnector(decoratedClient)) { throw new Error(`Invalid client provider. Prisma Client: \`${decoratedClient._activeProvider}\` - Required: \`${this.requiredProvider}\``); } this._client = decoratedClient; return this; } get client() { return this._client; } get provider() { return this.requiredProvider; } get activeProvider() { return this._client._activeProvider === 'postgresql' ? 'postgres' : this._client._activeProvider; } get models() { return Prisma.dmmf.datamodel.models.map((model) => model.dbName || model.name); } isValidClientConnector(client) { if (this.provider === '$generic') return true; return (this.requiredProvider === (client._activeProvider === 'postgresql' ? 'postgres' : client._activeProvider)); } } export class MySQLConnector extends Connector { constructor(client) { super(client, 'mysql'); } } export class PostgresConnector extends Connector { constructor(client) { super(client, 'postgres'); } } export class SQLiteConnector extends Connector { constructor(client) { super(client, 'sqlite'); } }