@prisma-extensions/core
Version:
A collection of core helpers for @prisma-extensions/* packages.
52 lines (51 loc) • 1.65 kB
JavaScript
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');
}
}