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 }