-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.go
101 lines (87 loc) · 3.46 KB
/
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package main
import (
"github.com/gin-gonic/gin"
"github.com/trancongduynguyen1997/golang-crud-svc/handlers"
)
func setupRouter(
gwHandler *handlers.GatewayHandler,
areaHandler *handlers.AreaHandler,
dlHandler *handlers.DoorlockHandler,
glHandler *handlers.GatewayLogHandler,
sHdlr *handlers.StudentHandler,
eHdlr *handlers.EmployeeHandler,
cusHdlr *handlers.CustomerHandler,
scheHdlr *handlers.SchedulerHandler,
) *gin.Engine {
r := gin.Default()
r.Use(gin.Logger())
r.Use(gin.Recovery())
r.Use(CORSMiddleware())
v1R := r.Group("/v1")
{
// Gateway routes
v1R.GET("/gateways", gwHandler.FindAllGateway)
v1R.GET("/gateway/:id", gwHandler.FindGatewayByID)
v1R.POST("/gateway", gwHandler.CreateGateway)
v1R.PATCH("/gateway", gwHandler.UpdateGateway)
v1R.DELETE("/gateway", gwHandler.DeleteGateway)
v1R.DELETE("/gateway/:id/doorlock", gwHandler.DeleteGatewayDoorlock)
// Area routes
v1R.GET("/areas", areaHandler.FindAllArea)
v1R.GET("/area/:id", areaHandler.FindAreaByID)
v1R.POST("/area", areaHandler.CreateArea)
v1R.PATCH("/area", areaHandler.UpdateArea)
v1R.DELETE("/area", areaHandler.DeleteArea)
// Doorlock routes
v1R.GET("/doorlocks", dlHandler.FindAllDoorlock)
v1R.GET("/doorlock/:id", dlHandler.FindDoorlockByID)
v1R.POST("/doorlock", dlHandler.CreateDoorlock)
v1R.PATCH("/doorlock", dlHandler.UpdateDoorlock)
v1R.PATCH("/doorlock/cmd", dlHandler.UpdateDoorlockCmd)
v1R.DELETE("/doorlock", dlHandler.DeleteDoorlock)
// Student routes
v1R.GET("/students", sHdlr.FindAllStudent)
v1R.GET("/student/:mssv", sHdlr.FindStudentByMSSV)
v1R.POST("/student", sHdlr.CreateStudent)
v1R.PATCH("/student", sHdlr.UpdateStudent)
v1R.DELETE("/student", sHdlr.DeleteStudent)
v1R.POST("/student/:mssv/scheduler", sHdlr.AppendStudentScheduler)
// Employee routes
v1R.GET("/employees", eHdlr.FindAllEmployee)
v1R.GET("/employee/:msnv", eHdlr.FindEmployeeByMSNV)
v1R.POST("/employee", eHdlr.CreateEmployee)
v1R.PATCH("/employee", eHdlr.UpdateEmployee)
v1R.DELETE("/employee", eHdlr.DeleteEmployee)
v1R.POST("/employee/:msnv/scheduler", eHdlr.AppendEmployeeScheduler)
// Customer routes
v1R.GET("/customers", cusHdlr.FindAllCustomer)
v1R.GET("/customer/:cccd", cusHdlr.FindCustomerByCCCD)
v1R.POST("/customer", cusHdlr.CreateCustomer)
v1R.PATCH("/customer", cusHdlr.UpdateCustomer)
v1R.DELETE("/customer", cusHdlr.DeleteCustomer)
v1R.POST("/customer/:cccd/scheduler", cusHdlr.AppendCustomerScheduler)
// Scheduler routes
v1R.GET("/schedulers", scheHdlr.FindAllScheduler)
v1R.GET("/scheduler/:id", scheHdlr.FindSchedulerByID)
v1R.POST("/scheduler", scheHdlr.CreateScheduler)
v1R.PATCH("/scheduler", scheHdlr.UpdateScheduler)
v1R.DELETE("/scheduler", scheHdlr.DeleteScheduler)
// Gateway log routes
v1R.GET("/gatewayLogs", glHandler.FindAllGatewayLog)
v1R.GET("/gatewayLog/:id", glHandler.FindGatewayLogByID)
}
return r
}
func CORSMiddleware() gin.HandlerFunc {
return func(c *gin.Context) {
c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
c.Writer.Header().Set("Access-Control-Allow-Headers", "Authorization, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Accept, Origin, Cache-Control, X-Requested-With, User-Agent, Accept-Language, Accept-Encoding")
c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT")
if c.Request.Method == "OPTIONS" {
c.AbortWithStatus(204)
return
}
c.Next()
}
}