_examples/federation/reviews/graph/schema.resolvers.go (50 lines of code) (raw):
package graph
// This file will be automatically regenerated based on the schema, any resolver implementations
// will be copied through when generating and any unknown code will be moved to the end.
// Code generated by github.com/99designs/gqlgen version v0.17.57-dev
import (
"context"
"fmt"
"github.com/99designs/gqlgen/_examples/federation/reviews/graph/model"
)
// ManufacturerID is the resolver for the manufacturerID field.
func (r *productResolver) ManufacturerID(ctx context.Context, obj *model.Product, federationRequires map[string]interface{}) (*string, error) {
manufacturer, ok := federationRequires["manufacturer"].(map[string]any)
if !ok {
return nil, fmt.Errorf("manufacturer not provided or not an object")
}
manufacturerID, ok := manufacturer["id"].(string)
if !ok {
return nil, fmt.Errorf("manufacturer.id not provided or not a string")
}
return &manufacturerID, nil
}
// Username is the resolver for the username field.
func (r *userResolver) Username(ctx context.Context, obj *model.User) (string, error) {
panic(fmt.Errorf("not implemented: Username - username"))
}
// Reviews is the resolver for the reviews field.
func (r *userResolver) Reviews(ctx context.Context, obj *model.User, federationRequires map[string]interface{}) ([]*model.Review, error) {
var productReviews []*model.Review
for _, review := range reviews {
if review.Author.ID == obj.ID {
host, ok := federationRequires["host"].(map[string]any)
if !ok {
return nil, fmt.Errorf("host not provided or not an object")
}
hostID, ok := host["id"].(string)
if !ok {
return nil, fmt.Errorf("host.id not provided or not a string")
}
email, ok := federationRequires["email"].(string)
if !ok {
return nil, fmt.Errorf("email not provided or not a string")
}
productReviews = append(productReviews, &model.Review{
Body: review.Body,
Author: review.Author,
Product: review.Product,
HostIDEmail: hostID + ":" + email,
})
}
}
return productReviews, nil
}
// Product returns ProductResolver implementation.
func (r *Resolver) Product() ProductResolver { return &productResolver{r} }
// User returns UserResolver implementation.
func (r *Resolver) User() UserResolver { return &userResolver{r} }
type productResolver struct{ *Resolver }
type userResolver struct{ *Resolver }