claude-memory/graph/workflows/pr-review-paper-dynasty-database48-replace-broad-except-exce-37cca1.md

45 lines
2.1 KiB
Markdown

---
id: 37cca1c8-7fbd-43c3-a289-129b1c530f9f
type: workflow
title: "PR review: paper-dynasty-database#48 — replace broad except Exception with DoesNotExist (APPROVED)"
tags: [pr-reviewer, paper-dynasty-database, fastapi, peewee, python, exception-handling]
importance: 0.4
confidence: 0.8
created: "2026-03-04T01:18:04.266886+00:00"
updated: "2026-03-04T01:18:04.686668+00:00"
relations:
- target: 759c8f57-2519-4e21-afd6-bf89386aedb8
type: RELATED_TO
direction: outgoing
strength: 0.76
edge_id: 8668a1bd-c71f-44f4-b15a-34ad97917e66
- target: d36a86f0-8183-4c94-8d63-0be65d3fd63a
type: RELATED_TO
direction: outgoing
strength: 0.81
edge_id: faef1278-c663-4607-b2a1-4b3f8d877d99
- target: 5ae1bf6e-1e1c-4486-8a4d-10afd9e42189
type: RELATED_TO
direction: outgoing
strength: 0.81
edge_id: ba47c3f8-ca13-47ca-98a5-2e3f6da75899
---
## PR #48: fix: replace broad except Exception blocks with DoesNotExist (#15)
**Verdict**: APPROVED (could not post — Gitea blocks self-reviews on cal-owned repos)
### Summary
- 71 `except Exception` blocks replaced with `except peewee.DoesNotExist` across 19 router files in `app/routers_v2/`
- `DoesNotExist` imported into each file from `..db_engine`, which re-exports it via `from peewee import *`
- Real DB errors now propagate as 500s instead of being swallowed as 404s
### Key Findings
- **Correctness**: Change is mechanically correct. `DoesNotExist` is peewee's standard exception for `Model.get_by_id()` misses.
- **Import validity**: `db_engine.py` line 8 uses `from peewee import *`, so `DoesNotExist` is available in that namespace. All 19 import additions are valid.
- **Pre-existing minor issue**: A few handlers use `except DoesNotExist as e:` but don't include `e` in their log messages (e.g., `cards.py` `v1_cards_wipe_team`, `results.py` `get_team_results`). Pre-existing, out of scope.
- **No security concerns**. No style violations.
### Note
Gitea raises "approve your own pull is not allowed" when the reviewer owns the repo. Self-review is blocked at the platform level — this is a known limitation for solo repos.