#!/bin/sh
#
# Extract Jupyter users from Magpie DB so we can send announcements to all
# Jupyter users.
#
# Environment variable EXTRACT_JUPYTER_USERS_FROM_MAGPIE_DB_QUERY can be set to
# customize the query in env.local.
#
#   Example: list all users, except those in group1 and group2
#
#     EXTRACT_JUPYTER_USERS_FROM_MAGPIE_DB_QUERY="${EXTRACT_JUPYTER_USERS_FROM_MAGPIE_DB_QUERY:-"
#     SELECT email,user_name
#     FROM users
#     WHERE id NOT IN
#       (SELECT user_id
#        FROM users_groups
#        WHERE group_id IN
#           (SELECT id FROM groups
#            WHERE group_name IN ('group1', 'group2')
#           )
#       )
#     ORDER BY email
#     "}"
#
# Sample output:
#
# $ ./scripts/extract-jupyter-users-from-magpie-db  > /tmp/out
# + echo SELECT email,user_name FROM users ORDER BY email
# + docker exec -i postgres-magpie psql -U postgres-magpie magpiedb
#
# $ cat /tmp/out
#          email          |   user_name
# ------------------------+---------------
#  admin-catalog@mail.com | admin-catalog
#  admin@mail.com         | admin
#  anonymous@mail.com     | anonymous
#  authtest@example.com   | authtest
# (4 rows)


THIS_FILE="$(readlink -f "$0" || realpath "$0")"
THIS_DIR="$(dirname "${THIS_FILE}")"
COMPOSE_DIR="${COMPOSE_DIR:-$(dirname "${THIS_DIR}")}"

if [ -f "${COMPOSE_DIR}/read-configs.include.sh" ]; then

    # Silence warnings in this simple script.
    export BIRDHOUSE_LOG_QUIET=True

    . "${COMPOSE_DIR}/read-configs.include.sh"

    # Get EXTRACT_JUPYTER_USERS_FROM_MAGPIE_DB_QUERY
    read_configs
fi

set -x

echo "${EXTRACT_JUPYTER_USERS_FROM_MAGPIE_DB_QUERY:="SELECT email,user_name FROM users ORDER BY email"}" | \
  docker exec -i postgres-magpie sh -c 'psql -U "${POSTGRES_USER}" "${POSTGRES_DB}"'
