Web frontend and supporting services for lance.blue

fix(api): log database failures in handlers that fall back to a bare 500 master

session, set_default_camo, list_opponents, list_suggested_opponents, list_matches, and match_status all turned a database error into a bare 500 with nothing in the log. This crate logs AWS and callback failures well; database failures on the hot path were the gap. session is hit on every page load, so a transient sqlite problem was a wave of unexplained 500s with no trace of why. Also covers the proxy's authorize(): db.get_match now logs before its 500, and db.is_match_player's fallback to false (kept - failing closed is correct) now logs a warn first, so a real seat-holder hitting a transient DB error is distinguishable in the log from a stranger at the door. Logging only: no control flow, status codes, or return values changed. Field style and message shape follow settle_own_camo's existing "camo: default could not be read" precedent.


+51 -13
2 changed files