用途:为业务逻辑入口点使用的仓储接口定义统一操作规范,使调用方从接口即可判断操作意图(创建、更新、按标识或唯一键取零或一条、按条件取多条、动态列表、计数、存在性判断、按标识删除)。
主要能力:操作分两族——实体获取族(findBy*、findManyBy*、search)返回领域实体;聚合族(countBy*、existsBy*、existManyBy*)返回标量。两条横切规则:未找到、空列表、计数为零、存在为假都是合法返回值,错误仅保留给基础设施故障;禁止 save,必须显式区分 create 与 update。
命名与契约:单行用 findBy<Field>(仅允许 AND 组合字段),返回可为空类型,不抛域错误;多行用 findManyBy<Field>(允许 AND/OR),返回集合,空集合合法;search 接受过滤子句、分页与排序子句,返回含集合与总数的分页结果,仅在过滤/排序字段事先未知时使用,每仓储一个;countBy<Field> 返回非负整数,谓词须与对应 findManyBy* 一致,无 countManyBy* 形式;existsBy<Field>(单数)与 existManyBy<Field>(复数)必须委托对应 countBy* 并返回大于零,禁止独立查询;create/update 接收并返回领域实体;deleteById 接收标识、无返回值且幂等。
错误模型:仓储签名暴露的错误类型只能描述基础设施类别(连接失败、超时、完整性约束、序列化失败、驱动或事务错误等);UserNotFoundError、EmailAlreadyTakenError 等域形状错误名不得出现在仓储签名中,应由入口点或业务逻辑层转换。
使用方式:先按入口点需求定义操作,按规范命名并选择符合错误模型的返回类型,适配项目大小写与集合类型,按需增量添加,不预置未被使用的操作。当执行上下文技能启用时,仓储方法不接收事务参数,内部从执行上下文获取;上下文事务为空时须新建独立事务。
限制:资料未提供具体安装命令、平台支持、收费或效果数据;示例代码仅展示 TypeScript 接口片段,未给出完整实现。