[
  {
    "id": "class:1kfw737:ingestebookcommandhandler",
    "kind": "class",
    "fileId": "file:lqr4h8:ingestebookcommandhandler-cs",
    "path": "NexusReader.Application/Commands/Library/IngestEbookCommandHandler.cs",
    "canonicalName": "IngestEbookCommandHandler",
    "shortLabel": "IngestEbookCommandHandler",
    "longLabel": "IngestEbookCommandHandler",
    "purpose": "Handles ingestion of an uploaded ebook: saves files to storage, resolves/creates author, creates Ebook entity and persists it to the repository, returning the new Ebook Id or a failure result."
  },
  {
    "id": "method:jlw375:ingestebookcommandhandler",
    "kind": "method",
    "fileId": "file:lqr4h8:ingestebookcommandhandler-cs",
    "path": "NexusReader.Application/Commands/Library/IngestEbookCommandHandler.cs",
    "line": 15,
    "canonicalName": "IngestEbookCommandHandler",
    "shortLabel": "IngestEbookCommandHandler()",
    "longLabel": "IngestEbookCommandHandler(ebookRepository: IEbookRepository, storageService: IBookStorageService) -> IngestEbookCommandHandler",
    "signature": "(ebookRepository: IEbookRepository, storageService: IBookStorageService) -> IngestEbookCommandHandler",
    "purpose": "Constructor; receives repository and storage service via DI and assigns to fields."
  },
  {
    "id": "method:gy7qh:handle",
    "kind": "method",
    "fileId": "file:lqr4h8:ingestebookcommandhandler-cs",
    "path": "NexusReader.Application/Commands/Library/IngestEbookCommandHandler.cs",
    "line": 23,
    "canonicalName": "Handle",
    "shortLabel": "Handle()",
    "longLabel": "Handle(request: IngestEbookCommand, cancellationToken: CancellationToken) -> Task<Result<Guid>>",
    "signature": "(request: IngestEbookCommand, cancellationToken: CancellationToken) -> Task<Result<Guid>>",
    "purpose": "Orchestrates ebook ingestion: saves epub/cover to storage, resolves or creates author, constructs Ebook entity, persists it and returns the created Ebook Id or failure."
  }
]