#!/bin/bash
set -e

# Ensure the project's virtualenv binaries are on PATH so commands like
# 'uvicorn' work even when not prefixed by 'uv run'. This matches how uv
# installs the env into /app/.venv in our containers.
if [ -d "/app/.venv/bin" ]; then
  export PATH="/app/.venv/bin:$PATH"
fi

# Only the backend service should run migrations and init_db
# Celery workers should skip this to avoid race conditions
# Check if the first argument contains 'celery' - if so, skip migrations
if [[ "$1" == *"celery"* ]]; then
  echo "Starting Celery worker (skipping migrations)"
else
  echo "Starting Backend"

  # Apply database migrations
  # Avoid installing the project in editable mode (which tries to write egg-info)
  # when running inside a bind-mounted volume with restricted permissions.
  # See: https://github.com/astral-sh/uv (use --no-project to skip project build)
  uv run --no-project alembic upgrade head

  # Initialize database (creates first superuser if needed)
  uv run --no-project python app/init_db.py
fi

# Execute the command passed to docker run
exec "$@"