131 lines
5.3 KiB
Makefile
131 lines
5.3 KiB
Makefile
GO_CTL_NAME=goctl
|
|
GO_ZERO_STYLE=go_zero
|
|
GO ?= go
|
|
GOFMT ?= gofmt "-s"
|
|
GOFILES := $(shell find . -name "*.go")
|
|
LDFLAGS := -s -w
|
|
VERSION="v1.0.0"
|
|
DOCKER_REPO="refactor-service"
|
|
|
|
|
|
# 默認目標
|
|
.DEFAULT_GOAL := help
|
|
|
|
# 顏色定義
|
|
GREEN := \033[0;32m
|
|
YELLOW := \033[0;33m
|
|
NC := \033[0m # No Color
|
|
help: ## 顯示幫助訊息
|
|
@echo "$(GREEN)可用命令:$(NC)"
|
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " $(YELLOW)%-20s$(NC) %s\n", $$1, $$2}'
|
|
|
|
.PHONY: test
|
|
test: ## 進行測試
|
|
go test -v --cover ./...
|
|
|
|
.PHONY: gen-api
|
|
gen-api: ## 產生 api
|
|
goctl api go -api ./generate/api/gateway.api -dir . -style go_zero
|
|
|
|
.PHONY: gen-doc
|
|
gen-doc: ## 生成 Swagger 文檔
|
|
# go-doc openapi --api ./generate/api/gateway.api --filename gateway.json --host dev-api.truheart.com.tw --basepath /api/v1
|
|
go-doc -a generate/api/gateway.api -d ./ -f gateway -s openapi3.0
|
|
|
|
.PHONY: mock-gen
|
|
mock-gen: ## 建立 mock 資料
|
|
mockgen -source=./pkg/member/domain/repository/account.go -destination=./pkg/member/mock/repository/account.go -package=mock
|
|
mockgen -source=./pkg/member/domain/repository/account_uid.go -destination=./pkg/member/mock/repository/account_uid.go -package=mock
|
|
mockgen -source=./pkg/member/domain/repository/auto_id.go -destination=./pkg/member/mock/repository/auto_id.go -package=mock
|
|
mockgen -source=./pkg/member/domain/repository/user.go -destination=./pkg/member/mock/repository/user.go -package=mock
|
|
mockgen -source=./pkg/member/domain/repository/verify_code.go -destination=./pkg/member/mock/repository/verify_code.go -package=mock
|
|
mockgen -source=./pkg/member/domain/usecase/generate_uid.go -destination=./pkg/member/mock/usecase/generate_uid.go -package=mock
|
|
|
|
mockgen -source=./pkg/permission/domain/repository/permission.go -destination=./pkg/permission/mock/repository/permission.go -package=mock
|
|
mockgen -source=./pkg/permission/domain/repository/role.go -destination=./pkg/permission/mock/repository/role.go -package=mock
|
|
mockgen -source=./pkg/permission/domain/repository/role_permission.go -destination=./pkg/permission/mock/repository/role_permission.go -package=mock
|
|
mockgen -source=./pkg/permission/domain/repository/user_role.go -destination=./pkg/permission/mock/repository/user_role.go -package=mock
|
|
mockgen -source=./pkg/permission/domain/repository/token.go -destination=./pkg/permission/mock/repository/token.go -package=mock
|
|
mockgen -source=./pkg/permission/domain/usecase/permission.go -destination=./pkg/permission/mock/usecase/permission.go -package=mock
|
|
mockgen -source=./pkg/permission/domain/usecase/role.go -destination=./pkg/permission/mock/usecase/role.go -package=mock
|
|
mockgen -source=./pkg/permission/domain/usecase/role_permission.go -destination=./pkg/permission/mock/usecase/role_permission.go -package=mock
|
|
mockgen -source=./pkg/permission/domain/usecase/user_role.go -destination=./pkg/permission/mock/usecase/user_role.go -package=mock
|
|
mockgen -source=./pkg/permission/domain/usecase/token.go -destination=./pkg/permission/mock/usecase/token.go -package=mock
|
|
|
|
|
|
@echo "Generate mock files successfully"
|
|
|
|
.PHONY: fmt
|
|
fmt: ## 格式優化
|
|
$(GOFMT) -w $(GOFILES)
|
|
goimports -w ./
|
|
|
|
.PHONY: run
|
|
run: ## 運行專案
|
|
go run geteway.go
|
|
|
|
.PHONY: clean
|
|
clean: ## 清理編譯文件
|
|
rm -rf bin/
|
|
|
|
.PHONY: install
|
|
install: ## 安裝依賴
|
|
go mod tidy
|
|
go mod download
|
|
# go install -tags 'mongodb' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
|
|
# go get -u github.com/golang-migrate/migrate/v4/database/mongodb
|
|
|
|
|
|
# MongoDB Migration 環境變數(可覆寫)
|
|
MONGO_HOST ?= 127.0.0.1:27017
|
|
MONGO_DB ?= digimon
|
|
MONGO_USER ?= root
|
|
MONGO_PASSWORD ?= example
|
|
MONGO_AUTH_DB ?= admin
|
|
|
|
|
|
.PHONY: migrate-up
|
|
migrate-up: ## 執行 MongoDB migration (up) - 使用 mongosh + Docker
|
|
@echo "=== 執行 MongoDB Migration (UP) ==="
|
|
@echo "MongoDB: $(MONGO_HOST)/$(MONGO_DB)"
|
|
docker-compose -f ./build/docker-compose-migrate.yml run --rm \
|
|
-e MONGO_HOST=$(MONGO_HOST) \
|
|
-e MONGO_DB=$(MONGO_DB) \
|
|
-e MONGO_USER=$(MONGO_USER) \
|
|
-e MONGO_PASSWORD=$(MONGO_PASSWORD) \
|
|
-e MONGO_AUTH_DB=$(MONGO_AUTH_DB) \
|
|
migrate
|
|
|
|
.PHONY: migrate-down
|
|
migrate-down: ## 執行 MongoDB migration (down) - 使用 mongosh + Docker
|
|
@echo "=== 執行 MongoDB Migration (DOWN) ==="
|
|
@echo "MongoDB: $(MONGO_HOST)/$(MONGO_DB)"
|
|
docker-compose -f ./build/docker-compose-migrate.yml run --rm \
|
|
-e MONGO_HOST=$(MONGO_HOST) \
|
|
-e MONGO_DB=$(MONGO_DB) \
|
|
-e MONGO_USER=$(MONGO_USER) \
|
|
-e MONGO_PASSWORD=$(MONGO_PASSWORD) \
|
|
-e MONGO_AUTH_DB=$(MONGO_AUTH_DB) \
|
|
migrate sh -c " \
|
|
if [ -z \"$$MONGO_USER\" ] || [ \"$$MONGO_USER\" = \"\" ]; then \
|
|
MONGO_URI=\"mongodb://$$MONGO_HOST/$$MONGO_DB\"; \
|
|
else \
|
|
MONGO_URI=\"mongodb://$$MONGO_USER:$$MONGO_PASSWORD@$$MONGO_HOST/$$MONGO_DB?authSource=$$MONGO_AUTH_DB\"; \
|
|
fi && \
|
|
echo \"執行 MongoDB migration (DOWN)...\" && \
|
|
echo \"連接: $$MONGO_URI\" && \
|
|
for file in \$$(ls -1 /migrations/*.down.txt 2>/dev/null | sort -r); do \
|
|
echo \"執行: \$$(basename \$$file)\" && \
|
|
mongosh \"$$MONGO_URI\" --file \"\$$file\" || exit 1; \
|
|
done && \
|
|
echo \"✅ Migration DOWN 完成\" \
|
|
"
|
|
|
|
.PHONY: migrate-version
|
|
migrate-version: ## 查看已執行的 migration 文件列表
|
|
@echo "=== 已執行的 Migration 文件 ==="
|
|
@echo "注意:使用 mongosh 執行,無法追蹤版本"
|
|
@echo "Migration 文件列表:"
|
|
@ls -1 generate/database/mongo/*.up.txt | xargs -n1 basename
|
|
|