public async ValueTask <ActionResult> UploadBook(string description, string language, IFormFile content)
    {
        using var stream = content.OpenReadStream();

        var bookId = await _bookRepository.NextBookIdAsync();

        var book        = new Book(bookId, new(language), new(description));
        var bookContent = new BookContent(bookId, stream);

        await _bookRepository.AddBookWithContentAsync(book, bookContent);

        var result = new { bookId = bookId.Value };

        return(CreatedAtAction(nameof(GetBookById), result, result));
    }