/
afanasevn
/
PdfEncoder
Обзор
Документация
Войти
/
afanasevn
/
PdfEncoder
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/PdfEncoder.Infrastructure/Persistence/InMemoryLlmUsageLogStore.cs
45 строк
1 KB
IBS\NAfanasev
Remote LLM base functional
01 июл 2026, 15:54
01 июл 2026, 15:54
05aa80e
Код
Авторство
О чём код?
using System.Collections.Concurrent; using PdfEncoder.Application.Abstractions; using PdfEncoder.Domain.Models; namespace PdfEncoder.Infrastructure.Persistence; /// <summary> /// In-memory хранилище LlmUsageLogs (Фаза 2; EF => Фаза 3). /// </summary> public sealed class InMemoryLlmUsageLogStore : ILlmUsageLogStore { private readonly ConcurrentDictionary<Guid, List<LlmUsageLog>> _logs = new(); /// <inheritdoc /> public Task AppendAsync( LlmUsageLog log, CancellationToken ct) { ct.ThrowIfCancellationRequested(); var bucket = _logs.GetOrAdd(log.DocumentJobId, _ => []); lock (bucket) { bucket.Add(log); } return Task.CompletedTask; } /// <inheritdoc /> public IReadOnlyList<LlmUsageLog> GetByDocumentJobId( Guid documentJobId, CancellationToken ct) { ct.ThrowIfCancellationRequested(); if (!_logs.TryGetValue(documentJobId, out var bucket)) { return []; } lock (bucket) { return bucket.ToList(); } } }