#!/bin/bash

###############################################################################
# Script de actualizacion de una base de datos de BulmaCont
# (C) Tomeu Borras, Diciembre 2006
# Este documento es GPL
#------------------------------------------------------------------------------
# Parametros
#     $1 : --texto
#          --dialog (por defecto)
#     $2 : base de datos a ser 
###############################################################################

version=0.11.1

PSQL=/usr/lib/postgresql/8.3/bin/psql
echo "Utilizando "$PSQL

CREATEDB=/usr/lib/postgresql/8.3/bin/createdb
echo "Utilizando "$CREATEDB

CREATEUSER=/usr/lib/postgresql/8.3/bin/createuser
echo "Utilizando "$CREATEUSER

# SOLO APLICAMOS PARCHES A VERSIONES POSTERIORES A LA 0.5.9 
# Los otros parches son anticuados.
#parches[1]="/usr/share/bulmages/dbmodels/actualizar/revf-0_3_7.sql"
#parches[2]="/usr/share/bulmages/dbmodels/actualizar/revf-0_3_9.sql"
#parches[3]="/usr/share/bulmages/dbmodels/actualizar/revf-0.4.1.sql"
#parches[4]="/usr/share/bulmages/dbmodels/actualizar/revf-0.4.3.sql"
#parches[5]="/usr/share/bulmages/dbmodels/actualizar/revf-0.4.9.sql"
#parches[6]="/usr/share/bulmages/dbmodels/actualizar/revf-0.5.1.sql"
#parches[7]="/usr/share/bulmages/dbmodels/actualizar/revf-0.5.3.sql"
parches[8]="/usr/share/bulmages/dbmodels/actualizar/revf-0.5.9.sql"
parches[9]="/usr/share/bulmages/dbmodels/actualizar/revf-0.9.1.sql"
parches[10]="/usr/share/bulmages/dbmodels/actualizar/revf-0.9.3.sql"
parches[11]="/usr/share/bulmages/dbmodels/actualizar/revf-0.10.sql"

#Si el nmero de parametros no es el correcto salimos con un mensaje de error.
if [ "$2" = "" ]; then
   echo "actualizabulmafact [--texto | --dialog] database"
   exit
fi


#Buscamos el parametro para saber si es texto o no
if [ "$1" = "--texto" ]; then
  texto="1"
  ptexto="--texto"
else
  texto="0"
  ptexto="--dialog"
fi

#Borramos antiguos archivos que puedan dar problemas
if [ -e /tmp/errores.txt ]; then
   rm -f /tmp/errores.txt
fi
if [ -e /tmp/listdb.lst ]; then
   rm -f /tmp/listdb.lst
fi
if [ -e /tmp/listuser.lst ]; then
   rm -f /tmp/listuser.lst
fi
if [ -e /tmp/error.txt ]; then
   rm -f /tmp/error.txt
fi


# Esta funcion presenta mensajes por pantalla
function mensaje() {
   if [ ! -e /usr/bin/dialog -a ! -e /usr/bin/xdialog -o $texto = 1 ]; then
      echo -e "$2" "$1"  "$3"
   elif [ -e /usr/bin/xdialog ]; then
      xdialog --title "Actualizacion de BulmaGes $version" --backtitle "Asociacion Iglues" --msgbox "$1" 10 60
   else
      dialog --title "Actualizacion de BulmaGes $version" --backtitle "Asociacion Iglues" --msgbox "$1" 10 60
   fi
}

# Esta funcion presenta mensajes.
function info() {
   if [ ! -e /usr/bin/dialog -a ! -e /usr/bin/xdialog -o $texto = 1 ]; then
      echo -e  "$2" "$1"  "$3"
   elif [ -e /usr/bin/xdialog ]; then
      xdialog --title "Actualizacion de BulmaGes $version" --backtitle "Asociacion Iglues" --infobox "$1" 10 60
   else
      dialog --title "Actualizacion de BulmaGes $version" --backtitle "Asociacion Iglues" --infobox "$1" 10 60
   fi
}


function tiempo {
  sleep 1.5
}

function linea {
   if [ ! -e /usr/bin/dialog -a ! -e /usr/bin/xdialog -o $texto = 1 ]; then
     echo -e "\033[32m----------------------------------------------\033[0m\n"
   fi
}

# Comprobamos que la base de dato cumpla las caracteristicas deseadas.
linea
info "Comprobamos que sea una base de datos de bulmafact"
TIPO=`$PSQL -t $2 -c "SELECT valor FROM configuracion WHERE nombre='Tipo'" 2> /dev/null`
DBVERSION=`$PSQL -t $2 -c "SELECT valor FROM configuracion WHERE nombre='DatabaseRevision'" 2> /dev/null`
echo $TIPO " version " $DBVERSION
if [ ! "$TIPO" = " BulmaFact" ]; then
	info "No es una base de datos de BulmaFact"
	exit
fi
tiempo

linea
info "Realizamos backup de $2 en /tmp/backup no olvide poner el backup a buen recaudo"
if [ ! -e /tmp/backup ]; then
	mkdir /tmp/backup
fi

/usr/lib/postgresql/8.3/bin/pg_dump $2 > /tmp/backup/$2.pgdump
tiempo


# info "Procesando base de datos $database"
# Aplicando parches de BulmaCont
for j in "${parches[@]}"
     do
         # info "Comprobando la existencia de /usr/share/bulmages/$j"
               info "Aplicamos parche $j a $2"
               $PSQL $2 < $j 2> /dev/null >/dev/null
               tiempo
#        fi
done

 

