用途:在编写或审查 Elixir 应用的 Ecto 数据库代码时,确保采用一致且符合惯用法的模式。使用前需先调用 ecto-essentials 获取完整 Ecto 参考。
主要规则:不得在 LiveView 或 controller 中直接调用 Repo,所有数据库操作应放在 context 模块;应用逻辑优先使用非 bang 函数(Repo.get/1、Repo.insert/1),bang 仅用于测试;查询中所有用户输入必须参数化,用 ^ 插值,禁止在 fragment 中拼接字符串;关联预加载必须在循环外进行以避免 N+1;changeset 中应添加 foreign_key_constraint 与 unique_constraint 以匹配数据库约束;两个及以上相关操作使用 Ecto.Multi,不要无事务地连续调用多个 Repo;为外键和常用查询列添加索引;同一迁移中不得混合结构变更与数据回填。
FCIS 边界:Ecto 是持久化边界,优先用纯函数构建 changeset、query 和 Multi,在 context 外壳中只执行一次 Repo。
审查流程:检查 context 外的 Repo 调用;搜索应用 lib/ 中的 bang 函数;检查循环内未预加载的关联访问;验证 Multi 使用;检查迁移的可逆性、索引及是否混合结构/数据变更。
其他要点:context 返回 tagged tuple;动态过滤用 *_query/1 返回查询、外壳执行;迁移使用可逆的 change/0 并建索引,先用 mix ecto.migrate 在测试环境验证,再用 mix ecto.rollback 确认可回滚;大表分页使用 offset/limit 并配合复合索引。
限制:资料未提供该技能的安装方式、收费、平台支持或效果数据。