Skip to content

Commit

Permalink
RHINENG-8141: resolve getAdvisoryMetadataByName code review comments
Browse files Browse the repository at this point in the history
- move slice-to-map logic into `getAdvisoryMetadataByNames` since all
  uses converted the returned slice into a map
- rename the function to `getAdvisoryMetadataIDs` to reflect changes
- propagate changes into functions that used `getAdvisoryMetadataByNames`
  • Loading branch information
Dugowitch committed Aug 13, 2024
1 parent 9c2cb62 commit 307a064
Showing 1 changed file with 14 additions and 16 deletions.
30 changes: 14 additions & 16 deletions evaluator/evaluate_advisories.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,11 @@ func lazySaveAndLoadAdvisories(system *models.SystemPlatform, vmaasData *vmaas.U
}

func loadMissingNamesIDs(missingNames []string, extendedAdvisories extendedAdvisoryMap) error {
advisoryMetadata, err := getAdvisoryMetadataByNames(missingNames)
name2AdvisoryID, err := getAdvisoryMetadataIDs(missingNames)
if err != nil {
return err
}

name2AdvisoryID := make(map[string]int64, len(advisoryMetadata))
for _, am := range advisoryMetadata {
name2AdvisoryID[am.Name] = am.ID
}

for _, name := range missingNames {
if _, found := name2AdvisoryID[name]; !found {
return errors.New("Failed to evaluate changes because an advisory was not lazy saved")
Expand Down Expand Up @@ -164,30 +159,33 @@ func storeMissingAdvisories(missingNames []string) error {
return tx.Clauses(clause.OnConflict{DoNothing: true}).Create(&toStore).Error
}

func getAdvisoryMetadataByNames(names []string) (models.AdvisoryMetadataSlice, error) {
func getAdvisoryMetadataIDs(names []string) (map[string]int64, error) {
metadata := make(models.AdvisoryMetadataSlice, 0, len(names))
err := database.DB.Model(&models.AdvisoryMetadata{}).
Where("name IN (?)", names).
Select("id, name").
Scan(&metadata).Error
return metadata, err
if err != nil {
return nil, err
}

name2AdvisoryID := make(map[string]int64, len(metadata))
for _, am := range metadata {
name2AdvisoryID[am.Name] = am.ID
}
return name2AdvisoryID, err
}

// GetMissingAdvisories determines if advisories from DB are properly stored based on advisory metadata existence.
func getMissingAdvisories(advisoryNames []string) ([]string, error) {
advisoryMetadata, err := getAdvisoryMetadataByNames(advisoryNames)
name2AdvisoryID, err := getAdvisoryMetadataIDs(advisoryNames)
if err != nil {
return nil, err
}

found := make(map[string]bool, len(advisoryNames))
for _, am := range advisoryMetadata {
found[am.Name] = true
}

missingNames := make([]string, 0, len(advisoryNames)-len(advisoryMetadata))
missingNames := make([]string, 0, len(advisoryNames)-len(name2AdvisoryID))
for _, name := range advisoryNames {
if !found[name] {
if _, found := name2AdvisoryID[name]; !found {
missingNames = append(missingNames, name)
}
}
Expand Down

0 comments on commit 307a064

Please sign in to comment.