Skip to content

Commit 581be71

Browse files
committed
adds automigrate, adds license risk deduplication
1 parent 1d5d3db commit 581be71

2 files changed

Lines changed: 36 additions & 5 deletions

File tree

integrationtestutil/db_init.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77

88
"github.com/l3montree-dev/devguard/internal/core"
99
"github.com/l3montree-dev/devguard/internal/database"
10+
"github.com/l3montree-dev/devguard/internal/database/models"
1011
"github.com/testcontainers/testcontainers-go"
1112
"github.com/testcontainers/testcontainers-go/modules/postgres"
1213
)
@@ -49,5 +50,26 @@ func InitDatabaseContainer(initDBSQLPath string) (core.DB, func()) {
4950
panic(err)
5051
}
5152

53+
// automigrate ALL models
54+
if err := db.AutoMigrate(
55+
&models.Org{},
56+
&models.Project{},
57+
&models.Asset{},
58+
&models.AssetVersion{},
59+
&models.CVE{},
60+
&models.DependencyVuln{},
61+
&models.VulnEvent{},
62+
&models.Exploit{},
63+
&models.ComponentDependency{},
64+
&models.LicenseRisk{},
65+
&models.AssetRiskHistory{},
66+
&models.ProjectRiskHistory{},
67+
&models.Weakness{},
68+
&models.GitLabIntegration{},
69+
); err != nil {
70+
log.Printf("failed to auto migrate models: %s", err)
71+
panic(err)
72+
}
73+
5274
return db, terminate
5375
}

internal/core/vuln/license_risk_service.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ func (service *LicenseRiskService) FindLicenseRisksInComponents(assetVersion mod
4747
//collect all risks before saving to the database, should be more efficient
4848
allLicenseRisks := []models.LicenseRisk{}
4949
allVulnEvents := []models.VulnEvent{}
50+
// track which license risks we've already processed to prevent duplicates
51+
processedLicenseRisks := make(map[string]struct{})
52+
5053
//go over every component and check if the license is a valid osi license; if not we can create a license risk with the provided information
5154
for _, component := range components {
5255

@@ -66,11 +69,17 @@ func (service *LicenseRiskService) FindLicenseRisksInComponents(assetVersion mod
6669
FinalLicenseDecision: "",
6770
ComponentPurl: component.Purl,
6871
}
69-
allLicenseRisks = append(allLicenseRisks, licenseRisk)
70-
ev := models.NewDetectedEvent(licenseRisk.CalculateHash(), models.VulnTypeLicenseRisk, "system", common.RiskCalculationReport{}, scannerID)
71-
// apply the event on the dependencyVuln
72-
ev.Apply(&licenseRisk)
73-
allVulnEvents = append(allVulnEvents, ev)
72+
73+
// Check if we've already processed this license risk to avoid duplicates
74+
riskHash := licenseRisk.CalculateHash()
75+
if _, processed := processedLicenseRisks[riskHash]; !processed {
76+
processedLicenseRisks[riskHash] = struct{}{}
77+
allLicenseRisks = append(allLicenseRisks, licenseRisk)
78+
ev := models.NewDetectedEvent(riskHash, models.VulnTypeLicenseRisk, "system", common.RiskCalculationReport{}, scannerID)
79+
// apply the event on the dependencyVuln
80+
ev.Apply(&licenseRisk)
81+
allVulnEvents = append(allVulnEvents, ev)
82+
}
7483
}
7584
}
7685
err = service.licenseRiskRepository.SaveBatch(nil, allLicenseRisks)

0 commit comments

Comments
 (0)