#418 quoted/pages/generate
This commit is contained in:
parent
975aae85e6
commit
901c7d4ffb
@ -3650,6 +3650,25 @@ namespace RMuseum.Controllers
|
||||
return Ok();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// regenerate related poems pages
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPut("quoted/pages/generate")]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + SecurableItem.ModifyOperationShortName)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public IActionResult StartRegeneratingRelatedPoemsPagesAsync()
|
||||
{
|
||||
var loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
var res = _ganjoorService.StartRegeneratingRelatedPoemsPagesAsync(loggedOnUserId);
|
||||
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
|
||||
return Ok();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get quoted poems for a poem
|
||||
/// </summary>
|
||||
|
||||
@ -2013,6 +2013,12 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.StartRegeneratingRelatedPoemsPagesAsync">
|
||||
<summary>
|
||||
regenerate related poems pages
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetGanjoorQuotedPoemsForPoemAsync(System.Int32,System.Int32,System.Int32,System.Boolean)">
|
||||
<summary>
|
||||
get quoted poems for a poem
|
||||
@ -15521,6 +15527,13 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.StartRegeneratingRelatedPoemsPagesAsync(System.Guid)">
|
||||
<summary>
|
||||
regenerate related poems pages
|
||||
</summary>
|
||||
<param name="editingUserId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.GetGanjoorQuotedPoemsForPoemAsync(System.Int32,System.Int32,System.Int32,System.Boolean)">
|
||||
<summary>
|
||||
get quoted poems for a poem
|
||||
@ -17559,6 +17572,13 @@
|
||||
<param name="metre"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.StartRegeneratingRelatedPoemsPagesAsync(System.Guid)">
|
||||
<summary>
|
||||
regenerate related poems pages
|
||||
</summary>
|
||||
<param name="editingUserId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService._RegenerateRelatedPoemsPageAsync(System.Guid,RMuseum.DbContext.RMuseumDbContext,System.Int32,System.Int32)">
|
||||
<summary>
|
||||
parse related pages
|
||||
|
||||
@ -1217,6 +1217,13 @@ namespace RMuseum.Services
|
||||
/// <returns></returns>
|
||||
RServiceResult<bool> StartExtractingQuotedPoems();
|
||||
|
||||
/// <summary>
|
||||
/// regenerate related poems pages
|
||||
/// </summary>
|
||||
/// <param name="editingUserId"></param>
|
||||
/// <returns></returns>
|
||||
RServiceResult<bool> StartRegeneratingRelatedPoemsPagesAsync(Guid editingUserId);
|
||||
|
||||
/// <summary>
|
||||
/// get quoted poems for a poem
|
||||
/// </summary>
|
||||
|
||||
@ -17,7 +17,52 @@ namespace RMuseum.Services.Implementation
|
||||
/// </summary>
|
||||
public partial class GanjoorService : IGanjoorService
|
||||
{
|
||||
public RServiceResult<bool> StartRegeneratingRelatedPoemsPageAsync(Guid editingUserId, int poetId, int relatedPoetId)
|
||||
/// <summary>
|
||||
/// regenerate related poems pages
|
||||
/// </summary>
|
||||
/// <param name="editingUserId"></param>
|
||||
/// <returns></returns>
|
||||
public RServiceResult<bool> StartRegeneratingRelatedPoemsPagesAsync(Guid editingUserId)
|
||||
{
|
||||
try
|
||||
{
|
||||
_backgroundTaskQueue.QueueBackgroundWorkItem
|
||||
(
|
||||
async token =>
|
||||
{
|
||||
using (RMuseumDbContext context = new RMuseumDbContext(new DbContextOptions<RMuseumDbContext>())) //this is long running job, so _context might be already been freed/collected by GC
|
||||
{
|
||||
LongRunningJobProgressServiceEF jobProgressServiceEF = new LongRunningJobProgressServiceEF(context);
|
||||
|
||||
var job = (await jobProgressServiceEF.NewJob($"StartRegeneratingRelatedPoemsPagesAsync", "Query data")).Result;
|
||||
|
||||
try
|
||||
{
|
||||
var pages = await context.GanjoorPages.AsNoTracking().Where(p => p.SecondPoetId != null).ToListAsync();
|
||||
foreach (var page in pages)
|
||||
{
|
||||
await jobProgressServiceEF.UpdateJob(job.Id, page.Id, $"StartRegeneratingRelatedPoemsPageAsync({page.PoetId}, {page.SecondPoetId})");
|
||||
await _RegenerateRelatedPoemsPageAsync(editingUserId, context, (int)page.PoetId, (int)page.SecondPoetId);
|
||||
}
|
||||
|
||||
await jobProgressServiceEF.UpdateJob(job.Id, 100, "", true);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
await jobProgressServiceEF.UpdateJob(job.Id, 100, "", false, exp.ToString());
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
return new RServiceResult<bool>(true);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<bool>(false, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private RServiceResult<bool> _StartRegeneratingRelatedPoemsPageAsync(Guid editingUserId, int poetId, int relatedPoetId)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -340,7 +385,7 @@ namespace RMuseum.Services.Implementation
|
||||
var page = await _context.GanjoorPages.AsNoTracking().Where(p => p.PoetId == quoted.PoetId && p.SecondPoetId == quoted.RelatedPoetId).SingleOrDefaultAsync();
|
||||
if(page != null)
|
||||
{
|
||||
StartRegeneratingRelatedPoemsPageAsync(editingUserId, quoted.PoetId, (int)quoted.RelatedPoetId);
|
||||
_StartRegeneratingRelatedPoemsPageAsync(editingUserId, quoted.PoetId, (int)quoted.RelatedPoetId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -414,7 +459,7 @@ namespace RMuseum.Services.Implementation
|
||||
var page = await _context.GanjoorPages.AsNoTracking().Where(p => p.PoetId == quoted.PoetId && p.SecondPoetId == quoted.RelatedPoetId).SingleOrDefaultAsync();
|
||||
if (page != null)
|
||||
{
|
||||
StartRegeneratingRelatedPoemsPageAsync(editingUserId, quoted.PoetId, (int)quoted.RelatedPoetId);
|
||||
_StartRegeneratingRelatedPoemsPageAsync(editingUserId, quoted.PoetId, (int)quoted.RelatedPoetId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -467,7 +512,7 @@ namespace RMuseum.Services.Implementation
|
||||
var page = await _context.GanjoorPages.AsNoTracking().Where(p => p.PoetId == poetId && p.SecondPoetId == relatedPoetId).SingleOrDefaultAsync();
|
||||
if (page != null)
|
||||
{
|
||||
StartRegeneratingRelatedPoemsPageAsync(editingUserId, poetId, (int)relatedPoetId);
|
||||
_StartRegeneratingRelatedPoemsPageAsync(editingUserId, poetId, (int)relatedPoetId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user