예제 #1
0
        private async Task <DateTime> Deletes2Catalog(
            SortedList <DateTime, IList <FeedPackageIdentity> > packages,
            IStorage storage,
            DateTime lastCreated,
            DateTime lastEdited,
            DateTime lastDeleted,
            CancellationToken cancellationToken)
        {
            var writer = new AppendOnlyCatalogWriter(
                storage,
                TelemetryService,
                Constants.MaxPageSize);

            if (packages == null || packages.Count == 0)
            {
                return(lastDeleted);
            }

            foreach (var entry in packages)
            {
                foreach (var packageIdentity in entry.Value)
                {
                    var catalogItem = new DeleteCatalogItem(packageIdentity.Id, packageIdentity.Version, entry.Key);
                    writer.Add(catalogItem);

                    Logger.LogInformation("Delete: {PackageId} {PackageVersion}", packageIdentity.Id, packageIdentity.Version);
                }

                lastDeleted = entry.Key;
            }

            var commitMetadata = PackageCatalog.CreateCommitMetadata(writer.RootUri, new CommitMetadata(lastCreated, lastEdited, lastDeleted));

            await writer.Commit(commitMetadata, cancellationToken);

            Logger.LogInformation("COMMIT package deletes to catalog.");

            return(lastDeleted);
        }
 static Task<Uri> AddToCatalog(PackageIdentity packageIdentity, PublicationDetails publicationDetails, CancellationToken cancellationToken)
 {
     CatalogItem catalogItem = new DeleteCatalogItem(packageIdentity, publicationDetails);
     return CatalogHelpers.AddToCatalog(catalogItem, Configuration.StoragePrimary, Configuration.StorageContainerCatalog, Configuration.CatalogBaseAddress, cancellationToken);
 }