diff --git a/deploy/db/migrate.sh b/deploy/db/migrate.sh new file mode 100755 index 0000000..5775d8c --- /dev/null +++ b/deploy/db/migrate.sh @@ -0,0 +1,70 @@ +#!/bin/bash + +# Exit on error +set -e + +if [[ -z "$1" ]]; then + echo "Usage: $0 " + exit 1 +fi +ENVR="$1" +if [[ "$ENVR" != "production" && "$ENVR" != "staging" ]]; then + echo "Error: environment must be 'production' or 'staging'." + exit 1 +fi + +if [[ -z "$2" ]]; then + echo "Usage: $0 " + exit 1 +fi +VER="$2" +re='^[0-9]+$' +if ! [[ $VER =~ $re ]] ; then + echo "Error: version not a number" >&2; exit 1 +fi + +BACKUP_FILE=$(/bin/bash ./test.sh "$ENVR" "$VER" | grep -oP '(?<=Backup created: ).*') +if [[ "$BACKUP_FILE" == "" ]]; then + echo "Error: backup failed" + exit 1 +fi + +# Get current datetime in YYYY-MM-DD-HHMM format +TIMESTAMP=$(date +"%Y-%m-%d-%H%M") + +# REAL VALUES +# ACTIVE_DIR="/home/deploy/$ENVR" +# DATA_DIR="/home/deploy/data/$ENVR" +# BACKUP_DIR="/home/deploy/data/backups/$ENVR" +# UPDATED_BACKUP="$BACKUP_DIR/${VER}-${TIMESTAMP}.db" +# UPDATED_COPY="$DATA_DIR/${VER}.db" +# UPDATED_LINK="$ACTIVE_DIR/${VER}.db" +# ##################################################################### +# TEST VALUES +ACTIVE_DIR="./deploy/$ENVR" +DATA_DIR="./deploy/data/$ENVR" +BACKUP_DIR="./deploy/data/backups/$ENVR" +UPDATED_BACKUP="$BACKUP_DIR/${VER}-${TIMESTAMP}.db" +UPDATED_COPY="$DATA_DIR/${VER}.db" +UPDATED_LINK="$ACTIVE_DIR/${VER}.db" + +# back to real code +# #################################################################### +cp $BACKUP_FILE $UPDATED_BACKUP +# #################################################################### +# do migration +echo "Migration in progress" + + + + + +# TODO: if failed delete updated_backup +echo "Migration completed" +# end migration +# #################################################################### + +cp $UPDATED_BACKUP $UPDATED_COPY +ln -s $UPDATED_COPY $UPDATED_LINK +echo "Upgraded database linked and ready for deploy" +exit 0 diff --git a/deploy/db/test.sh b/deploy/db/test.sh new file mode 100755 index 0000000..48b5a1e --- /dev/null +++ b/deploy/db/test.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Exit on error +set -e + +if [[ -z "$1" ]]; then + echo "Usage: $0 " + exit 1 +fi + +ENVR="$1" +if [[ "$ENVR" != "production" && "$ENVR" != "staging" ]]; then + echo "Error: environment must be 'production' or 'staging'." + exit 1 +fi +echo "random output" +echo "random output" +echo "random output" +echo "random output" +echo "random output" +echo "random output" +echo "random output" +echo "random output" +echo "random output" +echo "random output" +echo "random output" +echo "random output" +echo "random output" +echo "Error" +FILE="00001-2025-02-19-0927.db" +ACTIVE_DIR="./deploy/$ENVR" +DATA_DIR="./deploy/data/$ENVR" +BACKUP_DIR="./deploy/data/backups/$ENVR" +mkdir -p $ACTIVE_DIR +mkdir -p $DATA_DIR +mkdir -p $BACKUP_DIR +touch "$BACKUP_DIR/$FILE" +echo "Backup created: $BACKUP_DIR/$FILE"