#!/usr/bin/env bash
set -e

script=$(basename "$0")
version="1.0.1"

help() {
    echo
    echo "$script"
    echo
    echo 'Description: Open psql shell in Postgres Docker container.'
    echo "Syntax: $script [-c|help]"
    echo 'Example: $script -c postgres01 -d odoo -s '\''SELECT id,name FROM res_partner LIMIT 10'\'''
    echo 'options:'
    echo '  -c    Docker container. Defaults to '\''postgres'\''.'
    echo '  -d    Name of database. Defaults to '\''postgres'\''.'
    echo '  -s    SQL query as string.'
    echo "  -V    Show $script version."
    echo "  help  Show $script manual."
    echo
}

if [[ "$1" == 'help' ]]; then
    help
    exit
fi

container=postgres
database=postgres

while getopts ':c: :d: :s: :V' opt; do
    case $opt in
        c) container="$OPTARG";;
        d) database="$OPTARG";;
        s) query="$OPTARG";;
        V) echo "$script version $version"
        exit 0
        ;;
        \?) echo "Invalid option -$OPTARG" >&2
        help
        exit;;
    esac
done

if [[ -n $query ]]; then
    echo "Execute SQL query in container $container on database $database."
    docker exec "$container" /bin/bash -c "psql postgresql://\$POSTGRES_USER:\$POSTGRES_PASSWORD@\$HOSTNAME/$database -c \"$query\""
else
    echo "Start psql shell in container $container on database $database."
    docker exec -it "$container" /bin/bash -c "psql postgresql://\$POSTGRES_USER:\$POSTGRES_PASSWORD@\$HOSTNAME/$database"
fi
