will-core
Version:
core module
76 lines (75 loc) • 3.1 kB
JavaScript
;
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;