@@ -233,11 +233,27 @@ private async Task<PackageMetadata> BuildMetadataFromCache(CachedPackage cached,
233233 } ;
234234 }
235235
236+ private async Task ForgetEmptyReleaseNotesAsync ( int cachedPackageId , string registry , string packageId )
237+ {
238+ var emptyNotes = ( await _unitOfWork . CachedReleaseNotes
239+ . FindAsync ( rn => rn . CachedPackageId == cachedPackageId && rn . IsEmpty && rn . ReleaseNotesSource != null ) )
240+ . ToList ( ) ;
241+ if ( emptyNotes . Count == 0 )
242+ return ;
243+
244+ foreach ( var note in emptyNotes )
245+ note . ReleaseNotesSource = null ;
246+ await _unitOfWork . SaveChangesAsync ( ) ;
247+
248+ _jobs . Enqueue < IPackageAnalysisService > ( service => service . ScrapePackageReleaseNotesAsync ( packageId , registry ) ) ;
249+ }
250+
236251 private async Task SaveFreshMetadataToCache (
237252 CachedPackage ? cached , PackageMetadata metadata , string registry , string packageId )
238253 {
239254 var registryId = await ResolveRegistryIdAsync ( registry ) ;
240255
256+ var repositoryChanged = false ;
241257 if ( cached == null )
242258 {
243259 cached = new CachedPackage
@@ -263,6 +279,8 @@ private async Task SaveFreshMetadataToCache(
263279 cached . Authors = metadata . Authors ;
264280 cached . IconUrl = metadata . IconUrl ;
265281 cached . ProjectUrl = metadata . ProjectUrl ;
282+ repositoryChanged = metadata . GitHubRepositoryUrl != null
283+ && ! string . Equals ( metadata . GitHubRepositoryUrl , cached . GitHubRepositoryUrl , StringComparison . OrdinalIgnoreCase ) ;
266284 // A repository found while scraping release notes is kept when the registry names none
267285 cached . GitHubRepositoryUrl = metadata . GitHubRepositoryUrl ?? cached . GitHubRepositoryUrl ;
268286 cached . AllVersionsJson = JsonSerializer . Serialize ( metadata . Versions . Select ( v => v . Version ) ) ;
@@ -273,6 +291,9 @@ private async Task SaveFreshMetadataToCache(
273291
274292 await _unitOfWork . SaveChangesAsync ( ) ;
275293
294+ if ( repositoryChanged )
295+ await ForgetEmptyReleaseNotesAsync ( cached . Id , registry . ToLowerInvariant ( ) , packageId ) ;
296+
276297 var latestVersion = metadata . LatestVersion ?? string . Empty ;
277298 var latestPublished = metadata . Versions . FirstOrDefault ( v => v . Version == latestVersion ) ? . PublishedDate ;
278299 await _liveUpdates . RecordLatestVersionAsync ( cached , registry , latestVersion , latestPublished , authoritative : true ) ;
0 commit comments