#!/bin/bash

## XXXvlab: this hook should go into a generic odoo image

## XXXvlab: should get location of code
CONFIG=$SERVICE_CONFIGSTORE/etc/odoo-server.conf

. lib/common

set -e

PASSWORD="$(relation-get password)"
USER="$(relation-get user)"
DBNAME="$(relation-get dbname)"
ADMIN_PASSWORD=$(relation-base-compose-get admin-password 2>/dev/null) || {
    if [ -e "$CONFIG" ]; then
        ADMIN_PASSWORD=$(grep ^admin_passwd "$CONFIG" | sed -r 's/^admin_passwd\s+=\s+(.+)$/\1/g')
    fi
    if [ -z "$ADMIN_PASSWORD" ]; then
        info "Generating odoo admin password"
        ADMIN_PASSWORD=$(gen_password)
    fi
}

control=$(echo -en "$USER\0$DBNAME\0$PASSWORD\0$ADMIN_PASSWORD" | md5_compat)

database=$(options-get database 2>/dev/null) || true
database="${database:-$DBNAME}"

config-add "\
services:
  $MASTER_BASE_SERVICE_NAME:
    command:
      - '--database=$database'
    ## All this is to please tecnativa image, but is quite redundant
    environment:
      PGHOST: \"$MASTER_TARGET_SERVICE_NAME\"
      PGDATABASE: \"$DBNAME\"
      PGPASSWORD: \"$PASSWORD\"
      PGUSER: \"$USER\"
      #DBFILTER: $DBNAME
      ADMIN_PASSWORD: \"$ADMIN_PASSWORD\"
"

[ "$control" == "$(relation-get control 2>/dev/null)" ] && exit 0


file_put $CONFIG <<EOF
[options]
admin_passwd = $ADMIN_PASSWORD
db_user = $USER
db_password = $PASSWORD
EOF

odoo_uid=$(get_odoo_uid)

chown "$odoo_uid" "$CONFIG" && chmod 600 "$CONFIG"


relation-set control "$control"

info "Configured $SERVICE_NAME code for $TARGET_SERVICE_NAME access."