github.com/khulnasoft-lab/tunnel-db@v0.0.0-20231117205118-74e1113bd007/pkg/db/vulnerability.go (about) 1 package db 2 3 import ( 4 "encoding/json" 5 6 bolt "go.etcd.io/bbolt" 7 "golang.org/x/xerrors" 8 9 "github.com/khulnasoft-lab/tunnel-db/pkg/types" 10 ) 11 12 const ( 13 vulnerabilityBucket = "vulnerability" 14 ) 15 16 func (dbc Config) PutVulnerability(tx *bolt.Tx, cveID string, vuln types.Vulnerability) error { 17 if err := dbc.put(tx, []string{vulnerabilityBucket}, cveID, vuln); err != nil { 18 return xerrors.Errorf("failed to put severity: %w", err) 19 } 20 return nil 21 } 22 23 func (dbc Config) GetVulnerability(cveID string) (vuln types.Vulnerability, err error) { 24 err = db.View(func(tx *bolt.Tx) error { 25 bucket := tx.Bucket([]byte(vulnerabilityBucket)) 26 value := bucket.Get([]byte(cveID)) 27 if value == nil { 28 return xerrors.Errorf("no vulnerability details for %s", cveID) 29 } 30 if err = json.Unmarshal(value, &vuln); err != nil { 31 return xerrors.Errorf("failed to unmarshal JSON: %w", err) 32 } 33 return nil 34 }) 35 if err != nil { 36 return types.Vulnerability{}, xerrors.Errorf("failed to get the vulnerability %q: %w", cveID, err) 37 } 38 return vuln, nil 39 }