#!/bin/bash

# Start SQL Server
/opt/mssql/bin/sqlservr &

# Wait for SQL Server to start
echo "Waiting for SQL Server to start..."
sleep 30s

# Initialize database
for i in {1..50};
do
    sqlcmd -S localhost -U sa -P $SA_PASSWORD -Q "SELECT 1" &> /dev/null
    if [ $? -eq 0 ]
    then
        echo "SQL Server is ready"
        break
    else
        echo "SQL Server is not ready yet..."
        sleep 1
    fi
done

# Create st-database if it doesn't exist
echo "Creating st-database if it doesn't exist..."
sqlcmd -S localhost -U sa -P $SA_PASSWORD -Q "IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = 'st-database') CREATE DATABASE [st-database]"
if [ $? -ne 0 ]; then
    echo "Error creating database"
    exit 1
fi

# Run the initialization script
echo "Running initialization script..."
sqlcmd -S localhost -U sa -P $SA_PASSWORD -d st-database -i /usr/src/app/init.sql
if [ $? -ne 0 ]; then
    echo "Error executing initialization script"
    exit 1
fi

# Run all schema scripts in the schemas directory
echo "Running schema scripts..."
for f in /usr/src/app/schemas/*.sql
do
    echo "Processing $f..."
    
    # Create a temporary file
    temp_file=$(mktemp)
    
    # Process the file: add newlines around GO statements
    sed 's/GO/\nGO\n/g' "$f" > "$temp_file"
    
    # Execute the processed file
    sqlcmd -S localhost -U sa -P $SA_PASSWORD -d st-database -i "$temp_file"
    if [ $? -ne 0 ]; then
        echo "Warning: Script $f had some errors but continuing..."
        rm "$temp_file"  # Clean up temp file
        continue
    fi
    
    # Clean up temp file
    rm "$temp_file"
done

echo "All scripts executed. SQL Server is ready."

# Keep container running
while true; do
    sleep 1
done