@@ -2,7 +2,6 @@ package controllers
22
33import (
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" gorm:"column: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" gorm:"column: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
8993func 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