docs: #331 append a folder of images to an existing artifact
This commit is contained in:
parent
adac5a8c2a
commit
40425e849b
@ -16,6 +16,7 @@
|
||||
BritishLibrary = 8,
|
||||
ServerFolder = 9,
|
||||
Walters = 10,
|
||||
ChesterBeatty = 11
|
||||
ChesterBeatty = 11,
|
||||
AppendFromServerFolder = 12,
|
||||
}
|
||||
}
|
||||
|
||||
@ -12963,6 +12963,14 @@
|
||||
<param name="srcUrl">https://t.me/dr_khatibi_abolfazl/888</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.ArtifactService.StartAppendingFromServerFolder(System.String,System.Guid)">
|
||||
<summary>
|
||||
start appending from server folder
|
||||
</summary>
|
||||
<param name="folderPath"></param>
|
||||
<param name="artifactId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.ArtifactService.StartImportingFromWalters(System.String,System.String)">
|
||||
<summary>
|
||||
from http://www.thedigitalwalters.org/01_ACCESS_WALTERS_MANUSCRIPTS.html
|
||||
@ -13223,9 +13231,9 @@
|
||||
<summary>
|
||||
import from external resources
|
||||
</summary>
|
||||
<param name="srcType">loc/princeton/harvard/qajarwomen/hathitrust/penn/cam/bl/folder/walters/cbl</param>
|
||||
<param name="resourceNumber">119</param>
|
||||
<param name="friendlyUrl">golestan-baysonghori</param>
|
||||
<param name="srcType">loc/princeton/harvard/qajarwomen/hathitrust/penn/cam/bl/folder/walters/cbl/append</param>
|
||||
<param name="resourceNumber">119/foldername</param>
|
||||
<param name="friendlyUrl">golestan-baysonghori/artifact id</param>
|
||||
<param name="resourcePrefix"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
|
||||
@ -173,6 +173,102 @@ namespace RMuseum.Services.Implementation
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// start appending from server folder
|
||||
/// </summary>
|
||||
/// <param name="folderPath"></param>
|
||||
/// <param name="artifactId"></param>
|
||||
/// <returns></returns>
|
||||
private async Task<RServiceResult<bool>> StartAppendingFromServerFolder(string folderPath, Guid artifactId)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
var nonTrackingBook = await _context.Artifacts.AsNoTracking().Where(b => b.Id == artifactId).SingleOrDefaultAsync();
|
||||
if (nonTrackingBook == null)
|
||||
return new RServiceResult<bool>(false, "artifact not found!");
|
||||
|
||||
ImportJob job = new ImportJob()
|
||||
{
|
||||
JobType = JobType.AppendFromServerFolder,
|
||||
ResourceNumber = folderPath,
|
||||
FriendlyUrl = nonTrackingBook.FriendlyUrl,
|
||||
SrcUrl = "",
|
||||
QueueTime = DateTime.Now,
|
||||
ProgressPercent = 0,
|
||||
Status = ImportJobStatus.NotStarted
|
||||
};
|
||||
|
||||
|
||||
await _context.ImportJobs.AddAsync
|
||||
(
|
||||
job
|
||||
);
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
_backgroundTaskQueue.QueueBackgroundWorkItem
|
||||
(
|
||||
async token =>
|
||||
{
|
||||
try
|
||||
{
|
||||
using (RMuseumDbContext context = new RMuseumDbContext(new DbContextOptions<RMuseumDbContext>()))
|
||||
{
|
||||
var book = await context.Artifacts.Include(a => a.Items).Where(b => b.Id == artifactId).SingleOrDefaultAsync();
|
||||
|
||||
using (RMuseumDbContext importJobUpdaterDb = new RMuseumDbContext(new DbContextOptions<RMuseumDbContext>()))
|
||||
{
|
||||
job.StartTime = DateTime.Now;
|
||||
job.Status = ImportJobStatus.Running;
|
||||
job.SrcContent = "";
|
||||
importJobUpdaterDb.Update(job);
|
||||
await importJobUpdaterDb.SaveChangesAsync();
|
||||
}
|
||||
|
||||
List<RArtifactItemRecord> pages = await _ImportAndReturnServerFolderJobImages(book, job, book.ItemCount);
|
||||
|
||||
pages.InsertRange(0, book.Items);
|
||||
|
||||
book.Items = pages.ToArray();//TODO: check if this is correct
|
||||
book.ItemCount = pages.Count;
|
||||
|
||||
context.Update(book);
|
||||
await context.SaveChangesAsync();
|
||||
|
||||
job.ProgressPercent = 100;
|
||||
job.Status = ImportJobStatus.Succeeded;
|
||||
job.ArtifactId = book.Id;
|
||||
job.EndTime = DateTime.Now;
|
||||
context.Update(job);
|
||||
await context.SaveChangesAsync();
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
using (RMuseumDbContext importJobUpdaterDb = new RMuseumDbContext(new DbContextOptions<RMuseumDbContext>()))
|
||||
{
|
||||
job.EndTime = DateTime.Now;
|
||||
job.Status = ImportJobStatus.Failed;
|
||||
job.Exception = exp.ToString();
|
||||
importJobUpdaterDb.Update(job);
|
||||
await importJobUpdaterDb.SaveChangesAsync();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return new RServiceResult<bool>(true);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<bool>(false, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private async Task<List<RArtifactItemRecord>> _ImportAndReturnServerFolderJobImages(RArtifactMasterRecord book, ImportJob job, int order)
|
||||
{
|
||||
List<RArtifactItemRecord> pages = new List<RArtifactItemRecord>();
|
||||
|
||||
@ -1154,9 +1154,9 @@ namespace RMuseum.Services.Implementation
|
||||
/// <summary>
|
||||
/// import from external resources
|
||||
/// </summary>
|
||||
/// <param name="srcType">loc/princeton/harvard/qajarwomen/hathitrust/penn/cam/bl/folder/walters/cbl</param>
|
||||
/// <param name="resourceNumber">119</param>
|
||||
/// <param name="friendlyUrl">golestan-baysonghori</param>
|
||||
/// <param name="srcType">loc/princeton/harvard/qajarwomen/hathitrust/penn/cam/bl/folder/walters/cbl/append</param>
|
||||
/// <param name="resourceNumber">119/foldername</param>
|
||||
/// <param name="friendlyUrl">golestan-baysonghori/artifact id</param>
|
||||
/// <param name="resourcePrefix"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<bool>> Import(string srcType, string resourceNumber, string friendlyUrl, string resourcePrefix)
|
||||
@ -1186,6 +1186,9 @@ namespace RMuseum.Services.Implementation
|
||||
srcType == "folder" ?
|
||||
await StartImportingFromServerFolder(resourceNumber, friendlyUrl, resourcePrefix)
|
||||
:
|
||||
srcType == "append" ?
|
||||
await StartAppendingFromServerFolder(resourceNumber, Guid.Parse(resourceNumber))
|
||||
:
|
||||
srcType == "walters" ?
|
||||
await StartImportingFromWalters(resourceNumber, friendlyUrl)
|
||||
:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user