Charm: oneiric/postgresql   Revision: 15   Hook: db-relation-joined
#!/bin/bash

[[ -f "$(dirname $0)/common.sh" ]] && source "$(dirname $0)/common.sh"

service_password_file="/var/lib/juju/${database}.${user}.password"
create_password() {
  password=`pwgen -s 16`
  echo ${password} > ${service_password_file}
}
has_password() {
  [ -f ${service_password_file} ] && password=`cat ${service_password_file}`
}
has_password || create_password

create_user() {
  sudo -su postgres psql -c"create user ${user} with superuser password '${password}'"
  if admin; then
    sudo -su postgres psql -c"alter user ${user} createdb createuser" 
  fi
}
has_user() {
  sudo -su postgres psql -c"select rolname from pg_roles;" | grep -q ${user}
}
has_user || create_user

create_database() {
  sudo -su postgres psql -c"create database ${database} owner ${user}" 
  sudo -su postgres psql -c"grant all privileges on database ${database} to ${user}"
}
has_database() {
  sudo -su postgres psql -c"select datname from pg_database;" | grep -q ${database}
}
admin || has_database || create_database

relation-set host=${host} \
             user=${user} \
             password=${password} \
             database=${database}