veza/veza-chat-server/docs/CHAT_DB_STRATEGY.md

36 lines
1.3 KiB
Markdown
Raw Normal View History

# Strategie de Base de Données pour Veza Chat Server
## Isolation par Schema
Le `veza-chat-server` partage l'instance PostgreSQL `veza_lab` avec d'autres services (Backend API, Stream Server), mais utilise un **schema dédié** nommé `chat`.
Cette isolation permet de :
1. Éviter les conflits de noms de tables (ex: `users`) avec le Backend API (schema `public`).
2. Gérer des migrations SQLx indépendantes et spécifiques au Chat.
3. Réinitialiser les données du Chat sans impacter le reste du système.
## Configuration
Pour se connecter à la base de données du chat, l'URL de connexion (DSN) doit inclure l'option `search_path=chat`.
### Exemple de DSN
```bash
export DATABASE_URL="postgres://user:pass@localhost:5432/veza_lab?sslmode=disable&options=-c%20search_path=chat"
```
### Scripts Lab
Les scripts dans `scripts/` configurent automatiquement cet environnement :
- **`start_lab.sh`** : Démarre le serveur en configurant le schema `chat`.
- **`reset_lab_db.sh`** : Supprime et recrée le schema `chat`, puis joue les migrations.
## Migrations
Les migrations SQLx se trouvent dans `migrations/`. Elles s'appliquent uniquement au schema `chat`.
```bash
# Appliquer manuellement les migrations
export DATABASE_URL="..." # avec search_path=chat
sqlx migrate run
```