#!/bin/bash # Script de démarrage lab pour veza-chat-server # Utilise la vraie base de données PostgreSQL veza_lab avec schema dédié 'chat' set -euo pipefail # Couleurs RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # Vérifier que VEZA_LAB_DSN est défini if [ -z "${VEZA_LAB_DSN:-}" ]; then echo -e "${RED}❌ ERREUR: VEZA_LAB_DSN n'est pas défini${NC}" echo "Définissez-le avec:" echo " export VEZA_LAB_DSN='postgres://veza:veza_password@localhost:5432/veza_lab?sslmode=disable'" exit 1 fi # S'assurer que le schema 'chat' existe echo -e "${BLUE}🔧 Vérification du schema 'chat'...${NC}" psql "$VEZA_LAB_DSN" -c "CREATE SCHEMA IF NOT EXISTS chat;" > /dev/null # Configuration de l'environnement avec schema dédié # On ajoute options=-c search_path=chat pour forcer le schema par défaut if [[ "$VEZA_LAB_DSN" == *"?"* ]]; then export DATABASE_URL="${VEZA_LAB_DSN}&options=-c%20search_path=chat" else export DATABASE_URL="${VEZA_LAB_DSN}?options=-c%20search_path=chat" fi export CHAT_SERVER_PORT="${CHAT_SERVER_PORT:-8081}" export CHAT_SERVER_HOST="${CHAT_SERVER_HOST:-0.0.0.0}" export RUST_LOG="${RUST_LOG:-info}" export RABBITMQ_ENABLE="${RABBITMQ_ENABLE:-false}" # Vérifier que le binaire existe if [ ! -f "./target/release/chat-server" ]; then echo -e "${YELLOW}⚠️ Binaire non trouvé, compilation...${NC}" cargo build --release fi # Générer JWT_SECRET si non défini if [ -z "${JWT_SECRET:-}" ]; then export JWT_SECRET=$(openssl rand -base64 32) echo -e "${YELLOW}⚠️ JWT_SECRET généré automatiquement${NC}" fi echo -e "${BLUE}🚀 Démarrage veza-chat-server (lab)${NC}" echo "==================================" echo -e "${GREEN}✅ DATABASE_URL: ${DATABASE_URL%%@*}@***${NC}" echo -e "${GREEN}✅ Schema: chat${NC}" echo -e "${GREEN}✅ Port: $CHAT_SERVER_PORT${NC}" echo -e "${GREEN}✅ Host: $CHAT_SERVER_HOST${NC}" echo -e "${GREEN}✅ RUST_LOG: $RUST_LOG${NC}" echo "" # Démarrer le serveur exec ./target/release/chat-server