#399 improving api performance
This commit is contained in:
parent
8086e2ff68
commit
534d2f9e3b
@ -118,15 +118,16 @@ namespace RMuseum.Controllers
|
||||
/// secure get a pdf book
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="omitBookText"></param>
|
||||
/// <param name="omitPageText"></param>
|
||||
/// <param name="includePages"></param>
|
||||
/// <param name="includeBookText"></param>
|
||||
/// <param name="includePageText"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("secure/{id}")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PDFBook))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> GetUserVisiblePDFBookAsync(int id, bool omitBookText = true, bool omitPageText = false)
|
||||
public async Task<IActionResult> GetUserVisiblePDFBookAsync(int id, bool includePages = false, bool includeBookText = false, bool includePageText = false)
|
||||
{
|
||||
RServiceResult<PublishStatus[]> v = await _GetUserVisiblePDFBooksStatusSetAsync
|
||||
(
|
||||
@ -139,7 +140,7 @@ namespace RMuseum.Controllers
|
||||
RServiceResult<PDFBook> bookRes = null;
|
||||
if (visibleItems.Length == 1 && visibleItems[0] == PublishStatus.Published)
|
||||
{
|
||||
bookRes = await _pdfService.GetPDFBookByIdAsync(id, new PublishStatus[] { PublishStatus.Published }, omitBookText, omitPageText);
|
||||
bookRes = await _pdfService.GetPDFBookByIdAsync(id, new PublishStatus[] { PublishStatus.Published }, includePages, includeBookText, includePageText);
|
||||
if (!string.IsNullOrEmpty(bookRes.ExceptionString))
|
||||
{
|
||||
return BadRequest(bookRes.ExceptionString);
|
||||
@ -149,7 +150,7 @@ namespace RMuseum.Controllers
|
||||
}
|
||||
if (bookRes == null)
|
||||
{
|
||||
bookRes = await _pdfService.GetPDFBookByIdAsync(id, visibleItems, omitBookText, omitPageText);
|
||||
bookRes = await _pdfService.GetPDFBookByIdAsync(id, visibleItems, includePages, includeBookText, includePageText);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(bookRes.ExceptionString))
|
||||
@ -209,17 +210,18 @@ namespace RMuseum.Controllers
|
||||
/// get published PDF Book by id
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="omitBookText"></param>
|
||||
/// <param name="omitPageText"></param>
|
||||
/// <param name="includePages"></param>
|
||||
/// <param name="includeBookText"></param>
|
||||
/// <param name="includePageText"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("{id}")]
|
||||
[AllowAnonymous]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PDFBook))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> GetPDFBookByIdAsync(int id, bool omitBookText = true, bool omitPageText = false)
|
||||
public async Task<IActionResult> GetPDFBookByIdAsync(int id, bool includePages = false, bool includeBookText = false, bool includePageText = false)
|
||||
{
|
||||
var bookRes = await _pdfService.GetPDFBookByIdAsync(id, new PublishStatus[] { PublishStatus.Published }, omitBookText, omitPageText);
|
||||
var bookRes = await _pdfService.GetPDFBookByIdAsync(id, new PublishStatus[] { PublishStatus.Published }, includePages, includeBookText, includePageText);
|
||||
|
||||
if (!string.IsNullOrEmpty(bookRes.ExceptionString))
|
||||
{
|
||||
|
||||
@ -2394,22 +2394,24 @@
|
||||
<param name="paging"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.PDFLibraryController.GetUserVisiblePDFBookAsync(System.Int32,System.Boolean,System.Boolean)">
|
||||
<member name="M:RMuseum.Controllers.PDFLibraryController.GetUserVisiblePDFBookAsync(System.Int32,System.Boolean,System.Boolean,System.Boolean)">
|
||||
<summary>
|
||||
secure get a pdf book
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="omitBookText"></param>
|
||||
<param name="omitPageText"></param>
|
||||
<param name="includePages"></param>
|
||||
<param name="includeBookText"></param>
|
||||
<param name="includePageText"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.PDFLibraryController.GetPDFBookByIdAsync(System.Int32,System.Boolean,System.Boolean)">
|
||||
<member name="M:RMuseum.Controllers.PDFLibraryController.GetPDFBookByIdAsync(System.Int32,System.Boolean,System.Boolean,System.Boolean)">
|
||||
<summary>
|
||||
get published PDF Book by id
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="omitBookText"></param>
|
||||
<param name="omitPageText"></param>
|
||||
<param name="includePages"></param>
|
||||
<param name="includeBookText"></param>
|
||||
<param name="includePageText"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.PDFLibraryController.StartImportingLocalPDFAsync(RMuseum.Models.PDFLibrary.ViewModels.NewPDFBookViewModel)">
|
||||
@ -18445,14 +18447,15 @@
|
||||
<param name="srcUrl"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.PDFLibraryService.GetPDFBookByIdAsync(System.Int32,RMuseum.Models.Artifact.PublishStatus[],System.Boolean,System.Boolean)">
|
||||
<member name="M:RMuseum.Services.Implementation.PDFLibraryService.GetPDFBookByIdAsync(System.Int32,RMuseum.Models.Artifact.PublishStatus[],System.Boolean,System.Boolean,System.Boolean)">
|
||||
<summary>
|
||||
get pdf book by id
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="statusArray"></param>
|
||||
<param name="omitBookText"></param>
|
||||
<param name="omitPageText"></param>
|
||||
<param name="includePages"></param>
|
||||
<param name="includeBookText"></param>
|
||||
<param name="includePageText"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.PDFLibraryService.GetPDFPageAsync(System.Int32,System.Int32)">
|
||||
@ -19711,14 +19714,15 @@
|
||||
<param name="srcUrl"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IPDFLibraryService.GetPDFBookByIdAsync(System.Int32,RMuseum.Models.Artifact.PublishStatus[],System.Boolean,System.Boolean)">
|
||||
<member name="M:RMuseum.Services.IPDFLibraryService.GetPDFBookByIdAsync(System.Int32,RMuseum.Models.Artifact.PublishStatus[],System.Boolean,System.Boolean,System.Boolean)">
|
||||
<summary>
|
||||
get pdf book by id
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="statusArray"></param>
|
||||
<param name="omitBookText"></param>
|
||||
<param name="omitPageText"></param>
|
||||
<param name="includePages"></param>
|
||||
<param name="includeBookText"></param>
|
||||
<param name="includePageText"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IPDFLibraryService.GetAllPDFBooksAsync(RSecurityBackend.Models.Generic.PagingParameterModel,RMuseum.Models.Artifact.PublishStatus[])">
|
||||
|
||||
@ -25,10 +25,11 @@ namespace RMuseum.Services
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="statusArray"></param>
|
||||
/// <param name="omitBookText"></param>
|
||||
/// <param name="omitPageText"></param>
|
||||
/// <param name="includePages"></param>
|
||||
/// <param name="includeBookText"></param>
|
||||
/// <param name="includePageText"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<PDFBook>> GetPDFBookByIdAsync(int id, PublishStatus[] statusArray, bool omitBookText, bool omitPageText);
|
||||
Task<RServiceResult<PDFBook>> GetPDFBookByIdAsync(int id, PublishStatus[] statusArray, bool includePages, bool includeBookText, bool includePageText);
|
||||
|
||||
/// <summary>
|
||||
/// get all pdfbooks (including CoverImage info but not pages or tagibutes info)
|
||||
|
||||
@ -49,14 +49,17 @@ namespace RMuseum.Services.Implementation
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="statusArray"></param>
|
||||
/// <param name="omitBookText"></param>
|
||||
/// <param name="omitPageText"></param>
|
||||
/// <param name="includePages"></param>
|
||||
/// <param name="includeBookText"></param>
|
||||
/// <param name="includePageText"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<PDFBook>> GetPDFBookByIdAsync(int id, PublishStatus[] statusArray, bool omitBookText, bool omitPageText)
|
||||
public async Task<RServiceResult<PDFBook>> GetPDFBookByIdAsync(int id, PublishStatus[] statusArray, bool includePages, bool includeBookText, bool includePageText)
|
||||
{
|
||||
try
|
||||
{
|
||||
var pdfBook = await _context.PDFBooks.AsNoTracking()
|
||||
var pdfBook =
|
||||
includePages ?
|
||||
await _context.PDFBooks.AsNoTracking()
|
||||
.Include(b => b.Book)
|
||||
.Include(b => b.PDFFile)
|
||||
.Include(b => b.MultiVolumePDFCollection)
|
||||
@ -65,14 +68,24 @@ namespace RMuseum.Services.Implementation
|
||||
.Include(b => b.Tags).ThenInclude(t => t.RTag)
|
||||
.Include(b => b.Pages)
|
||||
.Where(b => statusArray.Contains(b.Status) && b.Id == id)
|
||||
.SingleOrDefaultAsync()
|
||||
:
|
||||
await _context.PDFBooks.AsNoTracking()
|
||||
.Include(b => b.Book)
|
||||
.Include(b => b.PDFFile)
|
||||
.Include(b => b.MultiVolumePDFCollection)
|
||||
.Include(b => b.PDFSource)
|
||||
.Include(b => b.Contributers).ThenInclude(c => c.Author)
|
||||
.Include(b => b.Tags).ThenInclude(t => t.RTag)
|
||||
.Where(b => statusArray.Contains(b.Status) && b.Id == id)
|
||||
.SingleOrDefaultAsync();
|
||||
if (pdfBook != null)
|
||||
{
|
||||
if (omitBookText)
|
||||
if (!includeBookText)
|
||||
{
|
||||
pdfBook.BookText = "";
|
||||
}
|
||||
if (omitPageText)
|
||||
if (!includePageText && pdfBook.Pages != null)
|
||||
{
|
||||
foreach (var page in pdfBook.Pages)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user