예제 #1
0
        public async Task SetPublishReportAsync(
            ClientPublishReport publishReport,
            CancellationToken cancellationToken = default)
        {
            UpdateResult result = await _publishReports.UpdateOneAsync(
                Builders <ClientPublishReport> .Filter.And(
                    Builders <ClientPublishReport> .Filter.Eq(
                        t => t.EnvironmentId,
                        publishReport.EnvironmentId),
                    Builders <ClientPublishReport> .Filter.Eq(
                        t => t.ClientVersionId,
                        publishReport.ClientVersionId)),
                Builders <ClientPublishReport> .Update.Combine(
                    Builders <ClientPublishReport> .Update.SetOnInsert(
                        t => t.Id, publishReport.Id),
                    Builders <ClientPublishReport> .Update.SetOnInsert(
                        t => t.ClientVersionId, publishReport.ClientVersionId),
                    Builders <ClientPublishReport> .Update.SetOnInsert(
                        t => t.EnvironmentId, publishReport.EnvironmentId),
                    Builders <ClientPublishReport> .Update.Set(
                        t => t.Issues, publishReport.Issues),
                    Builders <ClientPublishReport> .Update.Set(
                        t => t.State, publishReport.State),
                    Builders <ClientPublishReport> .Update.Set(
                        t => t.Published, publishReport.Published)),
                new UpdateOptions { IsUpsert = true },
                cancellationToken)
                                  .ConfigureAwait(false);

            if (!result.IsUpserted(publishReport.Id))
            {
                throw new RepositoryException("The client publish report was not updated.");
            }
        }
예제 #2
0
 public async Task AddPublishReportAsync(
     ClientPublishReport publishReport,
     CancellationToken cancellationToken = default)
 {
     try
     {
         await _publishReports.InsertOneAsync(
             publishReport,
             options : null,
             cancellationToken)
         .ConfigureAwait(false);
     }
     catch (MongoWriteException ex)
         when(ex.WriteError.Category == ServerErrorCategory.DuplicateKey)
         {
             // TODO : resources
             throw new DuplicateKeyException(
                       "TODO",
                       ex);
         }
 }
예제 #3
0
 public async Task SetPublishReportAsync(
     ClientPublishReport publishReport,
     CancellationToken cancellationToken = default)
 {
     try
     {
         await _publishReports.UpdateOneAsync(
             Builders <ClientPublishReport> .Filter.And(
                 Builders <ClientPublishReport> .Filter.Eq(
                     t => t.EnvironmentId,
                     publishReport.EnvironmentId),
                 Builders <ClientPublishReport> .Filter.Eq(
                     t => t.ClientVersionId,
                     publishReport.ClientVersionId)),
             Builders <ClientPublishReport> .Update.Combine(
                 Builders <ClientPublishReport> .Update.SetOnInsert(
                     t => t.Id, publishReport.Id),
                 Builders <ClientPublishReport> .Update.SetOnInsert(
                     t => t.ClientVersionId, publishReport.ClientVersionId),
                 Builders <ClientPublishReport> .Update.SetOnInsert(
                     t => t.EnvironmentId, publishReport.EnvironmentId),
                 Builders <ClientPublishReport> .Update.Set(
                     t => t.Issues, publishReport.Issues),
                 Builders <ClientPublishReport> .Update.Set(
                     t => t.State, publishReport.State),
                 Builders <ClientPublishReport> .Update.Set(
                     t => t.Published, publishReport.Published)),
             new UpdateOptions { IsUpsert = true },
             cancellationToken)
         .ConfigureAwait(false);
     }
     catch (MongoWriteException ex)
         when(ex.WriteError.Category == ServerErrorCategory.DuplicateKey)
         {
             // TODO : resources
             throw new DuplicateKeyException(
                       "TODO",
                       ex);
         }
 }
예제 #4
0
 public async Task UpdatePublishReportAsync(
     ClientPublishReport publishReport,
     CancellationToken cancellationToken = default)
 {
     try
     {
         await _publishReports.ReplaceOneAsync(
             Builders <ClientPublishReport> .Filter.Eq(t => t.Id, publishReport.Id),
             publishReport,
             options : default(ReplaceOptions),
             cancellationToken)
         .ConfigureAwait(false);
     }
     catch (MongoWriteException ex)
         when(ex.WriteError.Category == ServerErrorCategory.DuplicateKey)
         {
             // TODO : resources
             throw new DuplicateKeyException(
                       "TODO",
                       ex);
         }
 }