#!/bin/sh

set -e

XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"

RESOURCES_DIR="$XDG_DATA_HOME/kactivitymanagerd/resources"

if ! [ -e "$RESOURCES_DIR/database" ] ; then
	echo "No kactivitymanagerd database found, skipping integrity check"
	exit
fi

if sqlite3 "$RESOURCES_DIR/database" "PRAGMA integrity_check" ; then
	echo "Integrity check of $RESOURCES_DIR/database successful"
	exit
fi

echo "Integrity check of $RESOURCES_DIR/database failed! Trying to restore ..."

if [ -d "$RESOURCES_DIR/last-broken-database" ] ; then
	rm -r "$RESOURCES_DIR/last-broken-database"
fi
mkdir "$RESOURCES_DIR/last-broken-database"

for db_file in database database-wal database-shm ; do
	mv "$RESOURCES_DIR/$db_file" "$RESOURCES_DIR/last-broken-database/" || true
done

# Delete the often very large errors.log
rm "$RESOURCES_DIR/errors.log" || true

echo "Testing if the working-backup has a working database."
if [ -e "$RESOURCES_DIR/working-backup/database" ] && sqlite3 "$RESOURCES_DIR/working-backup/database" "PRAGMA integrity_check" ; then
	echo "Found working bakckup, trying to restore it."
	for db_file in database database-wal database-shm ; do
		if [ -e "$RESOURCES_DIR/working-backup/$db_file" ] ; then
			cp "$RESOURCES_DIR/working-backup/$db_file" "$RESOURCES_DIR/"
		else
			echo "Didn't find $db_file to restore, ignoring."
		fi
	done
	echo "Restoring successful!"
elif [ -f "/etc/skel/.local/share/kactivitymanagerd/resources/database" ] ; then
	echo "No working backup found, Restoing from /etc/skel/"
	cp "/etc/skel/.local/share/kactivitymanagerd/resources/database" "$RESOURCES_DIR/"
	echo "Restoring successful!"
else
	echo "Nothing to restore from found, letting kactivitymanagerd start over with a blank database."
fi


