const BaseAction = require('../core/base-action');

/**
 * 自定义动作 - 调用适配器中的自定义函数
 */
class CustomAction extends BaseAction {
  async execute() {
    const handler = this.config.handler;
    const params = this.config.params || {};
    
    if (!handler) {
      throw new Error('缺少处理函数名称');
    }
    
    this.log('info', `执行自定义函数: ${handler}`);
    
    // 检查适配器中是否存在该函数
    if (typeof this.context.adapter[handler] !== 'function') {
      throw new Error(`自定义处理函数不存在: ${handler}`);
    }
    
    // 调用自定义函数
    const result = await this.context.adapter[handler](params);
    
    this.log('debug', '✓ 自定义函数执行完成');
    
    return result;
  }
}

module.exports = CustomAction;
