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 }