#!/bin/sh
set -e

echo "Do not stop in the middle of this upgrade, wait until you see the message: Upgrade complete."

echo "Stopping lemmy and all services..."
sudo docker compose stop

echo "Make sure postgres is started..."
sudo docker compose up -d postgres
echo "Waiting..."
sleep 20s

echo "Exporting the Database to 15_16.dump.sql ..."
sudo docker compose exec -T postgres pg_dumpall -c -U lemmy | sudo tee 15_16_dump.sql > /dev/null
echo "Done."

echo "Stopping postgres..."
sudo docker compose stop postgres
echo "Waiting..."
sleep 20s

echo "Removing the old postgres folder"
sudo rm -rf volumes/postgres

echo "Updating docker compose to use postgres version 16."
sudo sed -i "s/image: .*postgres:.*/image: docker.io\/postgres:16-alpine/" ./docker-compose.yml

echo "Starting up new postgres..."
sudo docker compose up -d postgres
echo "Waiting..."
sleep 20s

echo "Importing the database...."
sudo cat 15_16_dump.sql | sudo docker compose exec -T postgres psql -U lemmy
echo "Done."

echo "Starting up lemmy..."
sudo docker compose up -d

echo "A copy of your old database is at 15_16.dump.sql . You can delete this file if the upgrade went smoothly."
echo "Upgrade complete."