/
server.go
58 lines (44 loc) · 979 Bytes
/
server.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package api
import (
"github.com/labstack/echo"
"github.com/labstack/echo/middleware"
"models"
"utils"
)
// Server : the echo server manager
type Server struct {
Db *models.DB
e *echo.Echo
}
type someRoutes interface {
mount()
}
type route struct {
group *echo.Group
db *models.DB
}
// Start : init routes and start the server
func (s *Server) Start() {
s.e = echo.New()
// get config params
port := utils.GetEnv("APP_PORT")
jwtSecret := utils.GetEnv("JWT_SECRET")
// some general middleware
s.e.Use(middleware.Logger())
s.e.Use(middleware.Recover())
// create the route groups
rootGroup := s.e.Group("")
userGroup := s.e.Group("/users")
// auth middleware
userGroup.Use(middleware.JWT([]byte(jwtSecret)))
// define base paths
routes := []someRoutes{
rootRoutes{route{rootGroup, s.Db}},
userRoutes{route{userGroup, s.Db}},
}
// wire up sub paths
for _, r := range routes {
r.mount()
}
s.e.Logger.Fatal(s.e.Start(":" + port))
}