93 lines
2.2 KiB
Bash
Executable File
93 lines
2.2 KiB
Bash
Executable File
#!/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
|
|
|
|
|