UNPKG

will-core

Version:
76 lines (75 loc) 3.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProgramHandler = void 0; const will_db_1 = require("will-db"); const will_api_1 = require("will-api"); const VerifyError_1 = require("../models/VerifyError"); const will_sql_1 = require("will-sql"); const SchemeHandler_1 = require("./SchemeHandler"); class ProgramHandler extends SchemeHandler_1.SchemeHandler { constructor() { super(...arguments); this.model = { name: "tprog", alias: { privateAlias: this.section } }; this.handlers = [{ name: "get" }]; } async doGet(context, model) { return this.doRetrieve(context, model); } async doRetrieve(context, model) { let vi = this.validateParameters(context.params, "program"); if (!vi.valid) { return Promise.reject(new VerifyError_1.VerifyError("Parameter not found (" + vi.info + ")", will_api_1.HTTP.NOT_ACCEPTABLE, -16061)); } let db = this.getPrivateConnector(model); try { let rs = await this.performRetrieving(context, db); return await this.createCipherData(context, will_db_1.Operation.RETRIEVE, rs); } catch (ex) { this.logger.error(this.constructor.name, ex); return Promise.reject(this.getDBError(ex)); } finally { if (db) db.close(); } } async performRetrieving(context, db) { let knsql = new will_sql_1.KnSQL(); knsql.append("select tprog.programid,tprog.progname,tprog.prognameth,tprog.iconfile,"); knsql.append("tprog.shortname,tprog.parameters,tprog.progpath,tprog.progtype,"); knsql.append("tprog.progsystem,tprog.shortname,tprog.shortnameth,"); knsql.append("tprod.url,tprod.verified,tprod.centerflag,tprod.startdate,"); knsql.append("tprod.serialid,tprod.nameen,tprod.nameth "); knsql.append("from tprog "); knsql.append("left join tprod ON tprod.product = tprog.product "); knsql.append("where tprog.programid = ?programid "); knsql.set("programid", context.params.program); let rs = await knsql.executeQuery(db, context); return this.createRecordSet(rs); } async getDataSource(context) { let vi = this.validateParameters(context.params, "program"); if (!vi.valid) { return undefined; } let db = this.getPrivateConnector(this.model); try { let rs = await this.performRetrieving(context, db); if (rs && rs.rows.length > 0) { let row = rs.rows[0]; return { action: "retrieve", entity: {}, dataset: row }; } return undefined; } catch (ex) { this.logger.error(this.constructor.name, ex); return Promise.reject(this.getDBError(ex)); } finally { if (db) db.close(); } } } exports.ProgramHandler = ProgramHandler;