mirror of
https://github.com/marcominerva/SqlDatabaseVectorSearch.git
synced 2026-06-20 12:23:10 +00:00
Update service registrations and rename DocumentService methods
This commit is contained in:
@@ -57,8 +57,8 @@ builder.Services.AddSingleton<TextChunkerService>();
|
|||||||
builder.Services.AddSingleton<TokenizerService>();
|
builder.Services.AddSingleton<TokenizerService>();
|
||||||
builder.Services.AddSingleton<ChatService>();
|
builder.Services.AddSingleton<ChatService>();
|
||||||
|
|
||||||
builder.Services.AddScoped<VectorSearchService>();
|
|
||||||
builder.Services.AddScoped<DocumentService>();
|
builder.Services.AddScoped<DocumentService>();
|
||||||
|
builder.Services.AddScoped<VectorSearchService>();
|
||||||
|
|
||||||
builder.Services.AddKeyedSingleton<IContentDecoder, PdfContentDecoder>(MediaTypeNames.Application.Pdf);
|
builder.Services.AddKeyedSingleton<IContentDecoder, PdfContentDecoder>(MediaTypeNames.Application.Pdf);
|
||||||
builder.Services.AddKeyedSingleton<IContentDecoder, DocxContentDecoder>("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
builder.Services.AddKeyedSingleton<IContentDecoder, DocxContentDecoder>("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) =>
|
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);
|
return TypedResults.Ok(documents);
|
||||||
})
|
})
|
||||||
.WithSummary("Gets the list of documents");
|
.WithSummary("Gets the list of documents");
|
||||||
|
|
||||||
documentsApiGroup.MapGet("{documentId:guid}/chunks", async (Guid documentId, DocumentService documentService, CancellationToken cancellationToken) =>
|
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);
|
return TypedResults.Ok(documents);
|
||||||
})
|
})
|
||||||
.WithSummary("Gets the list of chunks of a given document")
|
.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<Results<Ok<DocumentChunk>, NotFound>> (Guid documentId, Guid documentChunkId, DocumentService documentService, CancellationToken cancellationToken) =>
|
documentsApiGroup.MapGet("{documentId:guid}/chunks/{documentChunkId:guid}", async Task<Results<Ok<DocumentChunk>, 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)
|
if (chunk is null)
|
||||||
{
|
{
|
||||||
return TypedResults.NotFound();
|
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) =>
|
documentsApiGroup.MapDelete("{documentId:guid}", async (Guid documentId, DocumentService documentService, CancellationToken cancellationToken) =>
|
||||||
{
|
{
|
||||||
await documentService.DeleteDocumentAsync(documentId, cancellationToken);
|
await documentService.DeleteAsync(documentId, cancellationToken);
|
||||||
return TypedResults.NoContent();
|
return TypedResults.NoContent();
|
||||||
})
|
})
|
||||||
.WithSummary("Deletes a document")
|
.WithSummary("Deletes a document")
|
||||||
|
|||||||
@@ -7,33 +7,33 @@ namespace SqlDatabaseVectorSearch.Services;
|
|||||||
|
|
||||||
public class DocumentService(ApplicationDbContext dbContext)
|
public class DocumentService(ApplicationDbContext dbContext)
|
||||||
{
|
{
|
||||||
public async Task<IEnumerable<Document>> GetDocumentsAsync(CancellationToken cancellationToken = default)
|
public async Task<IEnumerable<Document>> GetAsync(CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var documents = await dbContext.Documents.OrderBy(d => d.Name)
|
var documents = await dbContext.Documents.OrderBy(d => d.Name)
|
||||||
.Select(d => new Document(d.Id, d.Name, d.CreationDate, d.Chunks.Count))
|
.Select(d => new Document(d.Id, d.Name, d.CreationDate, d.Chunks.Count))
|
||||||
.ToListAsync(cancellationToken: cancellationToken);
|
.ToListAsync(cancellationToken);
|
||||||
|
|
||||||
return documents;
|
return documents;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IEnumerable<DocumentChunk>> GetDocumentChunksAsync(Guid documentId, CancellationToken cancellationToken = default)
|
public async Task<IEnumerable<DocumentChunk>> GetChunksAsync(Guid documentId, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var documentChunks = await dbContext.DocumentChunks.Where(c => c.DocumentId == documentId).OrderBy(c => c.Index)
|
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))
|
.Select(c => new DocumentChunk(c.Id, c.Index, c.Content, null))
|
||||||
.ToListAsync(cancellationToken: cancellationToken);
|
.ToListAsync(cancellationToken);
|
||||||
|
|
||||||
return documentChunks;
|
return documentChunks;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<DocumentChunk?> GetDocumentChunkEmbeddingAsync(Guid documentId, Guid documentChunkId, CancellationToken cancellationToken = default)
|
public async Task<DocumentChunk?> GetChunkEmbeddingAsync(Guid documentId, Guid documentChunkId, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
var documentChunk = await dbContext.DocumentChunks.Where(c => c.Id == documentChunkId && c.DocumentId == documentId)
|
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))
|
.Select(c => new DocumentChunk(c.Id, c.Index, c.Content, c.Embedding))
|
||||||
.FirstOrDefaultAsync(cancellationToken: cancellationToken);
|
.FirstOrDefaultAsync(cancellationToken);
|
||||||
|
|
||||||
return documentChunk;
|
return documentChunk;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task DeleteDocumentAsync(Guid documentId, CancellationToken cancellationToken = default)
|
public Task DeleteAsync(Guid documentId, CancellationToken cancellationToken = default)
|
||||||
=> dbContext.Documents.Where(d => d.Id == documentId).ExecuteDeleteAsync(cancellationToken: cancellationToken);
|
=> dbContext.Documents.Where(d => d.Id == documentId).ExecuteDeleteAsync(cancellationToken);
|
||||||
}
|
}
|
||||||
@@ -32,7 +32,7 @@ public class VectorSearchService(IServiceProvider serviceProvider, ApplicationDb
|
|||||||
if (documentId.HasValue)
|
if (documentId.HasValue)
|
||||||
{
|
{
|
||||||
// If the user is importing a document that already exists, delete the previous one.
|
// 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() };
|
var document = new Entities.Document { Id = documentId.GetValueOrDefault(), Name = name, CreationDate = timeProvider.GetUtcNow() };
|
||||||
|
|||||||
Reference in New Issue
Block a user