# 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
```
