fix(advice): return matched_count, and do not advise about the wrong reading
set_reading_advice returned modified_count, which is 0 both when the guard refused the write and when the write matched but the text was already identical. The caller logs "the advice was not stored" on 0, so it has to mean "the guard refused it". It now returns matched_count. _start_advice fell back to the newest reading when the reading it was asked about was not in the run. That described the wrong number, and the conditional write would refuse it anyway - so it now says so and stops. The editing token is the primary guard on the write, not the gravity. Every edit writes a fresh token, so a comment-only correction - which leaves the gravity unchanged - is caught too. Verified against live Mongo with the real repository code: the fresh advice lands, the slow stale thread is refused, and the brewer's comment is untouched. 193 tests pass.
This commit is contained in:
@@ -296,7 +296,13 @@ class BeerRepository:
|
||||
"advice_at": _now_iso(),
|
||||
}},
|
||||
)
|
||||
return result.modified_count
|
||||
# `matched_count`, not `modified_count`.
|
||||
#
|
||||
# `modified_count` is 0 when the document matched but the text
|
||||
# was already identical - which is a successful write, not a
|
||||
# refused one. The caller logs "the advice was not stored" when
|
||||
# this is 0, so it has to mean "the guard refused it".
|
||||
return result.matched_count
|
||||
|
||||
def set_final_reading(self, beer_run_id: str, reading_date: str,
|
||||
final: bool) -> int:
|
||||
|
||||
Reference in New Issue
Block a user