zotregistry.dev/zot@v1.4.4-0.20240314164342-eec277e14d20/pkg/extensions/search/schema.resolvers.go (about)

     1  package search
     2  
     3  // This file will be automatically regenerated based on the schema, any resolver implementations
     4  // will be copied through when generating and any unknown code will be moved to the end.
     5  // Code generated by github.com/99designs/gqlgen version v0.17.44
     6  
     7  import (
     8  	"context"
     9  
    10  	"github.com/vektah/gqlparser/v2/gqlerror"
    11  	zerr "zotregistry.dev/zot/errors"
    12  	"zotregistry.dev/zot/pkg/common"
    13  	"zotregistry.dev/zot/pkg/extensions/search/convert"
    14  	"zotregistry.dev/zot/pkg/extensions/search/gql_generated"
    15  )
    16  
    17  // CVEListForImage is the resolver for the CVEListForImage field.
    18  func (r *queryResolver) CVEListForImage(ctx context.Context, image string, requestedPage *gql_generated.PageInput, searchedCve *string, excludedCve *string, severity *string) (*gql_generated.CVEResultForImage, error) {
    19  	if r.cveInfo == nil {
    20  		return &gql_generated.CVEResultForImage{}, zerr.ErrCVESearchDisabled
    21  	}
    22  
    23  	return getCVEListForImage(ctx, image, r.cveInfo, requestedPage, deref(searchedCve, ""), deref(excludedCve, ""), deref(severity, ""), r.log)
    24  }
    25  
    26  // CVEDiffListForImages is the resolver for the CVEDiffListForImages field.
    27  func (r *queryResolver) CVEDiffListForImages(ctx context.Context, minuend gql_generated.ImageInput, subtrahend gql_generated.ImageInput, requestedPage *gql_generated.PageInput, searchedCve *string, excludedCve *string) (*gql_generated.CVEDiffResult, error) {
    28  	if r.cveInfo == nil {
    29  		return &gql_generated.CVEDiffResult{}, zerr.ErrCVESearchDisabled
    30  	}
    31  
    32  	return getCVEDiffListForImages(ctx, minuend, subtrahend, r.metaDB, r.cveInfo, requestedPage,
    33  		dderef(searchedCve), dderef(excludedCve), r.log)
    34  }
    35  
    36  // ImageListForCve is the resolver for the ImageListForCVE field.
    37  func (r *queryResolver) ImageListForCve(ctx context.Context, id string, filter *gql_generated.Filter, requestedPage *gql_generated.PageInput) (*gql_generated.PaginatedImagesResult, error) {
    38  	if r.cveInfo == nil {
    39  		return &gql_generated.PaginatedImagesResult{}, zerr.ErrCVESearchDisabled
    40  	}
    41  
    42  	filter = cleanFilter(filter)
    43  
    44  	return getImageListForCVE(ctx, id, r.cveInfo, filter, requestedPage, r.metaDB, r.log)
    45  }
    46  
    47  // ImageListWithCVEFixed is the resolver for the ImageListWithCVEFixed field.
    48  func (r *queryResolver) ImageListWithCVEFixed(ctx context.Context, id string, image string, filter *gql_generated.Filter, requestedPage *gql_generated.PageInput) (*gql_generated.PaginatedImagesResult, error) {
    49  	if r.cveInfo == nil {
    50  		return &gql_generated.PaginatedImagesResult{}, zerr.ErrCVESearchDisabled
    51  	}
    52  
    53  	filter = cleanFilter(filter)
    54  
    55  	return getImageListWithCVEFixed(ctx, id, image, r.cveInfo, filter, requestedPage, r.metaDB, r.log)
    56  }
    57  
    58  // ImageListForDigest is the resolver for the ImageListForDigest field.
    59  func (r *queryResolver) ImageListForDigest(ctx context.Context, id string, requestedPage *gql_generated.PageInput) (*gql_generated.PaginatedImagesResult, error) {
    60  	r.log.Info().Msg("extracting repositories")
    61  
    62  	imgResultForDigest, err := getImageListForDigest(ctx, id, r.metaDB, r.cveInfo, requestedPage)
    63  
    64  	return imgResultForDigest, err
    65  }
    66  
    67  // RepoListWithNewestImage is the resolver for the RepoListWithNewestImage field.
    68  func (r *queryResolver) RepoListWithNewestImage(ctx context.Context, requestedPage *gql_generated.PageInput) (*gql_generated.PaginatedReposResult, error) {
    69  	r.log.Info().Str("component", "graphql").Msg("finding image list")
    70  
    71  	paginatedReposResult, err := repoListWithNewestImage(ctx, r.cveInfo, r.log, requestedPage, r.metaDB)
    72  	if err != nil {
    73  		r.log.Error().Err(err).Msg("failed to retrieve repo list")
    74  
    75  		return paginatedReposResult, err
    76  	}
    77  
    78  	return paginatedReposResult, nil
    79  }
    80  
    81  // ImageList is the resolver for the ImageList field.
    82  func (r *queryResolver) ImageList(ctx context.Context, repo string, requestedPage *gql_generated.PageInput) (*gql_generated.PaginatedImagesResult, error) {
    83  	r.log.Info().Str("component", "graphql").Msg("getting a list of all images")
    84  
    85  	imageList, err := getImageList(ctx, repo, r.metaDB, r.cveInfo, requestedPage, r.log)
    86  	if err != nil {
    87  		r.log.Error().Err(err).Str("repository", repo).Msg("failed to retrieve image list for repo")
    88  
    89  		return imageList, err
    90  	}
    91  
    92  	return imageList, nil
    93  }
    94  
    95  // ExpandedRepoInfo is the resolver for the ExpandedRepoInfo field.
    96  func (r *queryResolver) ExpandedRepoInfo(ctx context.Context, repo string) (*gql_generated.RepoInfo, error) {
    97  	repoInfo, err := expandedRepoInfo(ctx, repo, r.metaDB, r.cveInfo, r.log)
    98  
    99  	return repoInfo, err
   100  }
   101  
   102  // GlobalSearch is the resolver for the GlobalSearch field.
   103  func (r *queryResolver) GlobalSearch(ctx context.Context, query string, filter *gql_generated.Filter, requestedPage *gql_generated.PageInput) (*gql_generated.GlobalSearchResult, error) {
   104  	if err := validateGlobalSearchInput(query, filter, requestedPage); err != nil {
   105  		return &gql_generated.GlobalSearchResult{}, err
   106  	}
   107  
   108  	query = cleanQuery(query)
   109  	filter = cleanFilter(filter)
   110  
   111  	paginatedReposResult, images, layers, err := globalSearch(ctx, query, r.metaDB, filter, requestedPage, r.cveInfo, r.log)
   112  
   113  	return &gql_generated.GlobalSearchResult{
   114  		Page:   paginatedReposResult.Page,
   115  		Images: images,
   116  		Repos:  paginatedReposResult.Results,
   117  		Layers: layers,
   118  	}, err
   119  }
   120  
   121  // DependencyListForImage is the resolver for the DependencyListForImage field.
   122  func (r *queryResolver) DerivedImageList(ctx context.Context, image string, digest *string, requestedPage *gql_generated.PageInput) (*gql_generated.PaginatedImagesResult, error) {
   123  	derivedList, err := derivedImageList(ctx, image, digest, r.metaDB, requestedPage, r.cveInfo, r.log)
   124  
   125  	return derivedList, err
   126  }
   127  
   128  // BaseImageList is the resolver for the BaseImageList field.
   129  func (r *queryResolver) BaseImageList(ctx context.Context, image string, digest *string, requestedPage *gql_generated.PageInput) (*gql_generated.PaginatedImagesResult, error) {
   130  	imageList, err := baseImageList(ctx, image, digest, r.metaDB, requestedPage, r.cveInfo, r.log)
   131  
   132  	return imageList, err
   133  }
   134  
   135  // Image is the resolver for the Image field.
   136  func (r *queryResolver) Image(ctx context.Context, image string) (*gql_generated.ImageSummary, error) {
   137  	repo, tag := common.GetImageDirAndTag(image)
   138  
   139  	if tag == "" {
   140  		return &gql_generated.ImageSummary{}, gqlerror.Errorf("no reference provided")
   141  	}
   142  
   143  	skip := convert.SkipQGLField{
   144  		Vulnerabilities: canSkipField(convert.GetPreloads(ctx), "Vulnerabilities"),
   145  	}
   146  
   147  	return getImageSummary(ctx, repo, tag, nil, skip, r.metaDB, r.cveInfo, r.log)
   148  }
   149  
   150  // Referrers is the resolver for the Referrers field.
   151  func (r *queryResolver) Referrers(ctx context.Context, repo string, digest string, typeArg []string) ([]*gql_generated.Referrer, error) {
   152  	referrers, err := getReferrers(r.metaDB, repo, digest, typeArg, r.log)
   153  	if err != nil {
   154  		r.log.Error().Err(err).Msg("failed to get referrers from default store")
   155  
   156  		return []*gql_generated.Referrer{}, err
   157  	}
   158  
   159  	return referrers, nil
   160  }
   161  
   162  // StarredRepos is the resolver for the StarredRepos field.
   163  func (r *queryResolver) StarredRepos(ctx context.Context, requestedPage *gql_generated.PageInput) (*gql_generated.PaginatedReposResult, error) {
   164  	return getStarredRepos(ctx, r.cveInfo, r.log, requestedPage, r.metaDB)
   165  }
   166  
   167  // BookmarkedRepos is the resolver for the BookmarkedRepos field.
   168  func (r *queryResolver) BookmarkedRepos(ctx context.Context, requestedPage *gql_generated.PageInput) (*gql_generated.PaginatedReposResult, error) {
   169  	return getBookmarkedRepos(ctx, r.cveInfo, r.log, requestedPage, r.metaDB)
   170  }
   171  
   172  // Query returns gql_generated.QueryResolver implementation.
   173  func (r *Resolver) Query() gql_generated.QueryResolver { return &queryResolver{r} }
   174  
   175  type queryResolver struct{ *Resolver }