xb

所有过滤机制

本文档是 xb/doc/ALL_FILTERING_MECHANISMS.md 的中文版本。它解释了 xb 如何自动跳过空输入,InRequired 如何保护破坏性操作,以及当内部条件全部失效时,高级块的行为。


1. 单值守卫

xb.Of("t_user").
    Eq("status", 0).      // 被跳过
    Eq("status", 1).      // 被包含
    Like("name", "").     // 被跳过
    Like("name", "ai").   // 被包含
    Build()

2. IN / NOT IN

xb.Of("orders").
    In("id", 0, nil, 9, 10).         // 渲染为 IN (9,10)

xb.Of("orders").
    InRequired("id", ids...).        // 如果 ids 被清理后为空则 panic

3. 复合块


4. LIKE 辅助方法


5. 调试技巧

症状 解释
条件缺失 值被自动过滤;检查 built.Conds
IN 消失 输入被清理为零个元素
OR 块缺失 每个嵌套条件都被跳过
需要严格强制执行 切换到 InRequired 或添加 X() 原始表达式

在测试中使用 fmt.Printf("%#v\n", built.Conds) 来检查最终的 AST。


6. 相关材料