35 lines
1.3 KiB
Markdown
35 lines
1.3 KiB
Markdown
# 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
|
|
```
|