'use strict';

/**
 * 自动记录日志
 *
 * @author CaiAoLin
 * @date 2017/10/30
 * @version
 */

module.exports = options => {
    return function* autoLogger(next) {
        // 自动记录log的action
        const autoLogAction = ['save', 'delete'];
        if (this.actionName !== undefined && autoLogAction.indexOf(this.actionName) >= 0) {
            // 操作数据的id
            const idReg = /\/(\d+)/;
            const paramInfo = this.request.originalUrl.match(idReg);
            let targetId = paramInfo[1] !== undefined ? paramInfo[1] : -1;
            targetId = parseInt(targetId);

            const logData = {
                controller: this.controllerName,
                action: this.actionName,
                operation: this.currentName === undefined ? '保存数据' : this.currentName,
                target_id: targetId,
            };
            yield this.service.log.addLog(logData);
        }

        yield next;
    };
};
