.PHONY: run test tidy vet lint

MODULE_DIRS := $(shell go list -f '{{.Dir}}' -m all | grep -v '/pkg/mod/')
DOCKER_COMPOSE := docker compose -f ./devops/docker-compose.yml

run:
	@echo "Run service"
	@cd cmd/service && go run .

test:
	@echo "Run tests"
	@for dir in $(MODULE_DIRS); do \
		echo "test $$dir..."; \
		(cd $$dir && go test ./...); \
	done

tidy:
	@echo "Run go mod tidy"
	@for dir in $(MODULE_DIRS); do \
		echo "tidy $$dir..."; \
		(cd $$dir && go mod tidy); \
	done

vet:
	@echo "Run go vet"
	@for dir in $(MODULE_DIRS); do \
		echo "vet $$dir..."; \
		(cd $$dir && go vet ./...); \
	done

lint:
	@echo "Run lint (autofix)"
	@for dir in $(MODULE_DIRS); do \
		echo "lint $$dir..."; \
		(cd $$dir && golangci-lint run --fix ./...); \
	done

dev-up:
	@echo "Bring up dockers"
	@$(DOCKER_COMPOSE) up -d postgres

dev-down:
	@echo "Bring down dockers"
	@$(DOCKER_COMPOSE) down postgres

db-logs:
	@$(DOCKER_COMPOSE) logs

run-service: dev-up
	@echo "Run service"
	@cd cmd/service && go run .

