#!/bin/sh


FIXTURE=$1
COMMIT=$2
FORCE=$3

help() {
    echo "USAGE: scripts/reset-database.sh [FIXTURE] [COMMIT]"
    echo " "
    echo "Parameters:"
    echo "   FIXTURE      A timestamp used in fixture name"
    echo "   COMMIT       A commit ID used by git checkout"
    echo " "
    echo "Example:"
    echo " scripts/reset-database.sh 20241110 cb69ece6ca5ba04e94dcc2758f53869c70224592"
}

bold=$(tput bold)
normal=$(tput sgr0)
echobold() {
    echo "${bold}$1${normal}"
}

if ! [ -n "$FORCE" ]; then
    nginx=`docker ps|grep nginx`
    if [ -n "$nginx" ]; then
        echo "WARNING: this script is probably run on a production server. Use a third parameter if you really want to run it."
        exit 3
    fi
fi

if ! [ -n "$FIXTURE" ]; then
    echo "No fixture defined. Abort."
    help
    exit 1
fi

if ! [ -n "$COMMIT" ]; then
    echo "No commit version defined. Abort."
    help
    exit 1
fi


FFILE=fixtures/postgres-backup-$FIXTURE.json

if ! [ -f "src/$FFILE" ]; then
    echo "ERROR: missing fixture file ($FFILE)"
    exit 2
fi




echo " "
echobold "WARNING: use Ctrl+C to stop the reset process since a 'no' answer cannot be detected."
echo " "

# remove all elements in database
echobold "Flush database"
docker exec -i agenda_culturel-backend python3 manage.py flush

# move back database structure to the original
echobold "Setup database structure to zero"
docker exec -i agenda_culturel-backend python3 manage.py migrate agenda_culturel zero

# reset code depending on a specific commit
echobold "Move back to the desired commit"
git checkout $COMMIT

# change database to reach this specific version
echobold "Setup database stucture according to the selected commit"
docker exec -i agenda_culturel-backend python3 manage.py migrate agenda_culturel

# remove all elements in database
echobold "Flush database"
docker exec -i agenda_culturel-backend python3 manage.py flush --no-input

# import data
echobold "Import data"
docker exec -i agenda_culturel-backend python3 manage.py loaddata --format=json $FFILE

# reset code to uptodate version
echobold "Move back to last commit"
git checkout main

# update database structure
echobold "Update database"
docker exec -i agenda_culturel-backend python3 manage.py migrate agenda_culturel

# copy media files
echobold "Copy media files"
cp src/agenda_culturel/migrations/images/* src/media/
