fix(apotheke): guard single-row writes against zero-row match - #507
Merged
Conversation
Single-row UPDATE/DELETE repo functions across the media entities discarded the query result and returned Ok(()) even when zero rows matched, silently reporting success for a write against a missing target. A shared require_affected() helper now maps a zero-row single-row write to DbError::NotFound; applied uniformly across audiobook/book/comic/movie/music/news/podcast/quality/tv (and the reference user/zone sites refactored onto the same helper). Closes #492 Gate-Passed: kanon 0.1.5 +stages:fmt,check,clippy,nextest,lint sha:6ec74a2270c964fc7753ad9086e2504f4174cfc7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Single-row
UPDATE/DELETErepo functions across the media entities discarded the query result and returnedOk(())even when zero rows matched — silently reporting success for a write against a missing target.A shared
require_affected(result, table, id)helper now maps a zero-row single-row write toDbError::NotFound(with a hex-rendered id). Applied uniformly across audiobook/book/comic/movie/music/news/podcast/quality/tv single-row writes (~28 sites), and the already-correct user/zone reference sites refactored onto the same helper. Per-entity*_nonexistent_returns_not_foundtests added.Gate:
kanon gate --fullgreen (fmt, check, clippy-D warnings --all-targets, nextest 1722/1722, deny, lint).Closes #492