public async Task <ClaimedVersion?> GetOrCreateClaimedVersionAsync(
        ClaimedVersion version,
        CancellationToken cancellationToken)
    {
        FilterDefinition <ClaimedVersion> filter =
            Claimed.Filter.Eq(x => x.ApplicationId, version.ApplicationId) &
            Claimed.Filter.Eq(x => x.ApplicationPartId, version.ApplicationPartId) &
            Claimed.Filter.Eq(x => x.EnvironmentId, version.EnvironmentId) &
            Claimed.Filter.Eq(x => x.GitVersion, version.GitVersion) &
            Claimed.Filter.Eq(x => x.PublishingId, version.PublishingId);

        UpdateDefinition <ClaimedVersion> update =
            Claimed.Update
            .SetOnInsert(x => x.ApplicationId, version.ApplicationId)
            .SetOnInsert(x => x.ApplicationPartId, version.ApplicationPartId)
            .SetOnInsert(x => x.EnvironmentId, version.EnvironmentId)
            .SetOnInsert(x => x.GitVersion, version.GitVersion)
            .SetOnInsert(x => x.PublishingId, version.PublishingId)
            .SetOnInsert(x => x.Configuration, version.Configuration)
            .SetOnInsert(x => x.ClaimedAt, version.ClaimedAt)
            .SetOnInsert(x => x.Id, version.Id);

        FindOneAndUpdateOptions <ClaimedVersion> options = new()
        {
            IsUpsert       = true,
            ReturnDocument = ReturnDocument.After
        };

        return(await _dbContext.ClaimedVersions
               .FindOneAndUpdateAsync(filter, update, options, cancellationToken));
    }
Exemple #2
0
 public async Task <PublishedApplicationPart?> GetPublishedApplicationPartAsync(
     [Service] IPublishingService service,
     [Parent] ClaimedVersion claimedVersion,
     CancellationToken cancellationToken)
 => await service.GetPublishedById(claimedVersion.PublishingId, cancellationToken);
Exemple #3
0
 public async Task <Environment?> GetEnvironmentAsync(
     [Service] IEnvironmentService service,
     [Parent] ClaimedVersion claimedVersion,
     CancellationToken cancellationToken)
 => await service.GetByIdAsync(claimedVersion.EnvironmentId, cancellationToken);
Exemple #4
0
 public async Task <ApplicationPart?> GetApplicationPartAsync(
     [Service] IApplicationService service,
     [Parent] ClaimedVersion claimedVersion,
     CancellationToken cancellationToken)
 => await service.GetPartByIdAsync(claimedVersion.ApplicationPartId, cancellationToken);