Files
matrix-authentication-service/misc/sqlx_update.sh
2025-01-27 18:01:46 +00:00

36 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
set -eu
if [ "${DATABASE_URL+defined}" != defined ]; then
echo "You need to set DATABASE_URL"
exit 1
fi
if [ "$DATABASE_URL" = "postgres:" ]; then
# Hacky, but psql doesn't accept `postgres:` on its own like sqlx does
export DATABASE_URL="postgres:///"
fi
crates_dir=$(dirname $(realpath $0))"/../crates"
CRATES_WITH_SQLX="storage-pg syn2mas"
for crate in $CRATES_WITH_SQLX; do
echo "=== Updating sqlx query info for $crate ==="
if [ $crate = syn2mas ]; then
# We need to apply the syn2mas_temporary_tables.sql one-off 'migration'
# for checking the syn2mas queries
# not evident from the help text, but psql accepts connection URLs as the dbname
psql --dbname="$DATABASE_URL" --single-transaction --file="${crates_dir}/syn2mas/src/mas_writer/syn2mas_temporary_tables.sql"
fi
(cd "$crates_dir/$crate" && cargo sqlx prepare) || echo "(failed to prepare for $crate)"
if [ $crate = syn2mas ]; then
# Revert syn2mas temporary tables
psql --dbname="$DATABASE_URL" --single-transaction --file="${crates_dir}/syn2mas/src/mas_writer/syn2mas_revert_temporary_tables.sql"
fi
done