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