Skip to main content

parse_triggers

Function parse_triggers 

Source
pub fn parse_triggers(
    obj: &Map<String, Value>,
    owner: &str,
    fields: &HashMap<String, FieldDef>,
) -> Result<Triggers, String>
Expand description

解析并校验 schema 顶层的 triggers;任一项非法 → Err(零静默)。

校验清单(全部命中即 Err):

  1. triggers 非对象;
  2. 事件键不在 EVENTS;
  3. 事件值非数组 / 元素非对象;
  4. into/op/data(命令式)与 fnRef(回调式)互斥且必居其一;
  5. op 不在 OPS;
  6. 命令式缺 data(op=remove 相反:出现 data 即 Err),或 op=update/op=remove 缺 condition;
  7. onFields 非字符串数组,或字段未在 fields 中声明($ 前缀键除外);
  8. when 非对象;出现 cascade 键(首批不支持级联);
  9. 命令式 data 的键未在目标 schema 中声明(在展开期校验,见 command::triggers);
  10. schedule 事件缺 cron / cron 非法,或 body/when 出现 {{root./{{before. (schedule 无 root/before 上下文,只允许 {{now}});非 schedule 事件出现 cron 键。