Exemplo n.º 1
0
        /// <inheritdoc/>
        public async Task <JobInfoModel> AddAsync(JobInfoModel job, CancellationToken ct)
        {
            if (job == null)
            {
                throw new ArgumentNullException(nameof(job));
            }
            while (true)
            {
                var document = await _documents.FindAsync <JobDocument>(job.Id, ct);

                if (document != null)
                {
                    throw new ConflictingResourceException($"Job {job.Id} already exists.");
                }
                job.LifetimeData.Created = job.LifetimeData.Updated = DateTime.UtcNow;
                try {
                    var result = await _documents.AddAsync(job.ToDocumentModel(), ct);

                    return(result.Value.ToFrameworkModel());
                }
                catch (ConflictingResourceException) {
                    // Try again
                    continue;
                }
                catch {
                    throw;
                }
            }
        }