| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #!/bin/bash
- set -e
- ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
- APP_PROPS="$ROOT_DIR/src/main/resources/application-postgres.properties"
- if [ -f "$ROOT_DIR/.env" ]; then
- export $(grep -v '^#' "$ROOT_DIR/.env" | xargs)
- fi
- get_prop() {
- grep "^$1=" "$APP_PROPS" | cut -d'=' -f2 | sed 's/${[^:]*:\([^}]*\)}/\1/' | tr -d '\r'
- }
- DB_URL=$(get_prop "spring.datasource.url")
- DB_USERNAME=$(get_prop "spring.datasource.username")
- DB_PASSWORD=$(get_prop "spring.datasource.password")
- DB_HOST=$(echo "$DB_URL" | sed -E 's|jdbc:postgresql://([^:/]+).*|\1|')
- DB_PORT=$(echo "$DB_URL" | sed -E 's|jdbc:postgresql://[^:/]+:([0-9]+).*|\1|')
- DB_NAME=$(echo "$DB_URL" | sed -E 's|.*/([^?]+)$|\1|')
- DB_PORT=${DB_PORT:-5432}
- INIT_SQL="$ROOT_DIR/src/main/resources/db/migration/postgresql/V1__init.sql"
- SEED_SQL="$ROOT_DIR/src/main/resources/db/migration/postgresql/V2__seed_company_role.sql"
- if ! command -v psql &> /dev/null; then
- echo "Erro: psql não encontrado. Instale o cliente PostgreSQL (psql)."
- exit 1
- fi
- DB_EXISTS=$(PGPASSWORD=$DB_PASSWORD psql -U "$DB_USERNAME" -h "$DB_HOST" -p "$DB_PORT" -d "postgres" -tAc "SELECT 1 FROM pg_database WHERE datname='$DB_NAME'")
- if [ "$DB_EXISTS" != "1" ]; then
- echo "Criando banco de dados '$DB_NAME'..."
- PGPASSWORD=$DB_PASSWORD psql -U "$DB_USERNAME" -h "$DB_HOST" -p "$DB_PORT" -d "postgres" -c "CREATE DATABASE \"$DB_NAME\";"
- else
- echo "Banco '$DB_NAME' já existe, prosseguindo..."
- fi
- echo "Executando migrations..."
- PGPASSWORD=$DB_PASSWORD psql -U "$DB_USERNAME" -h "$DB_HOST" -p "$DB_PORT" -d "$DB_NAME" -f "$INIT_SQL"
- echo "Executando seed..."
- PGPASSWORD=$DB_PASSWORD psql -U "$DB_USERNAME" -h "$DB_HOST" -p "$DB_PORT" -d "$DB_NAME" -f "$SEED_SQL"
- echo "Setup concluído com sucesso para o banco '$DB_NAME'."
|