#!/bin/bash # Script to import privy-users.csv into WhitelistAccounts table # Uses connection string from appsettings.ProductionRemote.json set -e # Exit on error # Get the directory where this script is located SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" CSV_FILE="$SCRIPT_DIR/privy-users.csv" SETTINGS_FILE="$PROJECT_ROOT/src/Managing.Api/appsettings.ProductionRemote.json" # Check if CSV file exists if [ ! -f "$CSV_FILE" ]; then echo "Error: CSV file not found at $CSV_FILE" exit 1 fi # Check if settings file exists if [ ! -f "$SETTINGS_FILE" ]; then echo "Error: Settings file not found at $SETTINGS_FILE" exit 1 fi # Extract connection string from JSON (using sed for macOS compatibility) CONNECTION_STRING=$(grep '"ConnectionString"' "$SETTINGS_FILE" | sed 's/.*"ConnectionString": "\([^"]*\)".*/\1/') if [ -z "$CONNECTION_STRING" ]; then echo "Error: Could not extract connection string from settings file" exit 1 fi # Parse connection string parameters (macOS compatible) HOST=$(echo "$CONNECTION_STRING" | sed -n 's/.*Host=\([^;]*\).*/\1/p') PORT=$(echo "$CONNECTION_STRING" | sed -n 's/.*Port=\([^;]*\).*/\1/p') DATABASE=$(echo "$CONNECTION_STRING" | sed -n 's/.*Database=\([^;]*\).*/\1/p') USERNAME=$(echo "$CONNECTION_STRING" | sed -n 's/.*Username=\([^;]*\).*/\1/p') PASSWORD=$(echo "$CONNECTION_STRING" | sed -n 's/.*Password=\([^;]*\).*/\1/p') # Export password for psql export PGPASSWORD="$PASSWORD" echo "Connecting to database: $DATABASE@$HOST:$PORT" echo "Importing from: $CSV_FILE" echo "" # Create SQL script as a here-document psql -h "$HOST" -p "$PORT" -U "$USERNAME" -d "$DATABASE" <