# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=py3-tenant-schemas-celery
#_pkgreal is used by apkbuild-pypi to find modules at PyPI
_pkgreal=tenant-schemas-celery
pkgver=4.0.1
pkgrel=0
pkgdesc="Celery integration for django-tenant-schemas and django-tenants"
url="https://pypi.python.org/project/tenant-schemas-celery"
# loongarch64|s390x: blocked by py3-celery
arch="noarch !s390x !loongarch64"
license="MIT"
depends="py3-django-tenants py3-celery"
checkdepends="python3-dev py3-pytest py3-freezegun postgresql rabbitmq-server valkey procps-ng py3-django-celery-beat<2.8.0"
makedepends="py3-setuptools py3-gpep517 py3-wheel py3-pytest-django py3-pytest-cov"
source="
	$pkgname-$pkgver.tar.gz::https://codeload.github.com/maciej-gol/tenant-schemas-celery/tar.gz/refs/tags/$pkgver
	"
builddir="$srcdir/$_pkgreal-$pkgver"
subpackages="$pkgname-pyc"

build() {
	gpep517 build-wheel \
		--wheel-dir .dist \
		--output-fd 3 3>&1 >&2
}

check() {
	msg "Setting up valkey"
	valkey-server >/dev/null 2>&1 &

	export POSTGRES_DB=tenant_celery
	export POSTGRES_USER=tenant_celery
	export POSTGRES_PASSWORD="qwe123"

	msg "Setting up postgres"
	rm -Rf "$srcdir"/tmp
	initdb -D "$srcdir"/tmp
	postgres -D "$srcdir"/tmp --unix-socket-directories="$srcdir" > "$srcdir"/tmp/psql.log 2>&1 >/dev/null &

	trap "pkill postgres; pkill valkey-server; pkill rabbitmq-server; pkill -f 'python3 -m celery'" EXIT
	# wait for psql to be ready
	while ! pg_isready -h "$srcdir" > /dev/null 2>&1; do
		sleep 0.5
	done
	psql -h "$srcdir" -d postgres -c "CREATE ROLE $POSTGRES_USER PASSWORD '$POSTGRES_PASSWORD' INHERIT LOGIN;"
	psql -h "$srcdir" -d postgres -c "CREATE DATABASE $POSTGRES_DB OWNER $POSTGRES_USER ENCODING 'UTF-8';"
	psql -h "$srcdir" -d postgres -c "ALTER USER $POSTGRES_USER WITH SUPERUSER;"

	msg "Setting up rabbitmq"
	# generate test config file to use test certs that are taken from
	# Dockerfile in tarred source code
	mkdir -p "$srcdir"/rabbitmq-tests
	echo "loopback_users = none
ssl_options.fail_if_no_peer_cert = false
" > "$srcdir"/rabbitmq-tests/server.conf
	RABBITMQ_CONFIG_FILE="$srcdir"/rabbitmq-tests/server.conf \
		RABBITMQ_SERVER_ERL_ARGS="-setcookie rabbit" \
		RABBITMQ_LOG_BASE="$srcdir"/rabbitmq-tests/log \
		RABBITMQ_PID_FILE="$srcdir"/rabbitmq-tests/rabbit.pid \
		RABBITMQ_MNESIA_BASE="$srcdir"/rabbitmq-tests/mnesia \
		rabbitmq-server > /dev/null 2>&1 &
	sleep 5 # Wait for rabbitmq to start

	msg "Testing $pkgname"
	python3 -m venv --clear --without-pip --system-site-packages .testenv
	.testenv/bin/python3 -m installer .dist/*.whl

	cd test_app

	export DJANGO_SETTINGS_MODULE=test_app.settings

	../.testenv/bin/python3 -m coverage run manage.py makemigrations
	../.testenv/bin/python3 -m celery -A tenant_schemas_celery.test_app:app worker -l INFO >/dev/null 2>&1 &
	sleep 5 # wait for Celery to start
	../.testenv/bin/python3 -m pytest -v ../.testenv/lib/python3.12/site-packages/tenant_schemas_celery

	pkill -f "python3 -m celery"
	pkill rabbitmq-server
	pkill valkey-server
	pkill postgres
}

package() {
	python3 -m installer -d "$pkgdir" \
		.dist/*.whl
}

sha512sums="
fa9d9ab98e23611a1d9eb7d0096345c2f33a923b42e45cff7c5006c3689fd57b4185704ea09707e9e9b04540d814b8fd61b5524a957da1e0b07e7303ddec08ba  py3-tenant-schemas-celery-4.0.1.tar.gz
"
