-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathrouteshjt.go
More file actions
110 lines (93 loc) · 2.52 KB
/
routeshjt.go
File metadata and controls
110 lines (93 loc) · 2.52 KB
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
102
103
104
105
106
107
108
109
110
package main
import (
"encoding/json"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
"net/http"
"strconv"
)
func getHJTs(c *gin.Context) {
records := make([]HJT, 0)
err := Database.Find(&records).Error
if err != nil {
c.JSON(http.StatusInternalServerError, Error{Message: err.Error()})
return
}
c.JSON(http.StatusOK, records)
}
func getHJT(c *gin.Context) {
param := c.Param("id")
var tempId uint64
var err error
if tempId, err = strconv.ParseUint(param, 10, 32); err != nil {
c.JSON(http.StatusInternalServerError, Error{Message: err.Error()})
return
}
id := uint(tempId)
record := HJT{ID: id}
err = Database.Where(&record).First(&record).Error
if err != nil {
if err == gorm.ErrRecordNotFound {
c.Status(404)
} else {
c.JSON(http.StatusInternalServerError, Error{Message: err.Error()})
}
return
}
c.JSON(http.StatusOK, record)
}
func updateHJT(c *gin.Context) {
param := c.Param("id")
var tempId uint64
var err error
//if it's a POST and there isn't an id, it's okay, otherwise it's a PUT with an id
if c.Request.Method == http.MethodPost && param == "" {
} else if tempId, err = strconv.ParseUint(param, 10, 32); err != nil {
c.JSON(http.StatusInternalServerError, Error{Message: err.Error()})
return
}
var record HJT
err = json.NewDecoder(c.Request.Body).Decode(&record)
if err != nil {
c.JSON(http.StatusInternalServerError, Error{Message: err.Error()})
return
}
if tempId != 0 {
record.ID = uint(tempId)
}
if record.SeverityDescription != "" {
record.Severity = SeverityFromString(record.SeverityDescription)
} else {
record.SeverityDescription = record.Severity.ToString()
}
if record.MatchCriteria == "" {
record.MatchCriteria = record.Name
}
err = Database.Save(&record).Error
if err != nil {
c.JSON(http.StatusInternalServerError, Error{Message: err.Error()})
return
}
c.JSON(http.StatusOK, record)
}
func deleteHJT(c *gin.Context) {
param := c.Param("id")
var tempId uint64
var err error
//if it's a POST and there isn't an id, it's okay, otherwise it's a PUT with an id
if c.Request.Method == http.MethodPost && param == "" {
} else if tempId, err = strconv.ParseUint(param, 10, 32); err != nil {
c.JSON(http.StatusInternalServerError, Error{Message: err.Error()})
return
}
record := HJT{ID: uint(tempId)}
res := Database.Delete(&record)
if res.Error != nil {
c.JSON(http.StatusInternalServerError, Error{Message: res.Error.Error()})
return
} else if res.RowsAffected == 0 {
c.Status(http.StatusNotFound)
} else {
c.Status(http.StatusNoContent)
}
}