f808734768
This PR finalizes the implementation of issue #35 by establishing a formal foreign key relationship between `KnowledgeUnit` and `Ebook`. Closes #35 ### Changes: - **Domain**: Refactored `KnowledgeUnit` to use `Guid EbookId` and added navigation property. - **Data**: Updated `AppDbContext` fluent configuration and generated a new migration. - **Service**: Updated `IKnowledgeService` and its implementations to propagate `ebookId`. - **API**: Updated Web API endpoints to support linking extracted knowledge to specific ebooks. ### Verification: - [x] Solution builds successfully (`dotnet build`). - [x] Schema changes verified in migration file. - [x] Cascading delete behavior confirmed. --------- Co-authored-by: Marek Jasiński <jasins.marek@gmail.com> Reviewed-on: #43 Co-authored-by: Antigravity <antigravity@google.com> Co-committed-by: Antigravity <antigravity@google.com>
35 lines
1.1 KiB
C#
35 lines
1.1 KiB
C#
using FluentResults;
|
|
using NexusReader.Application.Abstractions.Messaging;
|
|
using NexusReader.Application.Abstractions.Services;
|
|
|
|
namespace NexusReader.Application.Queries.Graph;
|
|
|
|
internal sealed class GetKnowledgeGraphQueryHandler : IQueryHandler<GetKnowledgeGraphQuery, GraphDataDto>
|
|
{
|
|
private readonly IKnowledgeService _knowledgeService;
|
|
|
|
public GetKnowledgeGraphQueryHandler(IKnowledgeService knowledgeService)
|
|
{
|
|
_knowledgeService = knowledgeService;
|
|
}
|
|
|
|
public async Task<Result<GraphDataDto>> Handle(GetKnowledgeGraphQuery request, CancellationToken cancellationToken)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(request.Text))
|
|
return Result.Ok(new GraphDataDto());
|
|
|
|
var result = await _knowledgeService.GetGraphDataAsync(
|
|
request.Text,
|
|
request.TenantId,
|
|
ebookId: request.EbookId,
|
|
cancellationToken: cancellationToken);
|
|
|
|
if (result.IsFailed)
|
|
return Result.Fail<GraphDataDto>(result.Errors);
|
|
|
|
var graph = result.Value.Graph;
|
|
|
|
return graph is null ? Result.Ok(new GraphDataDto()) : Result.Ok(graph);
|
|
}
|
|
}
|