// ----------------------------------------------------------------------------- // PostgresArtifactIndexRepository.Mutate.cs // Sprint: SPRINT_20260118_017_Evidence_artifact_store_unification // Task: AS-003 - Create ArtifactStore PostgreSQL index // Description: Mutation operations for the artifact repository // ----------------------------------------------------------------------------- namespace StellaOps.Artifact.Infrastructure; public sealed partial class PostgresArtifactIndexRepository { /// public async Task GetAsync( string bomRef, string serialNumber, string artifactId, CancellationToken ct = default) { var results = await QueryAsync(_tenantKey, ArtifactIndexSql.SelectByKey, cmd => { AddParameter(cmd, "tenant_id", _tenantId); AddParameter(cmd, "bom_ref", bomRef); AddParameter(cmd, "serial_number", serialNumber); AddParameter(cmd, "artifact_id", artifactId); }, MapEntry, ct).ConfigureAwait(false); return results.Count > 0 ? results[0] : null; } /// public async Task RemoveAsync( string bomRef, string serialNumber, string artifactId, CancellationToken ct = default) { var rowsAffected = await ExecuteAsync(_tenantKey, ArtifactIndexSql.UpdateSoftDelete, cmd => { AddParameter(cmd, "tenant_id", _tenantId); AddParameter(cmd, "bom_ref", bomRef); AddParameter(cmd, "serial_number", serialNumber); AddParameter(cmd, "artifact_id", artifactId); }, ct).ConfigureAwait(false); return rowsAffected > 0; } /// /// Counts artifacts for a tenant. /// public async Task CountAsync(Guid tenantId, CancellationToken ct = default) { var tenantKey = tenantId.ToString("D"); var result = await ExecuteScalarAsync(tenantKey, ArtifactIndexSql.CountByTenant, cmd => { AddParameter(cmd, "tenant_id", tenantId); }, ct).ConfigureAwait(false); return (int)result; } }