#!/bin/bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"

export $(grep -v '^#' "$PROJECT_DIR/.env.db" | xargs)

cd "$PROJECT_DIR"

if [[ $# -lt 1 ]]; then
    echo "Usage: bin/importdb <file.sql|file.sql.gz>" >&2
    exit 1
fi

SQL_FILE="$1"

if [[ ! -f "$SQL_FILE" ]]; then
    echo "Error: File not found: $SQL_FILE" >&2
    exit 1
fi

echo "Dropping and recreating database '${MARIADB_DATABASE}'..."
docker compose exec -T db mariadb -u root -p"${MARIADB_ROOT_PASSWORD}" \
    --execute "DROP DATABASE IF EXISTS \`${MARIADB_DATABASE}\`; CREATE DATABASE \`${MARIADB_DATABASE}\`;"

echo "Importing ${SQL_FILE} into '${MARIADB_DATABASE}'..."
if [[ "$SQL_FILE" == *.sql.gz ]]; then
    gunzip -c "$SQL_FILE" | docker compose exec -T db mariadb -u root -p"${MARIADB_ROOT_PASSWORD}" "${MARIADB_DATABASE}"
else
    docker compose exec -T db mariadb -u root -p"${MARIADB_ROOT_PASSWORD}" "${MARIADB_DATABASE}" < "$SQL_FILE"
fi

echo "Done: Database '${MARIADB_DATABASE}' imported successfully."
