/// <inheritdoc /> /// <summary> /// Removes the specified job from the repository. /// </summary> /// <param name="id">The id of the job to remove.</param> /// <returns></returns> public async Task Remove(string id) { JobInstanceEntity entity = await _context.JobInstances.FirstAsync(t => t.Id.Equals(id)); _context.JobInstances.Remove(entity); await _context.SaveChangesAsync(); }
/// <inheritdoc /> /// <summary> /// Adds the specified job instance. /// </summary> /// <param name="jobInstance">The job instance.</param> /// <returns></returns> public async Task <JobInstanceEntity> Add(JobInstanceEntity jobInstance) { await _context.JobInstances.AddAsync(jobInstance); await _context.SaveChangesAsync(); return(jobInstance); }
/// <inheritdoc /> /// <summary> /// Updates the specified job instance. /// </summary> /// <param name="entity">The entity.</param> /// <returns></returns> public async Task <JobInstanceEntity> Update(JobInstanceEntity entity) { JobInstanceEntity currentEntity = await Find(entity.Id); _context.JobInstances.Update(currentEntity); await _context.SaveChangesAsync(); return(entity); }
/// <inheritdoc /> /// <summary> /// Gets the first job instance available. /// </summary> /// <param name="agentId">The agent identifier.</param> /// <returns> /// <see cref="T:YellowJacket.Dashboard.Entities.JobInstanceEntity" />. /// </returns> public async Task <JobInstanceEntity> GetFirstAvailable(string agentId) { using (await _lock.LockAsync()) { JobInstanceEntity entity = await _context.JobInstances .OrderBy(x => x.CreatedOn) .FirstOrDefaultAsync(x => x.Status == JobInstanceStatus.New.ToString()); if (entity == null) { return(null); } entity.AgentId = agentId; entity.Status = JobInstanceStatus.InProgress.ToString(); await Update(entity); return(entity); } }