UNPKG

will-core

Version:
64 lines (63 loc) 3.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LoggingHandler = void 0; const will_sql_1 = require("will-sql"); const will_util_1 = require("will-util"); const BaseHandler_1 = require("./BaseHandler"); const EnvironmentVariable_1 = require("../utils/EnvironmentVariable"); class LoggingHandler extends BaseHandler_1.BaseHandler { constructor() { super(...arguments); this.model = { name: "tul", alias: { privateAlias: EnvironmentVariable_1.DB_TRACKER } }; } insert(context) { if (this.model && this.isValidModelConfig("privateAlias", this.model)) { //do not call exposeFunctional or track otherwise it circular tracking return this.doInsert(context, this.model); } return Promise.resolve({ rows: null, columns: null }); } async doInsert(context, model) { let db = this.getPrivateConnector(model); try { let user = await this.getUserTokenInfo(context, true); let token = this.getTokenKey(context); let headers = context.meta.headers; let params = { ...context.params }; delete params.req; delete params.res; let req = context.meta.req; if (!req && context.options && context.options.parentCtx && context.options.parentCtx.params && context.options.parentCtx.params.req) req = context.options.parentCtx.params.req; let ip = null; if (req) ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; let sql = new will_sql_1.KnSQL("insert into tul (seqno,curtime,useralias,userid,site,progid,handler,action,remark,token,address,paths,headers,requests) "); sql.append("values(?seqno,?curtime,?useralias,?userid,?site,?progid,?handler,?action,?remark,?token,?address,?paths,?headers,?requests)"); sql.set("seqno", will_util_1.Utilities.currentTimeMillis()); sql.set("curtime", will_util_1.Utilities.now()); sql.set("useralias", user?.useruuid); sql.set("userid", user?.userid); sql.set("site", user?.site); sql.set("progid", this.trackInfo?.tracker); sql.set("handler", this.trackInfo?.model); sql.set("action", this.trackInfo?.method); sql.set("remark", this.trackInfo?.info ? JSON.stringify(this.trackInfo?.info) : null); sql.set("token", token); sql.set("address", ip); sql.set("paths", req ? req.originalUrl : null); sql.set("headers", headers ? JSON.stringify(headers) : null); sql.set("requests", params ? JSON.stringify(params) : null); let rs = await sql.executeUpdate(db, context); return this.createRecordSet(rs); } catch (ex) { this.logger.error(this.constructor.name, ex); return Promise.reject(this.getDBError(ex)); } finally { db.close(); } } } exports.LoggingHandler = LoggingHandler;