SuperAPI AI 工具集

ecto-patterns

通用与其它

查看项目

更新于 10-15 17:27

技能介绍

用途:为 Phoenix/Elixir 应用提供 Ecto 数据层(schema、changeset、查询、迁移、事务)的实践模式,强调把领域逻辑放在 context 中、把约束落实在数据库、多用事务处理多步流程。

主要能力:

  • schema 与 changeset:在 changeset 中做 cast/校验,并配合 unique_constraint、foreign_key_constraint 让数据库错误清晰返回。
  • 迁移:建议增量式变更(先可空、回填、再设 null: false);大表索引用 concurrently: true,Postgres 需在 up/down 中配合;数据迁移放独立模块,保证幂等。
  • 查询与预加载:用 preload 避免循环查询,用 select 避免加载大字段,必要时用 FOR UPDATE 行锁。
  • 事务与 Ecto.Multi:多步写用 Multi.insert/Multi.run 组合,副作用的失败用 Multi.run 返回 {:ok, value} 或 {:error, reason}。
  • 关联、分页、多租户:用 on_replace 控制嵌套变更;小数据用 offset/limit,大列表用游标;多租户可选按 schema 前缀或 tenant_id 行过滤,并在 context 中统一限定租户。
  • 性能与测试:Repo.stream 导出、ETS/Cachex 缓存、Telemetry 监控查询耗时;测试用 DataCase 沙箱并保持 async。

使用方式:在 Elixir 项目中按上述模式编写 schema/changeset/查询与迁移;命令如 mix ecto.migrate 用于执行迁移。

适用场景:Phoenix/Elixir 项目的数据建模、迁移、事务与多租户设计。

限制:资料未给出完整项目结构或依赖版本;具体 API 行为、性能与收费情况暂未提供。