Files
tiku-backend.net/Tiku.IntegrationTests/Api/RecordingDbCommandInterceptor.cs
xiong c497a3ca8d
Some checks failed
ci / release-gate (push) Has been cancelled
清理代码
2026-08-03 12:31:39 +08:00

78 lines
2.0 KiB
C#

using System.Collections.Concurrent;
using System.Data.Common;
using Microsoft.EntityFrameworkCore.Diagnostics;
namespace Tiku.IntegrationTests.Api;
internal sealed class RecordingDbCommandInterceptor : DbCommandInterceptor
{
private readonly ConcurrentQueue<string> commandTexts = new();
public IReadOnlyList<string> Snapshot()
{
return commandTexts.ToArray();
}
public void Reset()
{
while (commandTexts.TryDequeue(out _))
{
}
}
public override DbDataReader ReaderExecuted(
DbCommand command,
CommandExecutedEventData eventData,
DbDataReader result)
{
Record(command);
return result;
}
public override ValueTask<DbDataReader> ReaderExecutedAsync(
DbCommand command,
CommandExecutedEventData eventData,
DbDataReader result,
CancellationToken cancellationToken = default)
{
Record(command);
return ValueTask.FromResult(result);
}
public override int NonQueryExecuted(DbCommand command, CommandExecutedEventData eventData, int result)
{
Record(command);
return result;
}
public override ValueTask<int> NonQueryExecutedAsync(
DbCommand command,
CommandExecutedEventData eventData,
int result,
CancellationToken cancellationToken = default)
{
Record(command);
return ValueTask.FromResult(result);
}
public override object? ScalarExecuted(DbCommand command, CommandExecutedEventData eventData, object? result)
{
Record(command);
return result;
}
public override ValueTask<object?> ScalarExecutedAsync(
DbCommand command,
CommandExecutedEventData eventData,
object? result,
CancellationToken cancellationToken = default)
{
Record(command);
return ValueTask.FromResult(result);
}
private void Record(DbCommand command)
{
commandTexts.Enqueue(command.CommandText);
}
}