# Start Backend API
#!/bin/bash

# Strict Mode
# set -e
# IFS=$'\n\t'

# Get PUID/PGID
PUID=${PUID:-911}
PGID=${PGID:-911}

add_user() {
    groupmod -o -g "$PGID" abc
    usermod -o -u "$PUID" abc
}

change_user() {
    # If container is started as root then create a new user and switch to it
    if [ "$(id -u)" = "0" ]; then
        add_user
        chown -R $PUID:$PGID /app

        echo "Switching to dedicated user"
        exec gosu $PUID "$BASH_SOURCE" "$@"
        elif [ "$(id -u)" = $PUID ]; then
        echo "
        User uid:    $PUID
        User gid:    $PGID
        "
    fi
}

init() {
    # $MEALIE_HOME directory
    cd /app

    # Activate our virtual environment here
    . /opt/pysetup/.venv/bin/activate

    # Initialize Database Prerun
    poetry run python /app/mealie/db/init_db.py
}

# change_user
init
GUNICORN_PORT=${API_PORT:-9000}

# Start API

if [ "$WEB_GUNICORN" == 'true' ]; then
    echo "Starting Gunicorn"
    gunicorn mealie.app:app -b 0.0.0.0:$GUNICORN_PORT -k uvicorn.workers.UvicornWorker -c /app/gunicorn_conf.py --preload &
else
    uvicorn mealie.app:app --host 0.0.0.0 --port $GUNICORN_PORT &
fi

# ------------------------------
# Start Frontend Nuxt Server
cd /app/frontend && yarn start -p 3000
