#
# ** header v3.0
# This file is a part of the CaosDB Project.
#
# Copyright (C) 2018 Research Group Biomedical Physics,
# Max-Planck-Institute for Dynamics and Self-Organization Göttingen
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
# ** end header
#
SHELL=/bin/bash

INSTALL_SQL_FILE=db_5_0.sql

# The hostname, used by testing in the CI pipeline
SQL_HOST ?= mysql

.PHONY: test-connection
test-connection:
	./utils/make_db test-connection

.PHONY: upgrade
upgrade:
	@cd patches; ./applyPatches.sh --env=../.config

.PHONY: install
install: _install _grant upgrade

.PHONY: _install
_install:
	./utils/make_db install_db

.PHONY: _grant
_grant:
	./utils/make_db grant

# Drop the user and a given database
.PHONY: drop-%
drop-%:
	./utils/make_db drop $(patsubst drop-%,%,$@)

.PHONY: test
test:
	./utils/make_db test --fresh

# Run tests with a database which is started in a Docker container
.PHONY: test-docker
test-docker:
	@docker kill caosdb-mysqlserver-test || true
	@docker container rm caosdb-mysqlserver-test || true
	@docker run --name caosdb-mysqlserver-test -p "3306:3306" \
		-e MYSQL_ROOT_PASSWORD="pass-for-test" -d mariadb
	@sleep 10
	MAINPATH=$(realpath tests/docker_env) utils/make_db test --fresh
	@docker kill caosdb-mysqlserver-test
	@docker container rm caosdb-mysqlserver-test

# if automatic stopping failed
.PHONY: test-docker-stop
test-docker-stop:
	docker kill caosdb-mysqlserver-test
	docker container rm caosdb-mysqlserver-test

# Compile the standalone documentation
.PHONY: doc
doc:
	$(MAKE) -C doc html

# Run tests in a Gitlab pipeline
.PHONY: pipeline-test
pipeline-test:
	cp config.defaults .config
	echo 'DATABASE_USER_HOST_LIST="%,"' >> .config
	echo "MYSQL_USER_PASSWORD=$(MYSQL_ROOT_PASSWORD)" >> .config
	echo "MYSQL_HOST=$(SQL_HOST)" >> .config
	sleep 10
	make install
	./utils/make_db restore_db tests/example.dump.sql
	./tests/test_utils.sh
