#!/usr/bin/env bash
set -e
echo echo “Message DB” echo echo “Update the message_store database” echo echo “WARNING:” echo “This script updates a pre-v1 message_store database to Message DB v1.x” echo “Do not run this script on a Message DB v1 database” echo echo “Fore more information about the changes made to the message store by” echo “this update, see: github.com/message-db/message-db/blob/master/database/update/1.0.0.md” echo echo “- Press CTRL+C to stop this script from running” echo “- Press RETURN to allow the script to proceed” echo read
function script_dir {
val="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" echo "$val"
}
base=“$(script_dir)/..” echo $base
echo echo “Updating Database” echo “Version: $(cat $base/VERSION.txt)” echo “= = =”
if [ -z ${DATABASE_NAME+x} ]; then
echo "(DATABASE_NAME is not set. Default will be used.)" database=message_store export DATABASE_NAME=$database
else
database=$DATABASE_NAME
fi echo
if [ -z ${PGOPTIONS+x} ]; then
export PGOPTIONS='-c client_min_messages=warning'
fi
function delete-extensions {
echo "» pgcrypto extension" psql $database -q -c "DROP EXTENSION IF EXISTS pgcrypto";
}
function delete-indexes {
echo "» messages_id_uniq_idx index" psql $database -q -c "DROP INDEX IF EXISTS messages_id_uniq_idx CASCADE"; echo "» messages_stream_name_position_uniq_idx index" psql $database -q -c "DROP INDEX IF EXISTS messages_stream_name_position_uniq_idx"; echo "» messages_category_global_position_idx index" psql $database -q -c "DROP INDEX IF EXISTS messages_category_global_position_idx";
}
function delete-views {
echo "» stream_summary view" psql $database -q -c "DROP VIEW IF EXISTS stream_summary CASCADE"; echo "» type_summary view" psql $database -q -c "DROP VIEW IF EXISTS type_summary CASCADE"; echo "» stream_type_summary view" psql $database -q -c "DROP VIEW IF EXISTS stream_type_summary CASCADE"; echo "» type_stream_summary view" psql $database -q -c "DROP VIEW IF EXISTS type_stream_summary CASCADE"; echo "» category_type_summary view" psql $database -q -c "DROP VIEW IF EXISTS category_type_summary CASCADE"; echo "» type_category_summary view" psql $database -q -c "DROP VIEW IF EXISTS type_category_summary CASCADE";
}
function delete-functions {
echo "» hash_64 function" psql $database -q -c "DROP FUNCTION IF EXISTS hash_64 CASCADE"; echo "» category function" psql $database -q -c "DROP FUNCTION IF EXISTS category CASCADE"; echo "» stream_version function" psql $database -q -c "DROP FUNCTION IF EXISTS stream_version CASCADE"; echo "» write_message function" psql $database -q -c "DROP FUNCTION IF EXISTS write_message CASCADE"; echo "» get_stream_messages function" psql $database -q -c "DROP FUNCTION IF EXISTS get_stream_messages CASCADE"; echo "» get_category_messages function" psql $database -q -c "DROP FUNCTION IF EXISTS get_category_messages CASCADE"; echo "» get_last_message function" psql $database -q -c "DROP FUNCTION IF EXISTS get_last_message CASCADE";
}
function delete-extensions {
echo "» pgcrypto extension" psql $database -q -c "DROP EXTENSION IF EXISTS pgcrypto CASCADE";
}
function create-schema {
echo "» message_store schema" psql $database -q -f $base/schema/message-store.sql
}
function add-table-to-schema {
echo "» messages table" psql $database -q -c "ALTER TABLE messages SET SCHEMA message_store";
}
function create-extensions {
echo "» pgcrypto extension" psql $database -q -f $base/extensions/pgcrypto.sql
}
function set-default-value {
echo "» id column" psql $database -q -c "ALTER TABLE message_store.messages ALTER COLUMN id SET DEFAULT gen_random_uuid()";
}
echo “Deleting Views” echo “- - -” delete-views echo
echo “Deleting Indexes” echo “- - -” delete-indexes echo
echo “Deleting Functions” echo “- - -” delete-functions echo
echo “Deleting Extensions” echo “- - -” delete-extensions echo
echo “Creating Schema” echo “- - -” create-schema echo
echo “Creating Extensions” echo “- - -” create-extensions echo
echo “Adding Table to Schema” echo “- - -” add-table-to-schema echo
echo “Set Default Value for ID Column” echo “- - -” set-default-value echo
# Install functions source $base/install-functions.sh
# Install indexes source $base/install-indexes.sh
# Install views source $base/install-views.sh
# Install privileges source $base/install-privileges.sh
echo “= = =” echo “Done Updating Database” echo “Version: $(cat $base/VERSION.txt)” echo