#!/bin/bash

## #ddev-generated: If you want to edit and own this file, remove this line.
## Description: Run DBeaver against current db
## Usage: dbeaver
## Example: "ddev dbeaver [db] [user]"
## OSTypes: darwin,linux
## HostBinaryExists: /Applications/DBeaver.app,/usr/bin/dbeaver,/usr/bin/dbeaver-ce,/usr/bin/dbeaver-le,/usr/bin/dbeaver-ue,/usr/bin/dbeaver-ee,/var/lib/flatpak/exports/bin/io.dbeaver.DBeaverCommunity,/snap/bin/dbeaver-ce

if [ "${DDEV_PROJECT_STATUS}" != "running" ]; then
  echo "Project ${DDEV_PROJECT} is not running, starting it"
  ddev start
fi

database="${1:-db}"
user="${2:-root}"
type="$(echo $DDEV_DATABASE | sed 's/:.*//')"

if [ "${type}" = "postgres" ]; then
  type="postgresql"
  user="${2:-db}"
fi

# See: https://dbeaver.com/docs/wiki/Command-Line/#connection-parameters
CONNECTION="name=ddev-${DDEV_PROJECT}|driver=${type}|database=${database}|user=${user}|password=${user}|savePassword=true|host=127.0.0.1|port=${DDEV_HOST_DB_PORT}|openConsole=true|folder=DDEV"

case $OSTYPE in
  "linux-gnu")
    # Check for different binaries. Launch the first one found.
    BINARIES=(
      /usr/bin/dbeaver{,-ce,-le,-ue,-ee}
      /var/lib/flatpak/exports/bin/io.dbeaver.DBeaverCommunity
      /snap/bin/dbeaver-ce
    )
    for binary in "${BINARIES[@]}"; do
      if [ -x "$binary" ]; then
        echo "Launching $binary"
        $binary -con "$CONNECTION" &> /dev/null & disown
        exit 0
      fi
    done
    ;;
  "darwin"*)
    open -a dbeaver.app --args -con "$CONNECTION" &
    echo "Attempted to launch DBeaver.app"
    ;;
esac
