[M4] Modèle UnifiedContact + schéma SQLite contacts.db #48

Closed
opened 2026-04-06 01:36:43 +00:00 by charles · 0 comments
Owner

Contexte

Modèle de données pour les contacts unifiés : un contact logique peut regrouper plusieurs identités puppet sur différents bridges.

Critères d'acceptation

  • Struct UnifiedContact : id: Uuid, display_name, avatar: Option<MxcUri>, identities: Vec<BridgedIdentity>, preferred_channel: Option<BridgeType>, auto_detected: bool
  • Struct BridgedIdentity : user_id: OwnedUserId, bridge_type, external_id: Option<String>, display_name, rooms: Vec<OwnedRoomId>
  • Schéma SQLite dans ~/.local/share/fractal-plus/contacts.db :
    • Table unified_contacts (id UUID, display_name, avatar_uri, preferred_channel, auto_detected, timestamps)
    • Table bridged_identities (user_id PK, contact_id FK, bridge_type, external_id, display_name)
    • Table identity_rooms (user_id FK, room_id, PK composite)
  • CRUD complet via sqlx
  • Migration automatique à l'ouverture

Notes techniques

  • Dépend de : #44 (BridgeType)
  • SQLite via sqlx avec feature sqlite (déjà utilisé en M1)
  • external_id = identifiant dans le réseau d'origine (numéro de téléphone, username Telegram, etc.)
## Contexte Modèle de données pour les contacts unifiés : un contact logique peut regrouper plusieurs identités puppet sur différents bridges. ## Critères d'acceptation - [ ] Struct `UnifiedContact` : `id: Uuid`, `display_name`, `avatar: Option<MxcUri>`, `identities: Vec<BridgedIdentity>`, `preferred_channel: Option<BridgeType>`, `auto_detected: bool` - [ ] Struct `BridgedIdentity` : `user_id: OwnedUserId`, `bridge_type`, `external_id: Option<String>`, `display_name`, `rooms: Vec<OwnedRoomId>` - [ ] Schéma SQLite dans `~/.local/share/fractal-plus/contacts.db` : - Table `unified_contacts` (id UUID, display_name, avatar_uri, preferred_channel, auto_detected, timestamps) - Table `bridged_identities` (user_id PK, contact_id FK, bridge_type, external_id, display_name) - Table `identity_rooms` (user_id FK, room_id, PK composite) - [ ] CRUD complet via `sqlx` - [ ] Migration automatique à l'ouverture ## Notes techniques - Dépend de : #44 (BridgeType) - SQLite via `sqlx` avec feature `sqlite` (déjà utilisé en M1) - `external_id` = identifiant dans le réseau d'origine (numéro de téléphone, username Telegram, etc.)
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/my-fractal#48
No description provided.