按行决定列表的整集合成员资格¶
Issue: https://github.com/morluto/rea/issues/4933
结果¶
列表视图从状态中复现其各行,并带有两种成员资格之一:all,即按状态顺序排列的集合中的每个实体;或 recorded,即每个记录所列出的实体。此前,只有当每条被检查的行都列出其整个集合时,视图才为 all。列表工具通常还有一条带过滤条件的行(?library_id=…、?name=…),而这一行会把工具的所有行都限制为各自的已记录成员。于是环境创建的实体再也不会出现在列表中,尽管同一工具的未过滤行曾显示该应用列出了每个实体。
现在,每条被检查的行会被独立判断。具有 recorded 成员资格的视图会在 all_record_ordinals 中列出那些各自满足 all 对每一行所提条件的被检查行:该行没有查询参数,或只有从零开始的仅分页参数;它按状态顺序精确列出其集合中的实体;并且它显示的总数与所列数量一致,也没有下一页。在这种行上得到响应的调用会列出集合中的每个实体;写门控会针对整个集合检查对该行的读取;创建的插入规则也可以在该行上重试,如 all 视图一样。其他行则保留其已记录成员。如果没有这样的行,或者每一行都是这样的行,则视图不变且该成员不存在,因此现有状态保持其值。
正数或格式错误的 offset、start、_start 和 page 位置不会确立整集合成员资格,即使对于空集合也是如此。没有记录基于零还是基于一的约定时,正数的页码是有歧义的。这些行保持已记录成员资格,而不会在写入或 data/add 之后凭空生成更早的条目;所有分页值必须是安全的非负整数。重复出现的位置必须全部为零。
整集合行的读取会检查集合,因此它会覆盖自上次读取以来改变过集合的每次写入。如果某次写入的实体在之后的读取中被显示为不存在——例如一次创建被未建模的删除移除,随后 404 显示其已消失——那么该写入不再计入其中,正如建模的删除将其取代时那样。当一次失败的条目检查采用读取的答案且该答案不包含任何实体时,也是如此。否则,在实体已消失之后取得的整集合列表,会确认一次它无法显示的创建。
numberOfElements 以及类似的条目数量成员(number 与 elements、entries、items 或 results 组合)对所列实体计数,因此整集合行的计数器会像 totalElements 一样随状态变化。包含整集合行的视图会采用那些在其每条这样的行上都等于所列数量的计数器,因为部分页面的总数所计的不只是该页;不包含整集合行的视图则只保留那些在每一行上都等于所列数量的计数器。只有当某行自身的记录显示该计数器等于其所列数量时,该行才会在响应中将每个计数器设为所列数量,因此部分页面会保留其已记录的总数。
验收¶
- 领域:一个包含整集合行和过滤行的工具会命名那条整集合行;随后被整集合行列出的创建会得到确认;一个所有行都是整集合行、或都不是整集合行的工具,不会命名任何行;在读取显示所创建实体已消失后取得的整集合列表,不会确认任何创建。
- 服务:在一次已服务的创建之后,整集合行会连同其计数器列出所创建的实体,而过滤行则保留其已记录成员;此外,对于一个总数对整个集合计数的部分页面,整集合行的总数随状态变化,而该页面保留其已记录的总数。
- 度量:六个已发布环境与应用程序进行前后对比,基于保真度比较的探针以及此后记录的留出会话。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 rea2/rea