# Variable Definitions
UID := $(shell id -u)
GID := $(shell id -g)
WEBSERVER_NAME := webserver
REDIS_CONTAINER_NAME := redis

# Docker Network
NETWORK_NAME := shared

# Docker Compose Command
DOCKER_COMPOSE := DOCKER_UID=$(UID):$(GID) docker compose

BIN_MIGRATION := ./vendor/bin/doctrine-migrations

# Targets
build: stack_up build_containers composer
run: stack_up composer
up: stack_up composer
stop: stop_containers
down: stop_containers
clean: stop_containers remove_containers
logs: display_container_logs

stack_up:
	$(DOCKER_COMPOSE) up -d

build_containers:
	$(DOCKER_COMPOSE) build

stop_containers:
	$(DOCKER_COMPOSE) stop

remove_containers: stop_containers
	$(DOCKER_COMPOSE) rm -f

display_container_logs:
	$(DOCKER_COMPOSE) logs -f --tail=0 --follow

bash:
	$(DOCKER_COMPOSE) exec $(WEBSERVER_NAME) bash

# Composer
composer:
	$(DOCKER_COMPOSE) exec $(WEBSERVER_NAME) composer install --verbose

composer_update:
	$(DOCKER_COMPOSE) exec $(WEBSERVER_NAME) composer update --verbose

# Migration
migration_generate:
	$(DOCKER_COMPOSE) exec $(WEBSERVER_NAME) $(BIN_MIGRATION) generate

migrate:
	$(DOCKER_COMPOSE) exec $(WEBSERVER_NAME) $(BIN_MIGRATION) migrate --no-interaction --allow-no-migration

migrate_prev:
	$(DOCKER_COMPOSE) exec $(WEBSERVER_NAME) $(BIN_MIGRATION) migrate prev --no-interaction --allow-no-migration

migrate_test:
	$(DOCKER_COMPOSE) exec $(WEBSERVER_NAME) $(BIN_MIGRATION) migrate --no-interaction --allow-no-migration --db-configuration=./migrations-db-test.php
