#!/bin/sh
set -e

run_as_www() {
    # prefer su-exec (alpine), fallback to runuser if available, otherwise run directly
    if command -v su-exec >/dev/null 2>&1; then
        su-exec www "$@"
    elif command -v runuser >/dev/null 2>&1; then
        runuser -u www -- "$@"
    else
        "$@"
    fi
}

# Build front-end assets if Vite manifest is missing
if [ ! -f /var/www/public/build/manifest.json ]; then
    echo "Building front-end assets (vite)..."
    run_as_www npm ci
    run_as_www npm run build
fi

# Wait for database directory to be mounted
if [ ! -f /var/www/database/database.sqlite ]; then
    echo "Creating database..."
    # create the sqlite file as the www user so ownership matches app files
    run_as_www sh -c 'touch /var/www/database/database.sqlite'
    run_as_www php artisan migrate --force
fi

# Fix storage permissions
echo "Fixing storage permissions..."
chown -R www:www /var/www/storage /var/www/bootstrap/cache
chmod -R 775 /var/www/storage /var/www/bootstrap/cache

# Execute the main command
exec "$@"
