// ----------------------------------------------------------------------------- // ISbomRegistryRepository.cs // Sprint: SPRINT_8200_0013_0003_SCAN_sbom_intersection_scoring // Task: SBOM-8200-001 // Description: Repository interface for SBOM registry persistence // ----------------------------------------------------------------------------- using StellaOps.Concelier.SbomIntegration.Models; namespace StellaOps.Concelier.SbomIntegration; /// /// Repository for SBOM registration persistence. /// public interface ISbomRegistryRepository { #region Registration CRUD /// /// Saves or updates an SBOM registration. /// Task SaveAsync(SbomRegistration registration, CancellationToken cancellationToken = default); /// /// Gets an SBOM registration by digest. /// Task GetByDigestAsync(string digest, CancellationToken cancellationToken = default); /// /// Gets an SBOM registration by ID. /// Task GetByIdAsync(Guid id, CancellationToken cancellationToken = default); /// /// Lists registrations with pagination. /// Task> ListAsync( int offset, int limit, string? tenantId = null, CancellationToken cancellationToken = default); /// /// Deletes an SBOM registration by digest. /// Task DeleteAsync(string digest, CancellationToken cancellationToken = default); /// /// Counts total registrations. /// Task CountAsync(string? tenantId = null, CancellationToken cancellationToken = default); #endregion #region Match CRUD /// /// Saves SBOM matches (replaces existing). /// Task SaveMatchesAsync( Guid sbomId, IEnumerable matches, CancellationToken cancellationToken = default); /// /// Gets matches for an SBOM. /// Task> GetMatchesAsync( string digest, CancellationToken cancellationToken = default); /// /// Gets matches for a canonical advisory. /// Task> GetMatchesByCanonicalAsync( Guid canonicalId, CancellationToken cancellationToken = default); /// /// Deletes all matches for an SBOM. /// Task DeleteMatchesAsync(Guid sbomId, CancellationToken cancellationToken = default); #endregion #region Statistics /// /// Gets registry statistics. /// Task GetStatsAsync( string? tenantId = null, CancellationToken cancellationToken = default); /// /// Updates affected count for an SBOM. /// Task UpdateAffectedCountAsync( string digest, int affectedCount, CancellationToken cancellationToken = default); /// /// Updates last matched timestamp. /// Task UpdateLastMatchedAsync( string digest, DateTimeOffset lastMatched, CancellationToken cancellationToken = default); /// /// Updates the PURL list for an SBOM. /// Task UpdatePurlsAsync( string digest, IReadOnlyList purls, CancellationToken cancellationToken = default); #endregion }