Fix database check and creation (#23)

* Refactor db check and create

* Make exit more accurate
This commit is contained in:
Colin Seymour
2024-07-18 16:20:36 +01:00
committed by GitHub
parent 213a2205fc
commit 64f0213e30
3 changed files with 27 additions and 19 deletions
+9 -4
View File
@@ -2,8 +2,13 @@
# -*- bash -*-
# shellcheck shell=bash
if [[ "${1}" -ne 0 ]] && [[ "${1}" -ne 256 ]]; then
bashio::log.warning "Nginx crashed, halting add-on"
case "${1}" in
1)
bashio::log.error "Nginx encountered an error, halting add-on"
;;
*)
bashio::log.error "Nginx crashed, halting add-on"
;;
esac
/run/s6/basedir/bin/halt
fi
bashio::log.info "Nginx stopped, restarting..."
fi
+8 -2
View File
@@ -2,8 +2,14 @@
# -*- bash -*-
# shellcheck shell=bash
if [[ "${1}" -ne 0 ]] && [[ "${1}" -ne 256 ]]; then
bashio::log.warning "TeslaMate crashed, halting add-on"
case "${1}" in
1)
bashio::log.error "TeslaMate encountered an error, halting add-on"
;;
*)
bashio::log.error "TeslaMate crashed, halting add-on"
;;
esac
/run/s6/basedir/bin/halt
fi
bashio::log.info "TeslaMate stopped, restarting..."
+10 -13
View File
@@ -51,23 +51,20 @@ fi
# Create the PostgreSQL database if it doesn't exist
if pg_isready -h "$DATABASE_HOST" -p "$DATABASE_PORT" > /dev/null 2>&1; then
bashio::log.info "Creating database $DATABASE_NAME on $DATABASE_HOST"
bashio::log.info "Creating database '$DATABASE_NAME' on $DATABASE_HOST"
res=$(PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -c "CREATE DATABASE $DATABASE_NAME" 2>&1) || true
case "$res" in
"CREATE DATABASE")
if [[ -n $(PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -Atqc "\list $DATABASE_NAME") ]]; then
bashio::log.info "Database $DATABASE_NAME already exists"
else
if PGPASSWORD="$DATABASE_PASS" psql -h "$DATABASE_HOST" -p "$DATABASE_PORT" -U "$DATABASE_USER" postgres -qc "CREATE DATABASE \"$DATABASE_NAME\""; then
bashio::log.info "Database $DATABASE_NAME created"
;;
*"already exists"*)
bashio::log.info "Database $DATABASE_NAME already exists"
;;
*)
bashio::log.error "Failed to create database $DATABASE_NAME: $res"
else
bashio::log.error "Failed to create database $DATABASE_NAME"
exit 1
;;
esac
fi
fi
else
bashio::log.error "PostgreSQL is not ready"
bashio::log.error "PostgreSQL at '$DATABASE_HOST' is not ready or unreachable"
exit 1
fi