0dc303b81a
Extend PUT /contacts/:id route to support updating phones, emails, and addresses arrays with replacement semantics. Uses atomic transactions to DELETE all existing multi-values then INSERT new ones. Validates all multi-value fields before updating. Response includes full contact with multi-value fields via loadMultiValueFields() helper. Backward compatible: multi-value fields only replaced when present in request body. Scalar fields (name, category, etc.) continue to work independently. Tests added: - Update with multi-value fields (replacement semantics verified) - Validation error on invalid phone data (400) - Backward compatibility: update without multi-values preserves them All 109 tests pass. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>