#!/bin/bash

if ! [ -x /usr/bin/pg_dropcluster ];then
    exit 0
fi

LOCK=/etc/eole/upgrade_postgresql.lock
rm -f $LOCK

. /usr/lib/eole/ihm.sh
PG_DIR=$(CreoleGet pg_data_directory)

# Si pas éolisé (variable absente), on ne gère pas
if [ -z "${PG_DIR:-}" ]; then
    EchoOrange "PostgreSQL non géré par EOLE (paramètre Creole 'pg_data_directory' absent) : saut du pré-upgrade PostgreSQL."
    exit 0
fi

avail=$(df "$PG_DIR" --output=avail -k|tail -n 1)
used=$(du "$PG_DIR" -k -s| awk '{ print $1 }')
if [ $avail -lt $used ]; then
    EchoOrange "Espace semble insuffisant pour migrer postgresql dans $PG_DIR"
    Question_ouinon "Voulez-vous continuer sans migrer la base de donnée ?"
    if [ ! $? = 0 ]; then
        EchoRouge "Annulation de la mise à jour"
        exit 1
    fi
    touch $LOCK
fi
# désinstalle postgis si existant
OLD_PACKAGES="$(dpkg-query -W -f='${Package}\t${Status}\n' postgresql-12-postgis* | awk '/ok installed/ {print $1}')"
if [ -n "${OLD_PACKAGES}" ]; then
    mkdir -p /tmp/Upgrade-Auto/postgis
    for pkg in ${OLD_PACKAGES}; do
        dpkg -L $pkg|grep "\/usr\/lib\/postgresql"|while read a; do
            if [ -f $a ]; then
                mkdir -p /tmp/Upgrade-Auto/postgis$(dirname $a)
                cp -a $a /tmp/Upgrade-Auto/postgis$a
            fi
        done
        dpkg -L $pkg|grep "\/usr\/share\/postgresql"|while read a; do
            if [ -f $a ]; then
                mkdir -p /tmp/Upgrade-Auto/postgis$(dirname $a)
                cp -a $a /tmp/Upgrade-Auto/postgis$a
            fi
        done
        # copie également des dépendances
        cd /tmp/Upgrade-Auto/postgis
        find -name *so|while read a; do
            ldd $a|grep "=>"|awk '{ print $3 }'|while read b; do
                mkdir -p .$(dirname $b)
                cp -nf $b .$b
            done
        done
    done
    apt remove -y --purge ${OLD_PACKAGES}
fi
# déstinstaller les extensions si existant
OLD_PACKAGES="$(dpkg-query -W -f='${Package}\t${Status}\n' postgresql-12-* | awk '/ok installed/ {print $1}')"
if [ -n "${OLD_PACKAGES}" ]; then
    mkdir -p /tmp/Upgrade-Auto/postgresql-extensions
    for pkg in ${OLD_PACKAGES}; do
        echo "$pkg" >> /tmp/Upgrade-Auto/postgresql-extensions.txt
        dpkg -L $pkg|grep "\/usr\/lib\/postgresql"|while read a; do
            if [ -f $a ]; then
                mkdir -p /tmp/Upgrade-Auto/postgresql-extensions$(dirname $a)
                cp -a $a /tmp/Upgrade-Auto/postgresql-extensions$a
            fi
        done
        dpkg -L $pkg|grep "\/usr\/share\/postgresql"|while read a; do
            if [ -f $a ]; then
                mkdir -p /tmp/Upgrade-Auto/postgresql-extensions$(dirname $a)
                cp -a $a /tmp/Upgrade-Auto/postgresql-extensions$a
            fi
        done
        # copie également des dépendances
        cd /tmp/Upgrade-Auto/postgresql-extensions
        find -name *so|while read a; do
            ldd $a|grep "=>"|awk '{ print $3 }'|while read b; do
                mkdir -p .$(dirname $b)
                cp -nf $b .$b
            done
        done
    done
    apt remove -y --purge ${OLD_PACKAGES}
fi
#pour eole-db
CreoleCat -t pg_hba.conf
systemctl start postgresql
exit 0
