OSDN Git Service

init s.ListNodes
authorHAOYUatHZ <haoyu@protonmail.com>
Thu, 29 Aug 2019 02:45:51 +0000 (10:45 +0800)
committerHAOYUatHZ <haoyu@protonmail.com>
Thu, 29 Aug 2019 02:45:51 +0000 (10:45 +0800)
toolbar/precog/api/handler.go [new file with mode: 0644]
toolbar/precog/api/server.go

diff --git a/toolbar/precog/api/handler.go b/toolbar/precog/api/handler.go
new file mode 100644 (file)
index 0000000..9c6a048
--- /dev/null
@@ -0,0 +1,14 @@
+package api
+
+import (
+       "github.com/gin-gonic/gin"
+
+       "github.com/vapor/toolbar/precog/database/orm"
+       serverCommon "github.com/vapor/toolbar/server"
+)
+
+type listNodesReq struct{ serverCommon.Display }
+
+func (s *Server) ListNodes(c *gin.Context, listNodesReq *listNodesReq, query *serverCommon.PaginationQuery) ([]*orm.Node, error) {
+       return nil, nil
+}
index e57247e..7ff0de1 100644 (file)
@@ -7,30 +7,37 @@ import (
        "github.com/jinzhu/gorm"
 
        "github.com/vapor/toolbar/precog/config"
-       "github.com/vapor/toolbar/precog/database/orm"
+       serverCommon "github.com/vapor/toolbar/server"
 )
 
-type server struct {
-       cfg *config.Config
-       db  *gorm.DB
+type Server struct {
+       cfg    *config.Config
+       db     *gorm.DB
+       engine *gin.Engine
 }
 
-func NewApiServer(cfg *config.Config, db *gorm.DB) *server {
-       return &server{
+func NewApiServer(cfg *config.Config, db *gorm.DB) *Server {
+       server := &Server{
                cfg: cfg,
                db:  db,
        }
+       if cfg.API.IsReleaseMode {
+               gin.SetMode(gin.ReleaseMode)
+       }
+       server.setupRouter()
+       return server
 }
 
-func (s *server) Run() {
-       router := gin.Default()
+func (s *Server) setupRouter() {
+       r := gin.Default()
+       r.Use(serverCommon.Middleware(s))
 
-       // router.POST("/list-nodes", listNodes)
+       v1 := r.Group("/api/v1")
+       v1.POST("/list-nodes", serverCommon.HandlerMiddleware(s.ListNodes))
 
-       router.Run(fmt.Sprintf(":%d", s.cfg.API.ListeningPort))
+       s.engine = r
 }
 
-// TODO: cannot use listNodes (type func(*gin.Context) ([]*orm.Node, error)) as type gin.HandlerFunc in argument to router.RouterGroup.POST
-func listNodes(_ *gin.Context) ([]*orm.Node, error) {
-       return nil, nil
+func (s *Server) Run() {
+       s.engine.Run(fmt.Sprintf(":%d", s.cfg.API.ListeningPort))
 }