UNPKG

@minimaltech/node-infra

Version:

Minimal Technology NodeJS Infrastructure - Loopback 4 Framework

75 lines 3.29 kB
"use strict"; 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