private async Task <JobStatusProgress> GetProgressAsync(string jobID, bool isSync) { //No cache, so always get direct var jsProgress = new JobStatusProgress(); //try to get from DB var jobView = isSync ? GetJobView(jobID): await GetJobViewAsync(jobID); if (jobView != null) { jsProgress.JobID = jobView.JobID; jsProgress.Status = jobView.Status; jsProgress.Error = jobView.Error; jsProgress.Percent = jobView.Percent; jsProgress.Note = jobView.Note; jsProgress.Data = jobView.Data; } else { jsProgress.JobID = jobID; jsProgress.ExistsInDB = false; jsProgress.Error = "Job progress id: " + jobID + " not found!"; } return(jsProgress); }
//Set cached progress error public Task SetCachedProgressErrorAsync(JobStatusProgress jsProgress, string error) { jsProgress.Status = JobStatus.Error; jsProgress.Error = error; jsProgress.Updated = DateTime.Now; return(RedisDatabase.StringSetAsync(KeyPrefix + jsProgress.JobID.ToString(), JsonConvert.SerializeObject(jsProgress), flags: CommandFlags.FireAndForget)); }
public Task SetCachedProgressStatusAsync(JobStatusProgress jsProgress, JobStatus status) { //Update running/stop status only if it exists in DB jsProgress.Status = status; jsProgress.Updated = DateTime.Now; return(RedisDatabase.StringSetAsync(KeyPrefix + jsProgress.JobID.ToString(), JsonConvert.SerializeObject(jsProgress), flags: CommandFlags.FireAndForget)); }
public async Task GetProgressAsyncTest() { var expected = new JobStatusProgress(); var mockJobDAL = new Mock <IJobDAL>(); mockJobDAL .Setup(ss => ss.GetProgressAsync(JobID)) .ReturnsAsync(expected); var jobClient = new JobClient(mockJobDAL.Object); var actual = await jobClient.GetProgressAsync(JobID); Assert.IsType <JobStatusProgress>(actual); Assert.Equal(expected, actual); }
//Set Cached progress public Task SetCachedProgressAsync(string jobID, int?percent, string note, string data) { var jobStatusProgressString = RedisDatabase.StringGet(KeyPrefix + jobID.ToString()); var jsProgress = new JobStatusProgress(); if (!string.IsNullOrWhiteSpace(jobStatusProgressString)) { jsProgress = JsonConvert.DeserializeObject <JobStatusProgress>(jobStatusProgressString); } else { //missing, then setup a new one, always status = running jsProgress.JobID = jobID; jsProgress.Status = JobStatus.Running; } jsProgress.Percent = percent; jsProgress.Note = note; jsProgress.Data = data; jsProgress.Updated = DateTime.Now; return(RedisDatabase.StringSetAsync(KeyPrefix + jobID.ToString(), JsonConvert.SerializeObject(jsProgress), flags: CommandFlags.FireAndForget)); }
private async Task <JobStatusProgress> GetCachedProgressAsync(string jobID, bool isSync) { var jsProgress = new JobStatusProgress(); var jobStatusProgressString = ""; if (isSync) { jobStatusProgressString = RedisDatabase.StringGet(KeyPrefix + jobID.ToString()); } else { jobStatusProgressString = await RedisDatabase.StringGetAsync(KeyPrefix + jobID.ToString()); } if (!string.IsNullOrWhiteSpace(jobStatusProgressString)) { jsProgress = JsonConvert.DeserializeObject <JobStatusProgress>(jobStatusProgressString); return(jsProgress); } return(null); }