repositories

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2026 License: AGPL-3.0 Imports: 26 Imported by: 0

Documentation

Overview

Copyright (C) 2024 Tim Bastin, l3montree GmbH

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

Index

Constants

This section is empty.

Variables

View Source
var CleanupOrphanedRecordsSQL = `` /* 1696-byte string literal not displayed */
View Source
var Module = fx.Options(
	fx.Provide(fx.Annotate(NewPATRepository, fx.As(new(shared.PersonalAccessTokenRepository)))),
	fx.Provide(fx.Annotate(NewAssetRepository, fx.As(new(shared.AssetRepository)))),
	fx.Provide(fx.Annotate(NewArtifactRiskHistoryRepository, fx.As(new(shared.ArtifactRiskHistoryRepository)))),
	fx.Provide(fx.Annotate(NewAssetVersionRepository, fx.As(new(shared.AssetVersionRepository)))),
	fx.Provide(fx.Annotate(NewStatisticsRepository, fx.As(new(shared.StatisticsRepository)))),
	fx.Provide(fx.Annotate(NewReleaseRepository, fx.As(new(shared.ReleaseRepository)))),
	fx.Provide(fx.Annotate(NewProjectRepository, fx.As(new(shared.ProjectRepository)))),
	fx.Provide(fx.Annotate(NewComponentRepository, fx.As(new(shared.ComponentRepository)))),
	fx.Provide(fx.Annotate(NewVulnEventRepository, fx.As(new(shared.VulnEventRepository)))),
	fx.Provide(fx.Annotate(NewOrgRepository, fx.As(new(shared.OrganizationRepository)))),
	fx.Provide(fx.Annotate(NewCVERepository, fx.As(new(shared.CveRepository)))),
	fx.Provide(fx.Annotate(NewCWERepository, fx.As(new(shared.CweRepository)))),
	fx.Provide(fx.Annotate(NewExploitRepository, fx.As(new(shared.ExploitRepository)))),
	fx.Provide(fx.Annotate(NewAffectedComponentRepository, fx.As(new(shared.AffectedComponentRepository)))),
	fx.Provide(fx.Annotate(NewDependencyVulnRepository, fx.As(new(shared.DependencyVulnRepository)))),
	fx.Provide(fx.Annotate(NewFirstPartyVulnerabilityRepository, fx.As(new(shared.FirstPartyVulnRepository)))),
	fx.Provide(fx.Annotate(NewInTotoLinkRepository, fx.As(new(shared.InTotoLinkRepository)))),
	fx.Provide(fx.Annotate(NewSupplyChainRepository, fx.As(new(shared.SupplyChainRepository)))),
	fx.Provide(fx.Annotate(NewAttestationRepository, fx.As(new(shared.AttestationRepository)))),
	fx.Provide(fx.Annotate(NewPolicyRepository, fx.As(new(shared.PolicyRepository)))),
	fx.Provide(fx.Annotate(NewLicenseRiskRepository, fx.As(new(shared.LicenseRiskRepository)))),
	fx.Provide(fx.Annotate(NewWebhookRepository, fx.As(new(shared.WebhookIntegrationRepository)))),
	fx.Provide(fx.Annotate(NewArtifactRepository, fx.As(new(shared.ArtifactRepository)))),
	fx.Provide(fx.Annotate(NewInvitationRepository, fx.As(new(shared.InvitationRepository)))),
	fx.Provide(fx.Annotate(NewExternalUserRepository, fx.As(new(shared.ExternalUserRepository)))),
	fx.Provide(fx.Annotate(NewComponentProjectRepository, fx.As(new(shared.ComponentProjectRepository)))),
	fx.Provide(fx.Annotate(NewGitLabIntegrationRepository, fx.As(new(shared.GitlabIntegrationRepository)))),
	fx.Provide(fx.Annotate(NewGitlabOauth2TokenRepository, fx.As(new(shared.GitLabOauth2TokenRepository)))),
	fx.Provide(fx.Annotate(NewAggregatedVulnRepository, fx.As(new(shared.VulnRepository)))),
	fx.Provide(fx.Annotate(NewGithubAppInstallationRepository, fx.As(new(shared.GithubAppInstallationRepository)))),
	fx.Provide(fx.Annotate(NewJiraIntegrationRepository, fx.As(new(shared.JiraIntegrationRepository)))),
	fx.Provide(fx.Annotate(NewCveRelationshipRepository, fx.As(new(shared.CVERelationshipRepository)))),
	fx.Provide(fx.Annotate(NewVEXRuleRepository, fx.As(new(shared.VEXRuleRepository)))),
	fx.Provide(fx.Annotate(NewExternalReferenceRepository, fx.As(new(shared.ExternalReferenceRepository)))),
)

Module provides all repository constructors as their interfaces

Functions

func BuildQualifierQuery

func BuildQualifierQuery(db *gorm.DB, qualifiers packageurl.Qualifiers, namespace string) *gorm.DB

BuildQualifierQuery creates the database query for qualifier matching

func BuildQueryBasedOnMatchContext

func BuildQueryBasedOnMatchContext(db *gorm.DB, ctx *normalize.PurlMatchContext) *gorm.DB

func NewAffectedComponentRepository

func NewAffectedComponentRepository(db *gorm.DB) *affectedCmpRepository

func NewArtifactRepository

func NewArtifactRepository(db *gorm.DB, synchronizer utils.FireAndForgetSynchronizer) *artifactRepository

func NewArtifactRiskHistoryRepository

func NewArtifactRiskHistoryRepository(db *gorm.DB) *artifactRiskHistoryRepository

func NewAssetRepository

func NewAssetRepository(db *gorm.DB) *assetRepository

func NewAssetVersionRepository

func NewAssetVersionRepository(db *gorm.DB) *assetVersionRepository

func NewAttestationRepository

func NewAttestationRepository(db *gorm.DB) *attestationRepository

func NewCVERepository

func NewCVERepository(db *gorm.DB) *cveRepository

func NewCWERepository

func NewCWERepository(db *gorm.DB) *cweRepository

func NewComponentProjectRepository

func NewComponentProjectRepository(db *gorm.DB) *componentProjectRepository

func NewComponentRepository

func NewComponentRepository(db *gorm.DB) *componentRepository

func NewConfigRepository

func NewConfigRepository(db *gorm.DB) *configRepository

func NewCveRelationshipRepository

func NewCveRelationshipRepository(db *gorm.DB) *cveRelationshipRepository

func NewDependencyVulnRepository

func NewDependencyVulnRepository(db *gorm.DB) *dependencyVulnRepository

func NewExploitRepository

func NewExploitRepository(db *gorm.DB) *exploitRepository

func NewExternalReferenceRepository

func NewExternalReferenceRepository(db *gorm.DB) shared.ExternalReferenceRepository

func NewExternalUserRepository

func NewExternalUserRepository(db *gorm.DB) *externalUserRepository

func NewFirstPartyVulnerabilityRepository

func NewFirstPartyVulnerabilityRepository(db *gorm.DB) *firstPartyVulnerabilityRepository

func NewGitLabIntegrationRepository

func NewGitLabIntegrationRepository(db *gorm.DB) *gitlabIntegrationRepository

func NewGithubAppInstallationRepository

func NewGithubAppInstallationRepository(db *gorm.DB) *githubAppInstallationRepository

func NewGitlabOauth2TokenRepository

func NewGitlabOauth2TokenRepository(db *gorm.DB) *gitlabOauth2TokenRepository

func NewInTotoLinkRepository

func NewInTotoLinkRepository(db *gorm.DB) *inTotoLinkRepository

func NewJiraIntegrationRepository

func NewJiraIntegrationRepository(db *gorm.DB) *jiraIntegrationRepository

func NewOrgRepository

func NewOrgRepository(db *gorm.DB) *orgRepository

func NewPATRepository

func NewPATRepository(db *gorm.DB) *gormPatRepository

func NewPolicyRepository

func NewPolicyRepository(db *gorm.DB) *policyRepository

func NewProjectRepository

func NewProjectRepository(db *gorm.DB) *projectRepository

func NewProjectRiskHistoryRepository

func NewProjectRiskHistoryRepository(db *gorm.DB) *projectRiskHistoryRepository

func NewReleaseRepository

func NewReleaseRepository(db *gorm.DB) *releaseRepository

func NewStatisticsRepository

func NewStatisticsRepository(db *gorm.DB) *statisticsRepository

func NewSupplyChainRepository

func NewSupplyChainRepository(db *gorm.DB) *supplyChainRepository

func NewVEXRuleRepository

func NewVEXRuleRepository(db *gorm.DB) *vexRuleRepository

func NewVulnEventRepository

func NewVulnEventRepository(db *gorm.DB) *eventRepository

func NewWebhookRepository

func NewWebhookRepository(db *gorm.DB) *webhookRepository

Types

type AggregatedVulnRepository

type AggregatedVulnRepository struct {
	// contains filtered or unexported fields
}

func NewAggregatedVulnRepository

func NewAggregatedVulnRepository(db *gorm.DB) *AggregatedVulnRepository

func (AggregatedVulnRepository) ApplyAndSave

func (a AggregatedVulnRepository) ApplyAndSave(tx *gorm.DB, vuln models.Vuln, vulnEvent *models.VulnEvent) error

func (AggregatedVulnRepository) FindByTicketID

func (a AggregatedVulnRepository) FindByTicketID(tx *gorm.DB, ticketID string) (models.Vuln, error)

func (AggregatedVulnRepository) GetOrgFromVuln

func (a AggregatedVulnRepository) GetOrgFromVuln(vuln models.Vuln) (models.Org, error)

func (AggregatedVulnRepository) Save

func (a AggregatedVulnRepository) Save(tx *gorm.DB, vuln *models.Vuln) error

func (AggregatedVulnRepository) Transaction

func (a AggregatedVulnRepository) Transaction(txFunc func(tx *gorm.DB) error) error

type GormRepository

type GormRepository[ID comparable, T utils.Tabler] struct {
	// contains filtered or unexported fields
}

func (*GormRepository[ID, T]) Activate

func (g *GormRepository[ID, T]) Activate(tx *gorm.DB, id ID) error

func (*GormRepository[ID, T]) All

func (g *GormRepository[ID, T]) All() ([]T, error)

func (*GormRepository[ID, T]) Begin

func (g *GormRepository[ID, T]) Begin() *gorm.DB

func (*GormRepository[ID, T]) Create

func (g *GormRepository[ID, T]) Create(tx *gorm.DB, t *T) error

func (*GormRepository[ID, T]) CreateBatch

func (g *GormRepository[ID, T]) CreateBatch(tx *gorm.DB, ts []T) error

func (*GormRepository[ID, T]) Delete

func (g *GormRepository[ID, T]) Delete(tx *gorm.DB, id ID) error

func (*GormRepository[ID, T]) DeleteBatch

func (g *GormRepository[ID, T]) DeleteBatch(tx *gorm.DB, m []T) error

func (*GormRepository[ID, T]) GetDB

func (g *GormRepository[ID, T]) GetDB(tx *gorm.DB) *gorm.DB

func (*GormRepository[ID, T]) List

func (g *GormRepository[ID, T]) List(ids []ID) ([]T, error)

func (*GormRepository[ID, T]) Read

func (g *GormRepository[ID, T]) Read(id ID) (T, error)

func (*GormRepository[ID, T]) Save

func (g *GormRepository[ID, T]) Save(tx *gorm.DB, t *T) error

func (*GormRepository[ID, T]) SaveBatch

func (g *GormRepository[ID, T]) SaveBatch(tx *gorm.DB, ts []T) error

func (*GormRepository[ID, T]) SaveBatchBestEffort

func (g *GormRepository[ID, T]) SaveBatchBestEffort(
	tx *gorm.DB,
	ts []T,
) error

func (*GormRepository[ID, T]) Transaction

func (g *GormRepository[ID, T]) Transaction(f func(tx *gorm.DB) error) error

func (*GormRepository[ID, T]) Upsert

func (g *GormRepository[ID, T]) Upsert(t *[]*T, conflictingColumns []clause.Column, updateOnly []string) error

type InvitationRepository

type InvitationRepository struct {
	utils.Repository[uuid.UUID, models.Invitation, *gorm.DB]
	// contains filtered or unexported fields
}

func NewInvitationRepository

func NewInvitationRepository(db *gorm.DB) *InvitationRepository

func (*InvitationRepository) FindByCode

func (g *InvitationRepository) FindByCode(code string) (models.Invitation, error)

func (*InvitationRepository) Save

func (g *InvitationRepository) Save(db *gorm.DB, invitation *models.Invitation) error

type LicenseRiskRepository

type LicenseRiskRepository struct {
	utils.Repository[string, models.LicenseRisk, *gorm.DB]
	// contains filtered or unexported fields
}

func NewLicenseRiskRepository

func NewLicenseRiskRepository(db *gorm.DB) *LicenseRiskRepository

func (*LicenseRiskRepository) ApplyAndSave

func (repository *LicenseRiskRepository) ApplyAndSave(tx *gorm.DB, licenseRisk *models.LicenseRisk, vulnEvent *models.VulnEvent) error

func (*LicenseRiskRepository) DeleteByComponentPurl

func (repository *LicenseRiskRepository) DeleteByComponentPurl(assetID uuid.UUID, assetVersionName string, pURL packageurl.PackageURL) error

func (*LicenseRiskRepository) GetAllLicenseRisksForAssetVersion

func (repository *LicenseRiskRepository) GetAllLicenseRisksForAssetVersion(assetID uuid.UUID, assetVersionName string) ([]models.LicenseRisk, error)

func (*LicenseRiskRepository) GetAllLicenseRisksForAssetVersionPaged

func (repository *LicenseRiskRepository) GetAllLicenseRisksForAssetVersionPaged(tx *gorm.DB, assetID uuid.UUID, assetVersionName string, pageInfo shared.PageInfo, search string, filter []shared.FilterQuery, sort []shared.SortQuery) (shared.Paged[models.LicenseRisk], error)

func (*LicenseRiskRepository) GetAllOverwrittenLicensesForAssetVersion

func (repository *LicenseRiskRepository) GetAllOverwrittenLicensesForAssetVersion(assetID uuid.UUID, assetVersionName string) ([]models.LicenseRisk, error)

func (*LicenseRiskRepository) GetByAssetID

func (repository *LicenseRiskRepository) GetByAssetID(tx *gorm.DB, assetID uuid.UUID) ([]models.LicenseRisk, error)

func (*LicenseRiskRepository) GetLicenseRisksByOtherAssetVersions

func (repository *LicenseRiskRepository) GetLicenseRisksByOtherAssetVersions(tx *gorm.DB, assetVersionName string, assetID uuid.UUID) ([]models.LicenseRisk, error)

func (*LicenseRiskRepository) ListByArtifactName

func (repository *LicenseRiskRepository) ListByArtifactName(assetVersionName string, assetID uuid.UUID, artifactName string) ([]models.LicenseRisk, error)

func (*LicenseRiskRepository) MaybeGetLicenseOverwriteForComponent

func (repository *LicenseRiskRepository) MaybeGetLicenseOverwriteForComponent(assetID uuid.UUID, assetVersionName string, pURL packageurl.PackageURL) (models.LicenseRisk, error)

func (*LicenseRiskRepository) Read

func (repository *LicenseRiskRepository) Read(vulnID string) (models.LicenseRisk, error)

type MaliciousPackageRepository

type MaliciousPackageRepository struct {
	// contains filtered or unexported fields
}

func NewMaliciousPackageRepository

func NewMaliciousPackageRepository(db *gorm.DB) *MaliciousPackageRepository

func (*MaliciousPackageRepository) BatchUpsertAffectedComponents

func (r *MaliciousPackageRepository) BatchUpsertAffectedComponents(components []models.MaliciousAffectedComponent, batchSize int) error

func (*MaliciousPackageRepository) BatchUpsertPackages

func (r *MaliciousPackageRepository) BatchUpsertPackages(packages []models.MaliciousPackage, batchSize int) error

BatchUpsert handles large batches by splitting them into chunks

func (*MaliciousPackageRepository) Count

func (r *MaliciousPackageRepository) Count() (int64, error)

func (*MaliciousPackageRepository) CountByEcosystem

func (r *MaliciousPackageRepository) CountByEcosystem() (map[string]int64, error)

func (*MaliciousPackageRepository) DeleteAll

func (r *MaliciousPackageRepository) DeleteAll() error

func (*MaliciousPackageRepository) GetDB

func (r *MaliciousPackageRepository) GetDB() *gorm.DB

func (*MaliciousPackageRepository) GetMaliciousAffectedComponents

func (r *MaliciousPackageRepository) GetMaliciousAffectedComponents(purl packageurl.PackageURL) ([]models.MaliciousAffectedComponent, error)

GetMaliciousAffectedComponents finds malicious packages for a given purl (similar to GetAffectedComponents)

func (*MaliciousPackageRepository) UpsertAffectedComponents

func (r *MaliciousPackageRepository) UpsertAffectedComponents(components []models.MaliciousAffectedComponent) error

func (*MaliciousPackageRepository) UpsertPackages

func (r *MaliciousPackageRepository) UpsertPackages(packages []models.MaliciousPackage) error

type VulnStats

type VulnStats struct {
	TotalRisk           float64 `json:"total_risk"`
	AvgRisk             float64 `json:"avg_risk"`
	MaxRisk             float64 `json:"max_risk"`
	DependencyVulnCount int64   `json:"dependencyVuln_count"`
	PackageName         string  `json:"package_name"`
}

type VulnerabilityRepository

type VulnerabilityRepository[T utils.Tabler] struct {
	utils.Repository[string, T, *gorm.DB]
	// contains filtered or unexported fields
}

func NewVulnerabilityRepository

func NewVulnerabilityRepository[T utils.Tabler](db *gorm.DB) *VulnerabilityRepository[T]

func (*VulnerabilityRepository[T]) FindByTicketID

func (r *VulnerabilityRepository[T]) FindByTicketID(tx *gorm.DB, ticketID string) (T, error)

func (*VulnerabilityRepository[T]) GetAllByAssetIDAndState

func (r *VulnerabilityRepository[T]) GetAllByAssetIDAndState(
	tx *gorm.DB,
	assetID uuid.UUID,
	state dtos.VulnState,
	durationSinceStateChange time.Duration,
) ([]T, error)

func (*VulnerabilityRepository[T]) GetAllOpenVulnsByAssetVersionNameAndAssetID

func (r *VulnerabilityRepository[T]) GetAllOpenVulnsByAssetVersionNameAndAssetID(tx *gorm.DB, assetVersionName string, assetID uuid.UUID) ([]T, error)

func (*VulnerabilityRepository[T]) GetAllVulnsByAssetID

func (r *VulnerabilityRepository[T]) GetAllVulnsByAssetID(tx *gorm.DB, assetID uuid.UUID) ([]T, error)

func (*VulnerabilityRepository[T]) GetByAssetID

func (r *VulnerabilityRepository[T]) GetByAssetID(
	tx *gorm.DB,
	assetID uuid.UUID,
) ([]T, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL