/
afanasevn
/
PdfEncoder
Обзор
Документация
Войти
/
afanasevn
/
PdfEncoder
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/PdfEncoder.Infrastructure/Persistence/EfLlmUsageLogStore.cs
54 строки
2 KB
IBS\NAfanasev
Full async product flow
01 июл 2026, 17:49
01 июл 2026, 17:49
d25833e
Код
Авторство
О чём код?
using Microsoft.EntityFrameworkCore; using PdfEncoder.Application.Abstractions; using PdfEncoder.Domain.Models; namespace PdfEncoder.Infrastructure.Persistence; /// <summary> /// EF persistence для LlmUsageLogs. /// </summary> public sealed class EfLlmUsageLogStore(PdfEncoderDbContext dbContext) : ILlmUsageLogStore { /// <inheritdoc /> public async Task AppendAsync( LlmUsageLog log, CancellationToken ct) { dbContext.LlmUsageLogs.Add(new Entities.LlmUsageLogEntity { Id = log.Id, DocumentJobId = log.DocumentJobId, StepName = log.StepName, ModelName = log.ModelName, PromptTokens = log.PromptTokens, CompletionTokens = log.CompletionTokens, LatencyMs = log.LatencyMs, CreatedAt = log.CreatedAt }); await dbContext.SaveChangesAsync(ct); } /// <inheritdoc /> public IReadOnlyList<LlmUsageLog> GetByDocumentJobId( Guid documentJobId, CancellationToken ct) { return dbContext.LlmUsageLogs .AsNoTracking() .Where(log => log.DocumentJobId == documentJobId) .OrderBy(log => log.CreatedAt) .Select(log => new LlmUsageLog { Id = log.Id, DocumentJobId = log.DocumentJobId, StepName = log.StepName, ModelName = log.ModelName, PromptTokens = log.PromptTokens, CompletionTokens = log.CompletionTokens, LatencyMs = log.LatencyMs, CreatedAt = log.CreatedAt }) .ToList(); } }