#!/usr/bin/env bash
rm -f /var/lock/laravel_migration_underway \
	/var/lock/laravel_migration_complete

if [[ ${MIGRATE_ENABLE,,} == "on" ]]; then

	# Give a moment for services to wake up
	echo "[MIGRATION] Waiting until Laravel Ready."
	sleep 3
	until [[ -f /var/lock/laravel_ready ]]; do
		sleep 1
	done
	echo "[MIGRATION] Laravel is ready, running migrations..."

	cd /app || exit

	# Run migration
	touch /var/lock/laravel_migration_underway

	if [[ ${MIGRATE_CLEAN,,} == "on" ]]; then
		php /app/artisan migrate:fresh --force
		php /app/artisan migrate --force # First run will fail due to permissions. We can ignore, but need to migrate again to finish.
	else
		# If we run this on first commit, it is the same as migrate:fresh, first run may fail and we need to try one more time.
		php /app/artisan migrate --force || php /app/artisan migrate --force
	fi

	if [[ ${SEEDERS,,} == "on" ]]; then
		php /app/artisan db:seed -q
	fi

	rm /var/lock/laravel_migration_underway
	touch /var/lock/laravel_migration_complete
	echo "[MIGRATION] Migration complete!"

else
	echo "[MIGRATION] Not enabled. Set MIGRATE_ENABLE = on to enable."
fi

# Sleep forever (and sleep again in case the sleep process is killed)
while true; do
	sleep infinity
done