18310dbfe5
Add comprehensive database schema for CardDAV multi-account contacts sync: New tables: - cardav_accounts: Store CardDAV server credentials - cardav_addressbook_selection: Per-account addressbook enable/disable - contact_phones: Multiple phone numbers per contact with labels - contact_emails: Multiple email addresses per contact with labels - contact_addresses: Multiple postal addresses per contact with labels Extended contacts table with 9 new columns: - organization, job_title, birthday, website, photo, nickname - cardav_account_id (FK to cardav_accounts, ON DELETE SET NULL) - cardav_uid (vCard UID from server) - cardav_addressbook_url (source addressbook URL) Features: - UNIQUE constraints on (cardav_url, username) and (account_id, addressbook_url) - CASCADE delete for addressbook selection and contact sub-tables - Performance indices for cardav_uid and email lookups - Support for manual contacts (NULL cardav_account_id) - is_primary flag for phone/email/address selection Test coverage: - 23 comprehensive tests verify all tables, constraints, indices - FK CASCADE delete behavior validated - UNIQUE constraints enforced - Data integrity scenarios tested Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>