Exemple #1
0
        public async Task <Either <ActionResult, Unit> > DeleteMethodology(Guid methodologyId, bool forceDelete = false)
        {
            return(await _persistenceHelper
                   .CheckEntityExists <Methodology>(methodologyId,
                                                    query => query.Include(m => m.Versions))
                   .OnSuccess(async methodology =>
            {
                var methodologyVersionIds = methodology
                                            .Versions
                                            .Select(methodologyVersion => new IdAndPreviousVersionIdPair <string>(
                                                        methodologyVersion.Id.ToString(),
                                                        methodologyVersion.PreviousVersionId?.ToString()))
                                            .ToList();

                var methodologyVersionIdsInDeleteOrder = VersionedEntityDeletionOrderUtil
                                                         .Sort(methodologyVersionIds)
                                                         .Select(ids => Guid.Parse(ids.Id));

                return await methodologyVersionIdsInDeleteOrder
                .Select(methodologyVersionId => methodology.Versions.Single(version => version.Id == methodologyVersionId))
                .Select(methodologyVersion => DeleteVersion(methodologyVersion, forceDelete))
                .OnSuccessAll()
                .OnSuccessVoid(async() =>
                {
                    _context.Methodologies.Remove(methodology);
                    await _context.SaveChangesAsync();
                });
            }));
        }
Exemple #2
0
        private async Task <Either <ActionResult, Unit> > DeleteReleasesForPublications(IEnumerable <Guid> publicationIds)
        {
            // Some Content Db Releases may be soft-deleted and therefore not visible.
            // Ignore the query filter to make sure they are found
            var releasesIdsToDelete = _contentContext
                                      .Releases
                                      .IgnoreQueryFilters()
                                      .Where(r => publicationIds.Contains(r.PublicationId))
                                      .Select(release => new IdAndPreviousVersionIdPair <string>(release.Id.ToString(), release.PreviousVersionId != null ? release.PreviousVersionId.ToString() : null))
                                      .ToList();

            var releaseIdsInDeleteOrder = VersionedEntityDeletionOrderUtil
                                          .Sort(releasesIdsToDelete)
                                          .Select(ids => Guid.Parse(ids.Id));

            return(await releaseIdsInDeleteOrder
                   .Select(DeleteContentAndStatsRelease)
                   .OnSuccessAll()
                   .OnSuccessVoid());
        }
Exemple #3
0
        public void Sort()
        {
            var entity1Version1Id = "entity-1-version-1";
            var entity1Version2Id = "entity-1-version-2";
            var entity1Version3Id = "entity-1-version-3";
            var entity1Version4Id = "entity-1-version-4";
            var entity1Version5Id = "entity-1-version-5";
            var entity1Version6Id = "entity-1-version-6";
            var entity1Version7Id = "entity-1-version-7";
            var entity1Version8Id = "entity-1-version-8";
            var entity2Version1Id = "entity-2-version-1";
            var entity2Version2Id = "entity-2-version-2";
            var entity2Version3Id = "entity-2-version-3";
            var entity3Version1Id = "entity-3-version-1";
            var entity3Version2Id = "entity-3-version-2";
            var entity4Version3Id = "entity-4-version-3";
            var entity4Version6Id = "entity-4-version-6";

            var versions = new List <IdAndPreviousVersionIdPair <string> >
            {
                new(entity1Version6Id, entity1Version5Id),
                new(entity3Version2Id, entity3Version1Id),
                null,
                new(entity1Version2Id, entity1Version1Id),
                new(entity4Version3Id, "entity-4-version-2"),
                new(entity2Version3Id, entity2Version2Id),
                new(entity1Version1Id, null),
                new(entity1Version5Id, entity1Version4Id),
                new(entity1Version7Id, entity1Version6Id),
                new(entity3Version1Id, null),
                new(entity1Version8Id, entity1Version7Id),
                new(entity4Version6Id, "entity-4-version-5"),
                new(entity2Version2Id, entity2Version1Id),
                new(entity1Version4Id, entity1Version3Id),
                new(entity1Version3Id, entity1Version2Id),
                new(entity2Version1Id, null)
            };

            var ordered = VersionedEntityDeletionOrderUtil
                          .Sort(versions)
                          .Select(version => version.Id)
                          .ToList();

            var expectedVersionOrder = ListOf(
                entity1Version8Id,
                entity1Version7Id,
                entity1Version6Id,
                entity1Version5Id,
                entity1Version4Id,
                entity1Version3Id,
                entity1Version2Id,
                entity1Version1Id,
                entity2Version3Id,
                entity2Version2Id,
                entity2Version1Id,
                entity3Version2Id,
                entity3Version1Id,
                entity4Version3Id,
                entity4Version6Id);

            Assert.Equal(expectedVersionOrder, ordered);
        }
    }