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 }