feat: 增强 gRPC 支持,优化注册函数和导入处理逻辑

This commit is contained in:
Rogee
2025-09-22 10:00:25 +08:00
parent 1e98d0eaff
commit 0cfc573960
4 changed files with 70 additions and 7 deletions

View File

@@ -368,11 +368,25 @@ func (p *MainParser) applyGrpcCompatibility(provider *Provider) {
}
// Set return type and register function
if provider.GrpcRegisterFunc == "" {
provider.GrpcRegisterFunc = provider.ReturnType
}
// Important: Save the original return type before setting it to contracts.Initial
originalReturnType := provider.ReturnType
provider.ReturnType = "contracts.Initial"
// Set gRPC register function name if not already set
if provider.GrpcRegisterFunc == "" {
if originalReturnType != "" && strings.Contains(originalReturnType, ".") {
// User specified a complete register function name, like userv1.RegisterUserServiceServer
provider.GrpcRegisterFunc = originalReturnType
} else {
// Generate default gRPC register function name
// Example: UserService -> RegisterUserServiceServer
provider.GrpcRegisterFunc = "Register" + strings.TrimPrefix(originalReturnType, "*") + "Server"
}
}
// Note: Package import handling for gRPC register functions is now done
// in resolveImportDependencies to ensure access to original file imports
// Add gRPC injection parameter
provider.InjectParams["__grpc"] = InjectParam{
Star: "*",