34 lines
959 B
Bash
34 lines
959 B
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
COMMAND=${1:-info}
|
|
ENV_FILE=".env"
|
|
|
|
if [[ ! -f "$ENV_FILE" ]]; then
|
|
echo ".env file not found in the current directory."
|
|
exit 1
|
|
fi
|
|
|
|
# Export variables from .env
|
|
export $(grep -E '^[A-Za-z_][A-Za-z0-9_]*=' "$ENV_FILE" | xargs)
|
|
|
|
if [[ -z "$MYSQL_HOST" || -z "$MYSQL_PORT" || -z "$MYSQL_DATABASE" ]]; then
|
|
echo "MYSQL_HOST, MYSQL_PORT, or MYSQL_DATABASE missing from .env"
|
|
exit 1
|
|
fi
|
|
|
|
export FLYWAY_URL="jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}"
|
|
export FLYWAY_USER="$MYSQL_USER"
|
|
export FLYWAY_PASSWORD="$MYSQL_PASSWORD"
|
|
|
|
echo "Ensuring database '$MYSQL_DATABASE' exists..."
|
|
mysql -h"$MYSQL_HOST" -P"$MYSQL_PORT" -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" \
|
|
-e "CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
|
|
|
if [[ $? -ne 0 ]]; then
|
|
echo "Failed to create database or connect to MySQL. Check your credentials or server status."
|
|
exit 1
|
|
fi
|
|
|
|
./mvnw flyway:"$COMMAND"
|