github.com/oinume/lekcije@v0.0.0-20231017100347-5b4c5eb6ab24/backend/interface/graphql/resolver/viewer.resolvers.go (about) 1 package resolver 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.34 6 7 import ( 8 "context" 9 "fmt" 10 11 "github.com/morikuni/failure" 12 "github.com/oinume/lekcije/backend/context_data" 13 lerrors "github.com/oinume/lekcije/backend/errors" 14 "github.com/oinume/lekcije/backend/interface/graphql/model" 15 "github.com/oinume/lekcije/backend/model2" 16 ) 17 18 // UpdateViewer is the resolver for the updateViewer field. 19 func (r *mutationResolver) UpdateViewer(ctx context.Context, input model.UpdateViewerInput) (*model.User, error) { 20 user, err := authenticateFromContext(ctx, r.userUsecase) 21 if err != nil { 22 return nil, err 23 } 24 if input.Email == nil { 25 return toGraphQLUser(user), nil 26 } 27 28 email := *input.Email 29 if !r.userUsecase.IsValidEmail(email) { 30 // TODO: i18n 31 return nil, failure.New(lerrors.InvalidArgument, failure.Messagef("正しいメールアドレスを入力してください。")) 32 } 33 duplicate, err := r.userUsecase.IsDuplicateEmail(ctx, email) 34 if err != nil { 35 return nil, err 36 } 37 if duplicate { 38 // TODO: i18n 39 return nil, failure.New(lerrors.InvalidArgument, failure.Messagef("メールアドレスはすでに登録されています。")) 40 } 41 42 if err := r.userUsecase.UpdateEmail(ctx, user.ID, email); err != nil { 43 return nil, err 44 } 45 user.Email = email 46 47 go func() { 48 if err := r.gaMeasurementUsecase.SendEvent( 49 ctx, 50 context_data.MustGAMeasurementEvent(ctx), 51 model2.GAMeasurementEventCategoryUser, 52 "update", 53 fmt.Sprint(user.ID), 54 0, 55 uint32(user.ID), 56 ); err != nil { 57 panic(err) // TODO: Better error handling 58 } 59 }() 60 61 return toGraphQLUser(user), nil 62 } 63 64 // Viewer is the resolver for the viewer field. 65 func (r *queryResolver) Viewer(ctx context.Context) (*model.User, error) { 66 user, err := authenticateFromContext(ctx, r.userUsecase) 67 if err != nil { 68 return nil, err 69 } 70 return toGraphQLUser(user), nil 71 }