using Microsoft.EntityFrameworkCore;
using System.Globalization;
namespace StellaOps.Provcache.Postgres;
public sealed partial class PostgresProvcacheRepository
{
///
public async Task DeleteByFeedEpochOlderThanAsync(string feedEpoch, CancellationToken cancellationToken = default)
{
var deleted = await _context.ProvcacheItems
.Where(e => string.Compare(e.FeedEpoch, feedEpoch) < 0)
.ExecuteDeleteAsync(cancellationToken)
.ConfigureAwait(false);
if (deleted > 0)
{
await LogRevocationAsync("feed", feedEpoch, "feed-update", deleted, cancellationToken)
.ConfigureAwait(false);
}
return deleted;
}
///
public async Task DeleteExpiredAsync(DateTimeOffset asOf, CancellationToken cancellationToken = default)
{
var deleted = await _context.ProvcacheItems
.Where(e => e.ExpiresAt <= asOf)
.ExecuteDeleteAsync(cancellationToken)
.ConfigureAwait(false);
if (deleted > 0)
{
await LogRevocationAsync(
"expired",
asOf.ToString("O", CultureInfo.InvariantCulture),
"ttl-expiry",
deleted,
cancellationToken)
.ConfigureAwait(false);
}
return deleted;
}
}