@@ -354,6 +354,11 @@ IRemoteRepositoryModel Create(RepositoryCacheItem item)
354354 } ;
355355 }
356356
357+ private GitReferenceModel Create ( GitReferenceCacheItem item )
358+ {
359+ return item != null ? new GitReferenceModel ( item . Ref , item . Label , item . RepositoryCloneUrl ) : null ;
360+ }
361+
357362 IPullRequestModel Create ( PullRequestCacheItem prCacheItem )
358363 {
359364 return new PullRequestModel (
@@ -364,13 +369,13 @@ IPullRequestModel Create(PullRequestCacheItem prCacheItem)
364369 prCacheItem . UpdatedAt )
365370 {
366371 Assignee = prCacheItem . Assignee != null ? Create ( prCacheItem . Assignee ) : null ,
367- Base = prCacheItem . Base ?? new GitReferenceModel ( ) ,
372+ Base = Create ( prCacheItem . Base ) ,
368373 Body = prCacheItem . Body ?? string . Empty ,
369374 ChangedFiles = prCacheItem . ChangedFiles . Select ( x => ( IPullRequestFileModel ) new PullRequestFileModel ( x . FileName , x . Status ) ) . ToList ( ) ,
370375 CommentCount = prCacheItem . CommentCount ,
371376 CommitCount = prCacheItem . CommitCount ,
372377 CreatedAt = prCacheItem . CreatedAt ,
373- Head = prCacheItem . Head ,
378+ Head = Create ( prCacheItem . Head ) ,
374379 State = prCacheItem . State . HasValue ?
375380 prCacheItem . State . Value :
376381 prCacheItem . IsOpen . Value ? PullRequestStateEnum . Open : PullRequestStateEnum . Closed ,
@@ -475,10 +480,8 @@ public PullRequestCacheItem(PullRequest pr, IReadOnlyList<PullRequestFile> files
475480 {
476481 Title = pr . Title ;
477482 Number = pr . Number ;
478- Base = new GitReferenceModel { Label = pr . Base . Label , Ref = pr . Base . Ref , RepositoryCloneUrl = pr . Base . Repository . CloneUrl } ;
479- Head = pr . Head != null ?
480- new GitReferenceModel { Label = pr . Head . Label , Ref = pr . Head . Ref , RepositoryCloneUrl = pr . Head . Repository . CloneUrl } :
481- null ;
483+ Base = new GitReferenceCacheItem { Label = pr . Base . Label , Ref = pr . Base . Ref , RepositoryCloneUrl = pr . Base . Repository . CloneUrl } ;
484+ Head = pr . Head != null ? new GitReferenceCacheItem { Label = pr . Head . Label , Ref = pr . Head . Ref , RepositoryCloneUrl = pr . Head . Repository . CloneUrl } : null ;
482485 CommentCount = pr . Comments + pr . ReviewComments ;
483486 CommitCount = pr . Commits ;
484487 Author = new AccountCacheItem ( pr . User ) ;
@@ -496,8 +499,8 @@ public PullRequestCacheItem(PullRequest pr, IReadOnlyList<PullRequestFile> files
496499
497500 public string Title { get ; set ; }
498501 public int Number { get ; set ; }
499- public GitReferenceModel Base { get ; set ; }
500- public GitReferenceModel Head { get ; set ; }
502+ public GitReferenceCacheItem Base { get ; set ; }
503+ public GitReferenceCacheItem Head { get ; set ; }
501504 public int CommentCount { get ; set ; }
502505 public int CommitCount { get ; set ; }
503506 public AccountCacheItem Author { get ; set ; }
@@ -531,6 +534,7 @@ static PullRequestStateEnum GetState(PullRequest pullRequest)
531534 }
532535 }
533536
537+ [ NullGuard ( ValidationFlags . None ) ]
534538 public class PullRequestFileCacheItem
535539 {
536540 public PullRequestFileCacheItem ( )
@@ -546,5 +550,13 @@ public PullRequestFileCacheItem(PullRequestFile file)
546550 public string FileName { get ; set ; }
547551 public PullRequestFileStatus Status { get ; set ; }
548552 }
553+
554+ [ NullGuard ( ValidationFlags . None ) ]
555+ public class GitReferenceCacheItem
556+ {
557+ public string Ref { get ; set ; }
558+ public string Label { get ; set ; }
559+ public string RepositoryCloneUrl { get ; set ; }
560+ }
549561 }
550562}
0 commit comments