#!/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.9.1"


#Si el nmero de parametros no es el correcto salimos con un mensaje de error.
if [ "$2" = "" ]; then
   echo "actualizabulmacont [--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 bulmacont:"
TIPO=`psql -t $2 -c "SELECT valor FROM configuracion WHERE nombre='Tipo'" 2> /dev/null`
VERSION=`psql -t $2 -c "SELECT valor FROM configuracion WHERE nombre='DatabaseRevision'" 2> /dev/null`
echo $TIPO "version" $VERSION
if [ ! "$TIPO" = " BulmaCont" ]; then
	info "No es una base de datos de BulmaCont"
	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
pg_dump $2 > /tmp/backup/$2.pgdump
tiempo


# info "Procesando base de datos $database"
# Aplicando parches de BulmaCont
for j in `ls /usr/share/bulmages/dbmodels/actualizar/*.sql | grep rev- | sort 2> /dev/null`
     do
         # info "Comprobando la existencia de /usr/share/bulmages/$j"
 	if [ `echo $j | sed -r "s/[^0-9]//g"i` -gt `echo $VERSION | sed -r "s/[^0-9]//g"i` ]; then
               info "Aplicamos parche $j a $2"
       	       psql $2 < $j > /dev/null 2> /dev/null
	       tiempo
	fi
done

 

