#!/usr/bin/env bash

SNOWSQL=$(which snowsql)
SQL_TEMPLATE='./create_database.sql'

function create_new_snowflake_database {
  # Create a Snowflake database from SQL template.

  printf '%s\n' "Creating Snowflake database"

  if [ -f ${SQL_TEMPLATE} ]; then
    printf '%s\n' "Stripping underscores for role name..."
    ROLE_DATABASE_NAME=$(echo ${DATABASE_NAME} | sed 's/_//g')
    printf '%s\n' "Database name is ${DATABASE_NAME}..."
    printf '%s\n' "Role name is ${ROLE_DATABASE_NAME}..."

    # Replace values and make backup
    printf '%s\n' "Replacing values in template file..."
    sed -i.bak -e 's/DATABASE_REPLACEME/'${DATABASE_NAME}'/g' -e 's/ROLE_REPLACEME/'${ROLE_DATABASE_NAME}'/g' ${SQL_TEMPLATE}
    ${SNOWSQL} -f ${SQL_TEMPLATE}

    # If successful, restore template from original 
    printf '%s\n' "Restoring template file..."
    mv ${SQL_TEMPLATE}.bak ${SQL_TEMPLATE}
  else
    printf '%s\n' "Database creation template not found. Expecting ${SQL_TEMPLATE}." && exit 1
  fi
}

while getopts 'd:h' flag; do
  case "${flag}" in
  d) DATABASE_NAME="${OPTARG}" ;;
  h) printf '%s\n'
     printf '%s\n' "This script automates the Snowflake database creation process"
     printf '%s\n'
     printf '%s\n' "-d: Specify database name"
     printf '%s\n' "-h: Print this message"
     printf '%s\n' "Example: ./create_snowflake_database.sh -d MYDATABASE"
     exit 0;;
  *) printf "Unexpected option ${flag}\n"
     exit 1 ;;
  esac
done

[ -n "${DATABASE_NAME}" ] && create_new_snowflake_database
