gitee.com/woood2/luca@v1.0.4/cmd/backend/internal/assembly/route.go (about)

     1  package assembly
     2  
     3  import (
     4  	"gitee.com/woood2/luca/cmd/backend/internal/controller"
     5  	"gitee.com/woood2/luca/cmd/backend/internal/middleware"
     6  	"gitee.com/woood2/luca/internal/repository"
     7  	"gitee.com/woood2/luca/internal/service"
     8  	"gitee.com/woood2/luca/internal/status"
     9  	"github.com/gin-gonic/gin"
    10  	"go.uber.org/zap"
    11  	"gorm.io/gorm"
    12  	"log"
    13  )
    14  
    15  func RegisterHandler(project, entrance, env string, r *gin.Engine, logger *zap.Logger, db *gorm.DB) {
    16  	status.InitMetrics(project, entrance)
    17  	ln := &linker{
    18  		project:  project,
    19  		entrance: entrance,
    20  		logger:   logger,
    21  	}
    22  	r.GET("/hello", middleware.Metrics("hello"), middleware.Trace("hello"), func(c *gin.Context) {
    23  		//panic("wow")
    24  
    25  		//==sdk test==
    26  		//lucaClient.CheckPerm(trace.Ctx(c), 911, "hello")
    27  
    28  		//==mongo test==
    29  		//s := &repository.Student{
    30  		//	Name: "obama",
    31  		//	Age:  54,
    32  		//}
    33  		//if id, err := repository.CreateStudent(context.Background(), mydb.MongoDB(), s); err != nil {
    34  		//	c.String(500, err.Error())
    35  		//} else {
    36  		//	s:=id.(primitive.ObjectID).Hex()
    37  		//	t:=id.(primitive.ObjectID).Timestamp()
    38  		//	log.Printf("%s, %s, %v\n", id, s, t)
    39  		//}
    40  
    41  		//==redis test==
    42  		//str:=""
    43  		//cache.Redis().Get("name", &str)
    44  
    45  		c.String(200, "hello world!")
    46  	})
    47  
    48  	type HealthRequest struct {
    49  	}
    50  	type HealthResponse struct {
    51  		Status bool `json:"status"`
    52  	}
    53  	r.GET("/health", func(c *gin.Context) {
    54  		log.Println("consul check=1")
    55  		c.JSON(200, HealthResponse{Status: true})
    56  	})
    57  
    58  	authorized := r.Group("/")
    59  	authorized.Use(middleware.Auth())
    60  	{
    61  		//App management
    62  		appCtrl := controller.NewAppController(logger, env, service.NewAppServiceImpl(logger, db, repository.NewAppRepoImplFactory()))
    63  		authorized.POST("/apps", ln.res("app:create", appCtrl.Create)...)
    64  		authorized.PUT("/apps/:appkey", ln.res("app:edit", appCtrl.Edit)...)
    65  		authorized.GET("/apps/:appkey", ln.res("app:get", appCtrl.Get)...)
    66  		authorized.GET("/apps", ln.res("app:list", appCtrl.List)...)
    67  		authorized.DELETE("/apps/:appkey", ln.res("app:delete", appCtrl.Delete)...)
    68  		authorized.PUT("/apps/:appkey/disabled", ln.res("app:change", appCtrl.ChangeDisabled)...)
    69  		//More...
    70  	}
    71  }
    72  
    73  type linker struct {
    74  	project  string
    75  	entrance string
    76  	logger   *zap.Logger
    77  }
    78  
    79  func (ln *linker) res(name string, handler gin.HandlerFunc) []gin.HandlerFunc {
    80  	var m []gin.HandlerFunc
    81  	m = append(m,
    82  		middleware.Metrics(name),
    83  		middleware.Trace(ln.project+"-"+ln.entrance+"-"+name),
    84  		middleware.Perm(name),
    85  		middleware.Oplog(name, ln.logger),
    86  		handler,
    87  	)
    88  	return m
    89  }