mirror of
https://github.com/marcominerva/SqlDatabaseVectorSearch.git
synced 2026-06-20 12:23:10 +00:00
be3f0dbf09
- Changed `app.css` path in `App.razor`. - Refactored `Documents.razor` to improve form handling: - Removed `VectorSearchService` injection; added `IServiceProvider` and `IJSRuntime`. - Updated header from `<h2>` to `<h4>`. - Introduced `uploadDocumentRequest` for form state management. - Modified document ID input for optional GUID with validation. - Disabled upload button when no file is selected. - Enhanced document loading logic with scoped service provider. - Updated deletion logic to handle multiple document IDs. - Added method in `DocumentService.cs` for bulk document deletion. - Restructured `app.css` for improved styling and new validation/error message styles.
42 lines
1.8 KiB
C#
42 lines
1.8 KiB
C#
using System.Data;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using SqlDatabaseVectorSearch.DataAccessLayer;
|
|
using SqlDatabaseVectorSearch.Models;
|
|
|
|
namespace SqlDatabaseVectorSearch.Services;
|
|
|
|
public class DocumentService(ApplicationDbContext dbContext)
|
|
{
|
|
public async Task<IEnumerable<Document>> 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);
|
|
|
|
return documents;
|
|
}
|
|
|
|
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)
|
|
.Select(c => new DocumentChunk(c.Id, c.Index, c.Content, null))
|
|
.ToListAsync(cancellationToken);
|
|
|
|
return documentChunks;
|
|
}
|
|
|
|
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)
|
|
.Select(c => new DocumentChunk(c.Id, c.Index, c.Content, c.Embedding))
|
|
.FirstOrDefaultAsync(cancellationToken);
|
|
|
|
return documentChunk;
|
|
}
|
|
|
|
public Task DeleteAsync(Guid documentId, CancellationToken cancellationToken = default)
|
|
=> dbContext.Documents.Where(d => d.Id == documentId).ExecuteDeleteAsync(cancellationToken);
|
|
|
|
public Task DeleteAsync(IEnumerable<Guid> documentIds, CancellationToken cancellationToken = default)
|
|
=> dbContext.Documents.Where(d => documentIds.Contains(d.Id)).ExecuteDeleteAsync(cancellationToken);
|
|
} |