#!/usr/bin/with-contenv bash
# shellcheck shell=bash

cd /app || exit 1

if [[ -n ${DATABASE_URL} ]]; then
    DB_HOST=$(echo "${DATABASE_URL}" | awk -F '@' '{print $NF}' | awk -F ':' '{print $1}' | awk -F '/' '{print $1}')
    DB_PORT=$(echo "${DATABASE_URL}" | awk -F '@' '{print $NF}' | awk -F ':' '{print $2}' | awk -F '/' '{print $1}')
    if [[ ! ${DB_PORT} =~ [0-9]+ ]]; then DB_PORT="5432"; fi
    echo "Waiting for DB ${DB_HOST} to become available on port ${DB_PORT}..."
    END=$((SECONDS + 30))
    while [[ ${SECONDS} -lt ${END} ]] && [[ -n "${DB_HOST+x}" ]]; do
        if pg_isready -h "${DB_HOST}" -p "${DB_PORT}" -q; then
            if [[ ! -f /dbwait.lock ]]; then
                sleep 5
            fi
            touch /dbwait.lock
            break
        else
            sleep 1
        fi
    done
else
    echo "No database configured, sleeping..."
    sleep infinity
fi

s6-setuidgid abc node db/init.js

symlinks=(
    /app/public/user-avatars
    /app/public/project-background-images
    /app/private/attachments
)

shopt -s globstar dotglob

for i in "${symlinks[@]}"; do
    if [[ ! -L "$i" ]]; then
        mkdir -p /config/"$(basename "$i")"
        rm -rf "$i"
        ln -s /config/"$(basename "$i")" "$i"
    fi
done

shopt -u globstar dotglob

# permissions
lsiown -R abc:abc \
    /config

