diff --git a/SqlDatabaseVectorSearch/Program.cs b/SqlDatabaseVectorSearch/Program.cs index 469cd17..b5f03a8 100644 --- a/SqlDatabaseVectorSearch/Program.cs +++ b/SqlDatabaseVectorSearch/Program.cs @@ -57,8 +57,8 @@ builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); -builder.Services.AddScoped(); builder.Services.AddScoped(); +builder.Services.AddScoped(); builder.Services.AddKeyedSingleton(MediaTypeNames.Application.Pdf); builder.Services.AddKeyedSingleton("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); @@ -130,14 +130,14 @@ var documentsApiGroup = app.MapGroup("/api/documents").WithTags("Documents"); documentsApiGroup.MapGet(string.Empty, async (DocumentService documentService, CancellationToken cancellationToken) => { - var documents = await documentService.GetDocumentsAsync(cancellationToken); + var documents = await documentService.GetAsync(cancellationToken); return TypedResults.Ok(documents); }) .WithSummary("Gets the list of documents"); documentsApiGroup.MapGet("{documentId:guid}/chunks", async (Guid documentId, DocumentService documentService, CancellationToken cancellationToken) => { - var documents = await documentService.GetDocumentChunksAsync(documentId, cancellationToken); + var documents = await documentService.GetChunksAsync(documentId, cancellationToken); return TypedResults.Ok(documents); }) .WithSummary("Gets the list of chunks of a given document") @@ -145,7 +145,7 @@ documentsApiGroup.MapGet("{documentId:guid}/chunks", async (Guid documentId, Doc documentsApiGroup.MapGet("{documentId:guid}/chunks/{documentChunkId:guid}", async Task, NotFound>> (Guid documentId, Guid documentChunkId, DocumentService documentService, CancellationToken cancellationToken) => { - var chunk = await documentService.GetDocumentChunkEmbeddingAsync(documentId, documentChunkId, cancellationToken); + var chunk = await documentService.GetChunkEmbeddingAsync(documentId, documentChunkId, cancellationToken); if (chunk is null) { return TypedResults.NotFound(); @@ -158,7 +158,7 @@ documentsApiGroup.MapGet("{documentId:guid}/chunks/{documentChunkId:guid}", asyn documentsApiGroup.MapDelete("{documentId:guid}", async (Guid documentId, DocumentService documentService, CancellationToken cancellationToken) => { - await documentService.DeleteDocumentAsync(documentId, cancellationToken); + await documentService.DeleteAsync(documentId, cancellationToken); return TypedResults.NoContent(); }) .WithSummary("Deletes a document") diff --git a/SqlDatabaseVectorSearch/Services/DocumentService.cs b/SqlDatabaseVectorSearch/Services/DocumentService.cs index f982974..5896ecc 100644 --- a/SqlDatabaseVectorSearch/Services/DocumentService.cs +++ b/SqlDatabaseVectorSearch/Services/DocumentService.cs @@ -7,33 +7,33 @@ namespace SqlDatabaseVectorSearch.Services; public class DocumentService(ApplicationDbContext dbContext) { - public async Task> GetDocumentsAsync(CancellationToken cancellationToken = default) + public async Task> GetAsync(CancellationToken cancellationToken = default) { var documents = await dbContext.Documents.OrderBy(d => d.Name) .Select(d => new Document(d.Id, d.Name, d.CreationDate, d.Chunks.Count)) - .ToListAsync(cancellationToken: cancellationToken); + .ToListAsync(cancellationToken); return documents; } - public async Task> GetDocumentChunksAsync(Guid documentId, CancellationToken cancellationToken = default) + public async Task> GetChunksAsync(Guid documentId, CancellationToken cancellationToken = default) { var documentChunks = await dbContext.DocumentChunks.Where(c => c.DocumentId == documentId).OrderBy(c => c.Index) .Select(c => new DocumentChunk(c.Id, c.Index, c.Content, null)) - .ToListAsync(cancellationToken: cancellationToken); + .ToListAsync(cancellationToken); return documentChunks; } - public async Task GetDocumentChunkEmbeddingAsync(Guid documentId, Guid documentChunkId, CancellationToken cancellationToken = default) + public async Task GetChunkEmbeddingAsync(Guid documentId, Guid documentChunkId, CancellationToken cancellationToken = default) { var documentChunk = await dbContext.DocumentChunks.Where(c => c.Id == documentChunkId && c.DocumentId == documentId) .Select(c => new DocumentChunk(c.Id, c.Index, c.Content, c.Embedding)) - .FirstOrDefaultAsync(cancellationToken: cancellationToken); + .FirstOrDefaultAsync(cancellationToken); return documentChunk; } - public Task DeleteDocumentAsync(Guid documentId, CancellationToken cancellationToken = default) - => dbContext.Documents.Where(d => d.Id == documentId).ExecuteDeleteAsync(cancellationToken: cancellationToken); + public Task DeleteAsync(Guid documentId, CancellationToken cancellationToken = default) + => dbContext.Documents.Where(d => d.Id == documentId).ExecuteDeleteAsync(cancellationToken); } \ No newline at end of file diff --git a/SqlDatabaseVectorSearch/Services/VectorSearchService.cs b/SqlDatabaseVectorSearch/Services/VectorSearchService.cs index 32bc9ad..682fa02 100644 --- a/SqlDatabaseVectorSearch/Services/VectorSearchService.cs +++ b/SqlDatabaseVectorSearch/Services/VectorSearchService.cs @@ -32,7 +32,7 @@ public class VectorSearchService(IServiceProvider serviceProvider, ApplicationDb if (documentId.HasValue) { // If the user is importing a document that already exists, delete the previous one. - await documentService.DeleteDocumentAsync(documentId.Value, cancellationToken); + await documentService.DeleteAsync(documentId.Value, cancellationToken); } var document = new Entities.Document { Id = documentId.GetValueOrDefault(), Name = name, CreationDate = timeProvider.GetUtcNow() };