@minimaltech/node-infra
Version:
Minimal Technology NodeJS Infrastructure - Loopback 4 Framework
75 lines • 3.29 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.QueryBuilderHelper = void 0;
const base_helper_1 = require("../../base/base.helper");
const utilities_1 = require("../../utilities");
const knex_1 = __importDefault(require("knex"));
class QueryBuilderHelper extends base_helper_1.BaseHelper {
constructor(opts) {
super({ scope: QueryBuilderHelper.name, identifier: QueryBuilderHelper.name });
this.clients = new Map();
const { clientType } = opts;
this.clients.set(clientType, (0, knex_1.default)({ client: clientType }));
}
static getInstance(opts) {
if (!this.instance) {
this.instance = new QueryBuilderHelper(opts);
}
return this.instance;
}
// ----------------------------------------------------------------------------------------------------
getQueryBuilder(opts) {
const { clientType } = opts;
if (!this.clients.has(clientType)) {
throw (0, utilities_1.getError)({
message: `[getQueryBuilder] Please init ${clientType} query builder before using!`,
});
}
const queryClient = this.clients.get(clientType);
if (!queryClient) {
throw (0, utilities_1.getError)({
message: '[getQueryBuilder] Failed to get query builder instance!',
});
}
return queryClient.queryBuilder();
}
getUpdateBuilder(opts) {
const { clientType, tableName, schema } = opts;
if (!this.clients.has(clientType)) {
throw (0, utilities_1.getError)({
message: `[getQueryBuilder] Please init ${clientType} query builder before using!`,
});
}
const queryClient = this.clients.get(clientType);
if (!queryClient) {
throw (0, utilities_1.getError)({
message: '[getQueryBuilder] Failed to get query builder instance!',
});
}
return queryClient(tableName).withSchema(schema);
}
// ----------------------------------------------------------------------------------------------------
static getPostgresQueryBuilder() {
const clientType = 'pg';
const ins = QueryBuilderHelper.getInstance({ clientType });
return ins.getQueryBuilder({ clientType });
}
// ----------------------------------------------------------------------------------------------------
static getPostgresUpdateBuilder(opts) {
const { tableName, schema = 'public' } = opts;
const clientType = 'pg';
const ins = QueryBuilderHelper.getInstance({ clientType });
return ins.getUpdateBuilder({ clientType, tableName, schema });
}
// ----------------------------------------------------------------------------------------------------
static getMySQLQueryBuilder() {
const clientType = 'mysql';
const ins = QueryBuilderHelper.getInstance({ clientType });
return ins.getQueryBuilder({ clientType });
}
}
exports.QueryBuilderHelper = QueryBuilderHelper;
//# sourceMappingURL=query-builder.helper.js.map