示例#1
0
        /// <summary>
        /// Queries the gallery database for the package specified by the <see cref="ValidationContext"/> and returns a <see cref="PackageTimestampMetadata"/>.
        /// If the package is missing from the repository, returns the package's deletion audit record timestamp.
        /// </summary>
        public async Task <PackageTimestampMetadata> GetAsync(ValidationContext context)
        {
            var feedPackageDetails = await _galleryDatabase.GetPackageOrNull(
                context.Package.Id,
                context.Package.Version.ToNormalizedString());

            if (feedPackageDetails != null)
            {
                return(PackageTimestampMetadata.CreateForExistingPackage(
                           feedPackageDetails.CreatedDate,
                           feedPackageDetails.LastEditedDate));
            }

            DateTime?deleted = null;

            if (context.DeletionAuditEntries.Any())
            {
                deleted = context.DeletionAuditEntries.Max(entry => entry.TimestampUtc);
            }

            return(PackageTimestampMetadata.CreateForMissingPackage(deleted));
        }
 private Task <FeedPackageDetails> GetPackageAsync(PackageIdentity package)
 {
     return(_galleryDatabase.GetPackageOrNull(package.Id, package.Version.ToNormalizedString()));
 }