#!/bin/bash

SRCPATH=$(readlink -f "../../")

#
# You can pass latest version as first argument of this script
#
if [ -z "$1" ]; then
	read -p "Enter latest sql version ( leave blank to use : 0000_00_00_00 )" $version
	version=${version:-0000_00_00_00}
else
	version=$1
fi

source "./config.sh.dist" # "hack" to avoid missing conf variables

if [ -f "./config.sh"  ]; then
    source "./config.sh" # should overwrite previous
fi

echo "===== STARTING PROCESS ====="

gtversion=""

function assemble() {
	database=$1
	start_sql=$2

	var_full="DB_"$database"_PATHS"
	full=${!var_full}

	var_updates="DB_"$database"_UPDATE_PATHS"
	updates=${!var_updates}

	var_custom="DB_"$database"_CUSTOM_PATHS"
	custom=${!var_custom}


	suffix_base=""
	suffix_upd=""
	suffix_custom=""

	if (( $ALL_IN_ONE == 0 )); then
		suffix_base="_base"
	fi;

	echo "" > $OUTPUT_FOLDER$database$suffix_base".sql"


	if [ ! ${#full[@]} -eq 0 ]; then
		echo "Generating $OUTPUT_FOLDER$database$suffix_based ..."

		for entry in "${full[@]}"
	 	do
			if [ ! -z $entry ]; then
				if [ -e $entry ]; then 
	  				cat "$entry" >> $OUTPUT_FOLDER$database$suffix_base".sql"
				fi
			fi
		done
	fi

	if (( $ALL_IN_ONE == 0 )); then
		suffix_upd="_updates"

		echo "" > $OUTPUT_FOLDER$database$suffix_upd".sql"
	fi;

	if [ ! ${#updates[@]} -eq 0 ]; then
		echo "Generating $OUTPUT_FOLDER$database$suffix_upd ..."

		for d in "${updates[@]}"
	 	do
			for entry in "$d"/*.sql "$d"/**/*.sql
			do
			  if [ ! -z $d ]; then
				  file=$(basename $entry)
				  if [[ "$file" > "$start_sql" ]]
				  then
					if [ -e $entry ]; then 
						if [[ "$gtversion" < "$file" ]]; then
							gtversion=$file
						fi

				  		cat "$entry" >> $OUTPUT_FOLDER$database$suffix_upd".sql"
					fi
				  fi
			  fi
			done
		done
	fi

	if (( $ALL_IN_ONE == 0 )); then
		suffix_custom="_custom"

		echo "" > $OUTPUT_FOLDER$database$suffix_custom".sql"
	fi;

	

	if [ ! ${#custom[@]} -eq 0 ]; then
		echo "Generating $OUTPUT_FOLDER$database$suffix_custom ..."

		for d in "${custom[@]}"
	 	do
			if [ ! -z $d ]; then
				for entry in "$d"/*.sql "$d"/**/*.sql
				do
					if [ -e $entry ]; then 
			  			cat "$entry" >> $OUTPUT_FOLDER$database$suffix_custom".sql"
					fi
				done
			fi
		done
	fi
}

mkdir -p $OUTPUT_FOLDER

for db in ${DATABASES[@]}
do
	assemble "$db" $version".sql"
done

rm $OUTPUT_FOLDER"ZZZ_latest_version_"*
echo $gtversion > $OUTPUT_FOLDER"ZZZ_latest_version_"${gtversion%.*}

echo "===== DONE ====="

