소스 검색

feat: Multi type server

chris 2 년 전
부모
커밋
be929a2632
7개의 변경된 파일49개의 추가작업 그리고 21개의 파일을 삭제
  1. 3 2
      cmd/server/main.go
  2. 2 2
      cmd/server/wire.go
  3. 3 3
      cmd/server/wire_gen.go
  4. 14 5
      internal/handler/user.go
  5. 5 4
      internal/repository/user.go
  6. 17 0
      internal/server/server.go
  7. 5 5
      internal/service/user.go

+ 3 - 2
cmd/server/main.go

@@ -12,13 +12,14 @@ func main() {
 	conf := config.NewConfig()
 	logger := log.NewLog(conf)
 
-	app, cleanup, err := newApp(conf, logger)
+	servers, cleanup, err := newApp(conf, logger)
 	if err != nil {
 		panic(err)
 	}
 	logger.Info("server start", zap.String("host", "http://localhost:"+conf.GetString("http.port")))
 
-	http.Run(app, fmt.Sprintf(":%d", conf.GetInt("http.port")))
+	//servers.
+	http.Run(servers.ServerHTTP, fmt.Sprintf(":%d", conf.GetInt("http.port")))
 	defer cleanup()
 
 }

+ 2 - 2
cmd/server/wire.go

@@ -4,7 +4,6 @@
 package main
 
 import (
-	"github.com/gin-gonic/gin"
 	"github.com/go-nunu/nunu-layout-advanced/internal/handler"
 	"github.com/go-nunu/nunu-layout-advanced/internal/repository"
 	"github.com/go-nunu/nunu-layout-advanced/internal/server"
@@ -33,11 +32,12 @@ var RepositorySet = wire.NewSet(
 	repository.NewUserRepository,
 )
 
-func newApp(*viper.Viper, *log.Logger) (*gin.Engine, func(), error) {
+func newApp(*viper.Viper, *log.Logger) (*server.Server, func(), error) {
 	panic(wire.Build(
 		RepositorySet,
 		ServiceSet,
 		HandlerSet,
+		server.NewServer,
 		server.NewServerHTTP,
 		sid.NewSid,
 		jwt.NewJwt,

+ 3 - 3
cmd/server/wire_gen.go

@@ -7,7 +7,6 @@
 package main
 
 import (
-	"github.com/gin-gonic/gin"
 	"github.com/go-nunu/nunu-layout-advanced/internal/handler"
 	"github.com/go-nunu/nunu-layout-advanced/internal/repository"
 	"github.com/go-nunu/nunu-layout-advanced/internal/server"
@@ -21,7 +20,7 @@ import (
 
 // Injectors from wire.go:
 
-func newApp(viperViper *viper.Viper, logger *log.Logger) (*gin.Engine, func(), error) {
+func newApp(viperViper *viper.Viper, logger *log.Logger) (*server.Server, func(), error) {
 	jwtJWT := jwt.NewJwt(viperViper)
 	handlerHandler := handler.NewHandler(logger)
 	sidSid := sid.NewSid()
@@ -33,7 +32,8 @@ func newApp(viperViper *viper.Viper, logger *log.Logger) (*gin.Engine, func(), e
 	userService := service.NewUserService(serviceService, userRepository)
 	userHandler := handler.NewUserHandler(handlerHandler, userService)
 	engine := server.NewServerHTTP(logger, jwtJWT, userHandler)
-	return engine, func() {
+	serverServer := server.NewServer(engine)
+	return serverServer, func() {
 	}, nil
 }
 

+ 14 - 5
internal/handler/user.go

@@ -16,11 +16,6 @@ type UserHandler interface {
 	UpdateProfile(ctx *gin.Context)
 }
 
-type userHandler struct {
-	*Handler
-	userService service.UserService
-}
-
 func NewUserHandler(handler *Handler, userService service.UserService) UserHandler {
 	return &userHandler{
 		Handler:     handler,
@@ -28,6 +23,20 @@ func NewUserHandler(handler *Handler, userService service.UserService) UserHandl
 	}
 }
 
+type userHandler struct {
+	*Handler
+	userService service.UserService
+}
+
+// Register godoc
+// @Summary ping example
+// @Schemes
+// @Description do ping
+// @Tags example
+// @Accept json
+// @Produce json
+// @Success 200 {string} Helloworld
+// @Router /example/helloworld [get]
 func (h *userHandler) Register(ctx *gin.Context) {
 	req := new(request.RegisterRequest)
 	if err := ctx.ShouldBindJSON(req); err != nil {

+ 5 - 4
internal/repository/user.go

@@ -14,15 +14,16 @@ type UserRepository interface {
 	GetByUsername(ctx context.Context, username string) (*model.User, error)
 }
 
-type userRepository struct {
-	*Repository
-}
-
 func NewUserRepository(r *Repository) UserRepository {
 	return &userRepository{
 		Repository: r,
 	}
 }
+
+type userRepository struct {
+	*Repository
+}
+
 func (r *userRepository) Create(ctx context.Context, user *model.User) error {
 	if err := r.db.Create(user).Error; err != nil {
 		return errors.Wrap(err, "failed to create user")

+ 17 - 0
internal/server/server.go

@@ -0,0 +1,17 @@
+package server
+
+import (
+	"github.com/gin-gonic/gin"
+)
+
+type Server struct {
+	ServerHTTP *gin.Engine
+	//ServerGRPC *grpc.Server
+	//ServerWS   *ws.Server
+}
+
+func NewServer(serverHTTP *gin.Engine) *Server {
+	return &Server{
+		ServerHTTP: serverHTTP,
+	}
+}

+ 5 - 5
internal/service/user.go

@@ -17,11 +17,6 @@ type UserService interface {
 	UpdateProfile(ctx context.Context, userId string, req *request.UpdateProfileRequest) error
 }
 
-type userService struct {
-	userRepo repository.UserRepository
-	*Service
-}
-
 func NewUserService(service *Service, userRepo repository.UserRepository) UserService {
 	return &userService{
 		userRepo: userRepo,
@@ -29,6 +24,11 @@ func NewUserService(service *Service, userRepo repository.UserRepository) UserSe
 	}
 }
 
+type userService struct {
+	userRepo repository.UserRepository
+	*Service
+}
+
 func (s *userService) Register(ctx context.Context, req *request.RegisterRequest) error {
 	// 检查用户名是否已存在
 	if user, err := s.userRepo.GetByUsername(ctx, req.Username); err == nil && user != nil {