#!/usr/bin/env bash

# EXPERIMENTAL
#   Script to delete a test avatar.
#   To use exclusively on test environments.
#
# Really.
#
# I mean it.
#
# Seriously, don't use this on production


USAGE="$PGM /path/to/Robust.ini FirstName LastName \"/Avatar/Inventory/Folder/\""

BASEDIR=$(dirname $(dirname $(realpath "$0")))
. $BASEDIR/lib/os-helpers || exit 1
trap 'rm -rf $TMP* 2>/dev/null' EXIT

[ "$3" ] || end $? "$(usage)"
iniFile="$1"
FirstName=$2
LastName=$3
shift 3

[ -f "$iniFile" ] || end $? Ini file $iniFile not found
cleanupIni $iniFile > $TMP.ini
# iniExpandVariables $TMP.ini 2>/dev/null

ConnectionString=$(crudget $TMP.ini DatabaseService ConnectionString)
(
[ ! "$ConnectionString" ] && end 1 could not get connectionstring
echo "[client]"
echo "$ConnectionString" | tr ";" "\n" | egrep -v "Old Guid|^$" \
| sed -e "s/Data Source=/host=/" -e "s/User ID=/user=/" -e "s/Password=\(.*\)/password=\"\\1\"/" -e "s/Database=/database=/"
) > $TMP.my.cnf
sql && debug Database connection OK || end $? Error connection to the database

PrincipalID=$(sql "SELECT PrincipalID FROM UserAccounts WHERE FirstName='$FirstName' AND LastName='$LastName'")
[ "$PrincipalID" ] && debug $FirstName $LastName found with uuid $PrincipalID || end $? "Nobody's looking like $FirstName $LastName"

echo "Will delete $FirstName $LastName ($PrincipalID)" | grep --color "$FirstName $LastName"
echo "  $(sql "SELECT count(*) FROM UserAccounts WHERE PrincipalID='$PrincipalID'") user account"
echo "  $(sql "SELECT count(*) FROM auth WHERE UUID='$PrincipalID'") auth info"
echo "  $(sql "SELECT count(*) FROM GridUser WHERE UserID='$PrincipalID'") grid user"
echo "  $(sql "SELECT count(*) FROM Presence WHERE UserID='$PrincipalID'") grid user"
echo "  $(sql "SELECT count(*) FROM Avatars WHERE PrincipalID='$PrincipalID'") avatar appearance"
echo "  $(sql "SELECT count(*) FROM inventoryfolders WHERE agentID='$PrincipalID'") inventory folders"
echo "  $(sql "SELECT count(*) FROM inventoryitems WHERE avatarID='$PrincipalID'") inventory items"
echo "WARNING: this is highly experimental, only use in test environments."  | grep --color ".*"
if [ "$prompt" != "no" ]
then
  yesno "Really proceed?" || end Cancelled
fi
echo Proceeding
sql -v "DELETE FROM UserAccounts WHERE PrincipalID='$PrincipalID';"
sql -v "DELETE FROM GridUser WHERE UserID='$PrincipalID';"
sql -v "DELETE FROM Presence WHERE UserID='$PrincipalID';"
sql -v "DELETE FROM Avatars WHERE PrincipalID='$PrincipalID';"
sql -v "DELETE FROM inventoryfolders WHERE agentID='$PrincipalID';"
sql -v "DELETE FROM inventoryitems WHERE avatarID='$PrincipalID';"
sql -v "DELETE FROM auth WHERE UUID='$PrincipalID';"

echo Avatar $FirstName $LastName is probably deleted, unless otherwise mentioned above
