2023-03-22 17:22:27 -04:00
./scripts/jq-dep-check.sh
TMPDIR = ` mktemp -d 2>/dev/null || mktemp -d -t 'tmpConfigDir' `
DUMPDIR = ` mktemp -d 2>/dev/null || mktemp -d -t 'dumpDir' `
SCHEMA_VERSION = $1
echo "Creating databases"
docker exec mattermost-mysql mysql -uroot -pmostest -e "CREATE DATABASE migrated; CREATE DATABASE latest; GRANT ALL PRIVILEGES ON migrated.* TO mmuser; GRANT ALL PRIVILEGES ON latest.* TO mmuser"
echo " Importing mysql dump from version ${ SCHEMA_VERSION } "
docker exec -i mattermost-mysql mysql -D migrated -uroot -pmostest < $( pwd ) /scripts/mattermost-mysql-$SCHEMA_VERSION .sql
docker exec -i mattermost-mysql mysql -D migrated -uroot -pmostest -e " INSERT INTO Systems (Name, Value) VALUES ('Version', ' $SCHEMA_VERSION ') "
echo "Setting up config for db migration"
cat config/config.json | \
2024-01-11 11:48:20 -05:00
jq '.SqlSettings.DataSource = "mmuser:mostest@tcp(localhost:3306)/migrated?charset=utf8mb4&readTimeout=30s&writeTimeout=30s"' | \
2023-03-22 17:22:27 -04:00
jq '.SqlSettings.DriverName = "mysql"' > $TMPDIR /config.json
echo "Running the migration"
make ARGS = " db migrate --config $TMPDIR /config.json " run-cli
echo "Setting up config for fresh db setup"
cat config/config.json | \
2024-01-11 11:48:20 -05:00
jq '.SqlSettings.DataSource = "mmuser:mostest@tcp(localhost:3306)/latest?charset=utf8mb4&readTimeout=30s&writeTimeout=30s"' | \
2023-03-22 17:22:27 -04:00
jq '.SqlSettings.DriverName = "mysql"' > $TMPDIR /config.json
echo "Setting up fresh db"
make ARGS = " db migrate --config $TMPDIR /config.json " run-cli
if [ " $SCHEMA_VERSION " = = "5.0.0" ] ; then
for i in "ChannelMembers SchemeGuest" "ChannelMembers MsgCountRoot" "ChannelMembers MentionCountRoot" "Channels TotalMsgCountRoot" ; do
a = ( $i ) ;
echo " Ignoring known MySQL mismatch: ${ a [0] } . ${ a [1] } "
docker exec mattermost-mysql mysql -D migrated -uroot -pmostest -e " ALTER TABLE ${ a [0] } DROP COLUMN ${ a [1] } ; "
docker exec mattermost-mysql mysql -D latest -uroot -pmostest -e " ALTER TABLE ${ a [0] } DROP COLUMN ${ a [1] } ; "
done
fi
echo "Generating dump"
docker exec mattermost-mysql mysqldump --skip-opt --no-data --compact -u root -pmostest migrated > $DUMPDIR /migrated.sql
docker exec mattermost-mysql mysqldump --skip-opt --no-data --compact -u root -pmostest latest > $DUMPDIR /latest.sql
echo "Removing databases created for db comparison"
docker exec mattermost-mysql mysql -uroot -pmostest -e "DROP DATABASE migrated; DROP DATABASE latest"
echo "Generating diff"
git diff --word-diff= color $DUMPDIR /migrated.sql $DUMPDIR /latest.sql > $DUMPDIR /diff.txt
diffErrorCode = $?
if [ $diffErrorCode -eq 0 ] ; then
echo "Both schemas are same"
else
echo "Schema mismatch"
cat $DUMPDIR /diff.txt
fi
rm -rf $TMPDIR $DUMPDIR
exit $diffErrorCode