Skip to content

CrontabResult CRUD

Query CrontabResult

调用者可以通过 crontab-result_query 查询执行结果记录。

默认 LIMIT:若 condition 中未指定 limitlast,查询默认限制返回 1,000 条记录。显式指定 limit 可覆盖此默认值。

最大 LIMIT:显式指定的 limit 不能超过 10,000MAX_LIMIT),超过会被截断为 10,000

方法

调用方法名为 crontab-result_query,需要提供以下参数:

json
{
  "token": "demo_token",
  "query": {
    "condition": [
      // CrontabResultQueryCondition 结构体,该结构体参考 CrontabResult 总览
      // 该字段为 Vec<_>,可指定多个
    ]
  }
}

权限要求

  • 需要 CrontabResult::Read(String) 权限
  • 仅在 Global Scope 下有效
  • read 权限中的字符串对应 cron_name,支持通配符 *
  • 若结果涉及多个不同的 cron_name,则 Token 必须对每个 cron_name 都具备对应的读取权限

返回值

json
[
  {
    "id": 1,
    // 记录 ID
    "cron_id": 5,
    // 关联的 Crontab ID
    "cron_name": "cleanup_database",
    // Crontab 名称
    "relative_id": null,
    // 关联的 task_id 或 js_result_id(可空)
    "run_time": 1769341269012,
    // 执行时间(毫秒时间戳,可空)
    "success": true,
    // 是否执行成功(可空)
    "message": "Cleaned 100 records"
    // 执行结果消息(可空)
  }
  // 该字段为 Vec<_>,可返回多条
]

完整示例

查询指定 cron_name 的所有结果:

请求:

json
{
  "jsonrpc": "2.0",
  "method": "crontab-result_query",
  "params": {
    "token": "demo_token",
    "query": {
      "condition": [
        {
          "cron_name": "cleanup_database"
        }
      ]
    }
  },
  "id": 1
}

查询指定时间范围内的成功记录:

json
{
  "jsonrpc": "2.0",
  "method": "crontab-result_query",
  "params": {
    "token": "demo_token",
    "query": {
      "condition": [
        {
          "cron_name": "cleanup_database"
        },
        {
          "run_time_from_to": [
            1700000000000,
            1800000000000
          ]
        },
        "is_success"
      ]
    }
  },
  "id": 1
}

查询最近的 10 条失败记录:

json
{
  "jsonrpc": "2.0",
  "method": "crontab-result_query",
  "params": {
    "token": "demo_token",
    "query": {
      "condition": [
        {
          "cron_name": "backup_database"
        },
        "is_failure"
      ]
    }
  },
  "id": 1
}

获取最后一条执行记录:

json
{
  "jsonrpc": "2.0",
  "method": "crontab-result_query",
  "params": {
    "token": "demo_token",
    "query": {
      "condition": [
        {
          "cron_name": "cleanup_database"
        },
        "last"
      ]
    }
  },
  "id": 1
}

注意: 需要分别查询每个 cron_name,不支持一次查询多个不同的 cron_name。

Delete CrontabResult

调用者可以通过 crontab-result_delete 删除执行结果记录。

方法

调用方法名为 crontab-result_delete,需要提供以下参数:

json
{
  "token": "demo_token",
  "query": {
    "condition": [
      // CrontabResultQueryCondition 结构体,该结构体参考 CrontabResult 总览
      // 该字段为 Vec<_>,可指定多个
      // delete 与 query 使用完全相同的 condition 语义
    ]
  }
}

权限要求

删除操作需要 CrontabResult::Delete(String) 权限,仅在 Global Scope 下有效。

权限结构示例:

json
{
  "scopes": [
    "global"
  ],
  "permissions": [
    {
      "crontab_result": {
        "delete": "cleanup_database"
        // 删除指定 cron_name
      }
    },
    {
      "crontab_result": {
        "delete": "backup_*"
        // 删除匹配通配符的 cron_name
      }
    },
    {
      "crontab_result": {
        "delete": "*"
        // 删除所有(全局权限)
      }
    }
  ]
}
  • 若指定了 cron_name 条件,则检查对该 cron_name 的删除权限
  • 若未指定 cron_name 条件(删除所有匹配记录),则需要全局删除权限 {"delete": "*"}
  • 若匹配的记录涉及多个不同的 cron_name,则 Token 必须对每个 cron_name 都具备对应的删除权限

返回值

json
{
  "success": true,
  // 是否成功
  "deleted": 100,
  // 删除的记录数量
  "condition_count": 3
  // 条件数量
}

完整示例

删除指定 cron_name 在指定时间之前的所有记录:

请求:

json
{
  "jsonrpc": "2.0",
  "method": "crontab-result_delete",
  "params": {
    "token": "demo_token",
    "query": {
      "condition": [
        {
          "cron_name": "cleanup_database"
        },
        {
          "run_time_to": 1700000000000
        }
      ]
    }
  },
  "id": 1
}

删除指定 cron_name 的最近 10 条记录(需要对应权限):

json
{
  "jsonrpc": "2.0",
  "method": "crontab-result_delete",
  "params": {
    "token": "demo_token",
    "query": {
      "condition": [
        {
          "cron_name": "cleanup_database"
        },
        {
          "limit": 10
        }
      ]
    }
  },
  "id": 1
}

删除所有失败记录(需要全局删除权限):

json
{
  "jsonrpc": "2.0",
  "method": "crontab-result_delete",
  "params": {
    "token": "demo_token",
    "query": {
      "condition": [
        "is_failure"
      ]
    }
  },
  "id": 1
}