#!/bin/bash set -e echo "=== Starting MariaDB ===" mysqld --user=mysql & MYSQL_PID=$! echo "Waiting for MariaDB to be ready..." for i in {1..60}; do if mysqladmin ping -h localhost --silent 2>/dev/null; then echo "MariaDB is ready!" break fi sleep 1 done DB_NAME="${DB_NAME:-hospital}" echo "Creating database if not exists..." mysql -h localhost -u root -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\`;" if [ -n "$DB_PASSWORD" ] && [ "$DB_PASSWORD" != "" ]; then echo "Creating user and setting permissions..." DB_USER="${DB_USER:-hospital}" USER_EXISTS=$(mysql -h localhost -u root -N -e "SELECT COUNT(*) FROM mysql.user WHERE User='$DB_USER' AND Host='%';") if [ "$USER_EXISTS" = "0" ]; then mysql -h localhost -u root -e "CREATE USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD';" mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'%';" mysql -h localhost -u root -e "FLUSH PRIVILEGES;" else mysql -h localhost -u root -e "ALTER USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD';" mysql -h localhost -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'%';" mysql -h localhost -u root -e "FLUSH PRIVILEGES;" fi fi ADMIN_DNI="${ADMIN_DNI:-00000000}" ADMIN_PASSWORD="${ADMIN_PASSWORD:-Admin123!}" echo "Checking for admin user..." TABLE_EXISTS=$(mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -N -e "SHOW TABLES LIKE 'usuarios';" 2>/dev/null || echo "") if [ -n "$TABLE_EXISTS" ]; then USER_COUNT=$(mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -N -e "SELECT COUNT(*) FROM usuarios WHERE dni='$ADMIN_DNI';" 2>/dev/null || echo "0") if [ "$USER_COUNT" = "0" ]; then echo "Creating initial admin user..." ADMIN_ID=$(cat /proc/sys/kernel/random/uuid) TODAY=$(date +%Y-%m-%d) # Hash password using bcryptjs via node HASH=$(node -e "const bcrypt = require('bcryptjs'); console.log(bcrypt.hashSync('$ADMIN_PASSWORD', 10));") mysql -h localhost -u "$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -e " INSERT INTO usuarios (id, apellido, nombre, dni, fechaNacimiento, email, rol, passwordHash, fechaCreacion) VALUES ('$ADMIN_ID', 'Administrador', 'Sistema', '$ADMIN_DNI', '$TODAY', 'admin@hospital.local', 'admin', '$HASH', '$TODAY'); " echo "==========================================" echo "ADMIN CREDENTIALS:" echo "DNI: $ADMIN_DNI" echo "Password: $ADMIN_PASSWORD" echo "==========================================" fi fi echo "=== Initialisation complete ===" # Start nginx in background nginx & # Run the backend exec node server/api-mariadb.js