Files
smart-search-back/Makefile
vallyenfail cac4035560
All checks were successful
Deploy Smart Search Backend Test / deploy (push) Successful in 1m40s
add service
2026-01-20 12:21:27 +03:00

101 lines
4.0 KiB
Makefile

.PHONY: help build run migrate-up migrate-down migrate-create lint test test-integration test-coverage proto clean
help:
@echo "Available commands:"
@echo " make build - Build the service"
@echo " make run - Run the service"
@echo " make migrate-up - Apply migrations"
@echo " make migrate-down - Rollback migrations"
@echo " make migrate-create - Create new migration (usage: make migrate-create name=migration_name)"
@echo " make lint - Run golangci-lint"
@echo " make proto - Generate proto files"
@echo " make generate-mock - Generate mocks for all interfaces (minimock)"
@echo " make test - Run unit tests"
@echo " make test-integration - Run integration tests with testcontainers"
@echo " make test-coverage - Run tests with coverage report"
@echo " make clean - Clean build artifacts"
build:
@echo "Building server..."
@mkdir -p bin
go build -o bin/server cmd/server/main.go
@echo "Build complete: bin/server"
run:
@echo "Running server..."
go run cmd/server/main.go
migrate-up:
@echo "Applying migrations..."
goose -dir migrations postgres "$(DB_URL)" up
migrate-down:
@echo "Rolling back migrations..."
goose -dir migrations postgres "$(DB_URL)" down
migrate-create:
@echo "Creating migration: $(name)"
goose -dir migrations create $(name) sql
lint:
@echo "Running linter..."
golangci-lint run ./...
proto:
@echo "Generating proto files..."
@mkdir -p pkg/pb
@cd api/proto && protoc --go_out=../../pkg/pb --go_opt=paths=source_relative \
--go-grpc_out=../../pkg/pb --go-grpc_opt=paths=source_relative \
auth/auth.proto \
user/user.proto \
invite/invite.proto \
request/request.proto \
supplier/supplier.proto
@echo "Proto generation complete"
clean:
@echo "Cleaning build artifacts..."
rm -rf bin/
rm -rf pkg/pb/
@echo "Clean complete"
.PHONY: generate-mock
generate-mock:
@echo "Generating mocks for repository interfaces..."
@mkdir -p internal/mocks
@cd internal/repository && \
go run github.com/gojuno/minimock/v3/cmd/minimock@latest -i UserRepository -o ../mocks -p mocks -s "_mock.go" && \
go run github.com/gojuno/minimock/v3/cmd/minimock@latest -i SessionRepository -o ../mocks -p mocks -s "_mock.go" && \
go run github.com/gojuno/minimock/v3/cmd/minimock@latest -i InviteRepository -o ../mocks -p mocks -s "_mock.go" && \
go run github.com/gojuno/minimock/v3/cmd/minimock@latest -i RequestRepository -o ../mocks -p mocks -s "_mock.go" && \
go run github.com/gojuno/minimock/v3/cmd/minimock@latest -i SupplierRepository -o ../mocks -p mocks -s "_mock.go" && \
go run github.com/gojuno/minimock/v3/cmd/minimock@latest -i TokenUsageRepository -o ../mocks -p mocks -s "_mock.go"
@echo "Generating mocks for service interfaces..."
@cd internal/service && \
go run github.com/gojuno/minimock/v3/cmd/minimock@latest -i AuthService -o ../mocks -p mocks -s "_mock.go" && \
go run github.com/gojuno/minimock/v3/cmd/minimock@latest -i UserService -o ../mocks -p mocks -s "_mock.go" && \
go run github.com/gojuno/minimock/v3/cmd/minimock@latest -i InviteService -o ../mocks -p mocks -s "_mock.go" && \
go run github.com/gojuno/minimock/v3/cmd/minimock@latest -i RequestService -o ../mocks -p mocks -s "_mock.go" && \
go run github.com/gojuno/minimock/v3/cmd/minimock@latest -i SupplierService -o ../mocks -p mocks -s "_mock.go"
@echo "Mocks generated in internal/mocks/"
test:
@echo "Running unit tests..."
go test -v -short ./...
test-integration:
@echo "Running integration tests with testcontainers..."
@echo "This may take several minutes..."
go test -v -timeout=10m ./tests/...
test-coverage:
@echo "Running tests with coverage..."
@mkdir -p coverage
go test -timeout=10m -coverprofile=coverage/coverage.out -covermode=atomic ./...
go tool cover -func=coverage/coverage.out
go tool cover -html=coverage/coverage.out -o coverage/coverage.html
@echo "Coverage report: coverage/coverage.html"
# Default DB URL for local development
DB_URL ?= postgres://postgres:password@localhost:5432/b2b_data?sslmode=disable