mirror of
https://github.com/R0m1k3/Regisflow.git
synced 2026-10-11 17:29:48 +02:00
Adds init.sql and init-db.sh for database initialization, and enhances Docker setup. Replit-Commit-Author: Agent Replit-Commit-Session-Id: dec54137-d5a2-4406-8ad4-5f2f9fb110bf Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/438ba2d5-c119-4a74-9474-438eed8b3141.jpg
151 lines
4.4 KiB
Bash
Executable File
151 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# Script d'initialisation de la base de données RegisFlow
|
||
# Usage: ./init-db.sh [DATABASE_URL]
|
||
|
||
set -e
|
||
|
||
# Configuration par défaut
|
||
DEFAULT_DB_HOST="localhost"
|
||
DEFAULT_DB_PORT="5433"
|
||
DEFAULT_DB_NAME="regisflow"
|
||
DEFAULT_DB_USER="regisflow"
|
||
DEFAULT_DB_PASSWORD="RegisFlow2024!PostgreSQL"
|
||
|
||
# Couleurs pour les messages
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m'
|
||
|
||
log_info() {
|
||
echo -e "${BLUE}ℹ️ $1${NC}"
|
||
}
|
||
|
||
log_success() {
|
||
echo -e "${GREEN}✅ $1${NC}"
|
||
}
|
||
|
||
log_warning() {
|
||
echo -e "${YELLOW}⚠️ $1${NC}"
|
||
}
|
||
|
||
log_error() {
|
||
echo -e "${RED}❌ $1${NC}"
|
||
}
|
||
|
||
# Fonction pour extraire les informations de DATABASE_URL
|
||
parse_database_url() {
|
||
local url="$1"
|
||
|
||
# Extraire les composants de l'URL PostgreSQL
|
||
if [[ $url =~ postgresql://([^:]+):([^@]+)@([^:]+):([^/]+)/(.+) ]]; then
|
||
DB_USER="${BASH_REMATCH[1]}"
|
||
DB_PASSWORD="${BASH_REMATCH[2]}"
|
||
DB_HOST="${BASH_REMATCH[3]}"
|
||
DB_PORT="${BASH_REMATCH[4]}"
|
||
DB_NAME="${BASH_REMATCH[5]}"
|
||
else
|
||
log_error "Format DATABASE_URL invalide. Utilisez: postgresql://user:password@host:port/database"
|
||
exit 1
|
||
fi
|
||
}
|
||
|
||
# Déterminer la configuration de la base de données
|
||
if [ -n "$1" ]; then
|
||
log_info "Utilisation de DATABASE_URL fournie: $1"
|
||
parse_database_url "$1"
|
||
elif [ -n "$DATABASE_URL" ]; then
|
||
log_info "Utilisation de DATABASE_URL depuis l'environnement"
|
||
parse_database_url "$DATABASE_URL"
|
||
else
|
||
log_info "Utilisation de la configuration par défaut"
|
||
DB_HOST="$DEFAULT_DB_HOST"
|
||
DB_PORT="$DEFAULT_DB_PORT"
|
||
DB_NAME="$DEFAULT_DB_NAME"
|
||
DB_USER="$DEFAULT_DB_USER"
|
||
DB_PASSWORD="$DEFAULT_DB_PASSWORD"
|
||
fi
|
||
|
||
log_info "Configuration de la base de données:"
|
||
log_info " Host: $DB_HOST"
|
||
log_info " Port: $DB_PORT"
|
||
log_info " Database: $DB_NAME"
|
||
log_info " User: $DB_USER"
|
||
|
||
# Vérifier que psql est installé
|
||
if ! command -v psql &> /dev/null; then
|
||
log_error "psql n'est pas installé. Installez PostgreSQL client."
|
||
exit 1
|
||
fi
|
||
|
||
# Vérifier la connexion à PostgreSQL
|
||
log_info "Test de connexion à PostgreSQL..."
|
||
export PGPASSWORD="$DB_PASSWORD"
|
||
|
||
if ! psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -c "\q" 2>/dev/null; then
|
||
log_error "Impossible de se connecter à PostgreSQL"
|
||
log_info "Vérifiez que PostgreSQL est démarré et accessible"
|
||
log_info "Commande de test: psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME"
|
||
exit 1
|
||
fi
|
||
|
||
log_success "Connexion PostgreSQL réussie"
|
||
|
||
# Exécuter le script d'initialisation
|
||
log_info "Exécution du script d'initialisation..."
|
||
|
||
if [ -f "init.sql" ]; then
|
||
if psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -f init.sql; then
|
||
log_success "Script d'initialisation exécuté avec succès"
|
||
else
|
||
log_error "Erreur lors de l'exécution du script d'initialisation"
|
||
exit 1
|
||
fi
|
||
else
|
||
log_error "Fichier init.sql non trouvé"
|
||
exit 1
|
||
fi
|
||
|
||
# Vérifier que les tables ont été créées
|
||
log_info "Vérification des tables créées..."
|
||
TABLES=$(psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -t -c "SELECT tablename FROM pg_tables WHERE schemaname='public';" | tr -d ' ' | grep -v '^$')
|
||
|
||
if echo "$TABLES" | grep -q "users\|stores\|sales\|sessions"; then
|
||
log_success "Tables principales créées:"
|
||
echo "$TABLES" | while read -r table; do
|
||
if [ -n "$table" ]; then
|
||
log_info " - $table"
|
||
fi
|
||
done
|
||
else
|
||
log_error "Les tables principales n'ont pas été créées correctement"
|
||
exit 1
|
||
fi
|
||
|
||
# Vérifier l'utilisateur admin
|
||
log_info "Vérification de l'utilisateur administrateur..."
|
||
ADMIN_COUNT=$(psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" -t -c "SELECT COUNT(*) FROM users WHERE username='admin';" | tr -d ' ')
|
||
|
||
if [ "$ADMIN_COUNT" = "1" ]; then
|
||
log_success "Utilisateur admin créé avec succès"
|
||
else
|
||
log_warning "Problème avec la création de l'utilisateur admin"
|
||
fi
|
||
|
||
# Afficher le résumé
|
||
echo ""
|
||
log_success "🎉 Initialisation de la base de données terminée!"
|
||
echo "======================================================"
|
||
log_info "Base de données: $DB_NAME sur $DB_HOST:$DB_PORT"
|
||
log_info "Utilisateur administrateur:"
|
||
log_info " - Username: admin"
|
||
log_info " - Password: admin123"
|
||
log_warning "IMPORTANT: Changez le mot de passe admin après la première connexion!"
|
||
echo ""
|
||
|
||
# Nettoyer les variables d'environnement
|
||
unset PGPASSWORD
|
||
|
||
log_success "Prêt pour le déploiement!" |