Skip to content

Commit 122276f

Browse files
committed
RHINENG-21786: add severity name to advisory detail API
1 parent 0fd4d50 commit 122276f

2 files changed

Lines changed: 20 additions & 27 deletions

File tree

docs/v3/openapi.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6220,6 +6220,9 @@
62206220
"severity": {
62216221
"type": "integer"
62226222
},
6223+
"severity_name": {
6224+
"type": "string"
6225+
},
62236226
"solution": {
62246227
"type": "string"
62256228
},

manager/controllers/advisory_detail.go

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package controllers
22

33
import (
44
"app/base/database"
5-
"app/base/models"
65
"app/base/utils"
76
"app/manager/config"
87
"app/manager/middlewares"
@@ -34,17 +33,22 @@ type AdvisoryDetailAttributes struct {
3433
Description string `json:"description"`
3534
ModifiedDate *time.Time `json:"modified_date"`
3635
PublicDate *time.Time `json:"public_date"`
37-
Topic string `json:"topic"`
36+
Topic string `json:"topic" query:"summary"`
3837
Synopsis string `json:"synopsis"`
3938
Solution *string `json:"solution"`
4039
AdvisoryTypeName string `json:"advisory_type_name"`
41-
Severity *int `json:"severity"`
40+
Severity *int `json:"severity" query:"severity_id"`
41+
SeverityName *string `json:"severity_name,omitempty"`
4242
Fixes *string `json:"fixes"`
43-
Cves datatypes.JSONSlice[string] `json:"cves" swaggertype:"array,string"`
44-
References []string `json:"references"`
43+
Cves datatypes.JSONSlice[string] `json:"cves" gorm:"column:cve_list" swaggertype:"array,string"`
44+
References []string `json:"references" query:"null" gorm:"-"`
4545
RebootRequired bool `json:"reboot_required"`
4646
ReleaseVersions datatypes.JSONSlice[string] `json:"release_versions" swaggertype:"array,string"`
47-
Packages datatypes.JSONSlice[string] `json:"packages" swaggertype:"array,string"`
47+
Packages datatypes.JSONSlice[string] `json:"packages" gorm:"column:package_data" swaggertype:"array,string"`
48+
}
49+
50+
func (AdvisoryDetailAttributes) TableName() string {
51+
return "advisory_metadata AS am"
4852
}
4953

5054
// @Summary Show me details an advisory by given advisory name
@@ -87,34 +91,20 @@ func AdvisoryDetailHandler(c *gin.Context) {
8791
}
8892

8993
func getAdvisoryFromDB(db *gorm.DB, advisoryName string) (*AdvisoryDetailResponse, error) {
90-
var advisory models.AdvisoryMetadata
94+
var advisory AdvisoryDetailAttributes
9195
err := db.Table(advisory.TableName()).
92-
Take(&advisory, "name = ?", advisoryName).Error
96+
Select("am.*", "sev.name as severity_name", "at.name as advisory_type_name").
97+
Joins("LEFT JOIN advisory_severity sev ON am.severity_id = sev.id").
98+
Joins("JOIN advisory_type at ON am.advisory_type_id = at.id").
99+
Take(&advisory, "am.name = ?", advisoryName).Error
93100
if err != nil {
94101
return nil, err
95102
}
96103

97-
ada := AdvisoryDetailAttributes{
98-
Description: advisory.Description,
99-
ModifiedDate: advisory.ModifiedDate,
100-
PublicDate: advisory.PublicDate,
101-
Topic: advisory.Summary,
102-
Synopsis: advisory.Synopsis,
103-
Solution: advisory.Solution,
104-
Severity: advisory.SeverityID,
105-
AdvisoryTypeName: database.AdvisoryTypes[advisory.AdvisoryTypeID],
106-
Fixes: nil,
107-
Cves: advisory.CveList,
108-
Packages: advisory.PackageData,
109-
References: []string{},
110-
RebootRequired: advisory.RebootRequired,
111-
ReleaseVersions: advisory.ReleaseVersions,
112-
}
113-
114104
var resp = AdvisoryDetailResponse{Data: AdvisoryDetailItem{
115-
ID: advisory.Name,
105+
ID: advisoryName,
116106
Type: "advisory",
117-
Attributes: ada,
107+
Attributes: advisory,
118108
}}
119109

120110
return &resp, nil

0 commit comments

Comments
 (0)