flamingo.me/flamingo-commerce/v3@v3.11.0/customer/interfaces/graphql/queryresolver.go (about) 1 package graphql 2 3 import ( 4 "context" 5 "errors" 6 7 "flamingo.me/flamingo/v3/framework/web" 8 9 "flamingo.me/flamingo-commerce/v3/customer/application" 10 "flamingo.me/flamingo-commerce/v3/customer/interfaces/graphql/dtocustomer" 11 ) 12 13 type ( 14 // CustomerResolver graphql resolver 15 CustomerResolver struct { 16 service *application.Service 17 } 18 ) 19 20 // Inject dependencies 21 func (r *CustomerResolver) Inject( 22 service *application.Service, 23 ) *CustomerResolver { 24 r.service = service 25 26 return r 27 } 28 29 // CommerceCustomerStatus resolves the commerce customer query 30 // Deprecated: use commerce customer query resolver instead 31 func (r *CustomerResolver) CommerceCustomerStatus(ctx context.Context) (*dtocustomer.CustomerStatusResult, error) { 32 userID, err := r.service.GetUserID(ctx, web.RequestFromContext(ctx)) 33 if errors.Is(err, application.ErrNoIdentity) { 34 return &dtocustomer.CustomerStatusResult{IsLoggedIn: false}, nil 35 } 36 37 if err != nil { 38 return nil, err 39 } 40 41 return &dtocustomer.CustomerStatusResult{ 42 IsLoggedIn: true, 43 UserID: userID, 44 }, nil 45 } 46 47 // CommerceCustomer resolver the commerce customer 48 func (r *CustomerResolver) CommerceCustomer(ctx context.Context) (*dtocustomer.CustomerResult, error) { 49 user, err := r.service.GetForIdentity(ctx, web.RequestFromContext(ctx)) 50 if errors.Is(err, application.ErrNoIdentity) { 51 return nil, nil 52 } 53 54 if err != nil { 55 return nil, err 56 } 57 58 result := &dtocustomer.CustomerResult{ 59 ID: user.GetID(), 60 PersonalData: user.GetPersonalData(), 61 Addresses: user.GetAddresses(), 62 } 63 64 if address := user.GetDefaultShippingAddress(); address != nil { 65 result.DefaultShippingAddress = *address 66 } 67 68 if address := user.GetDefaultBillingAddress(); address != nil { 69 result.DefaultBillingAddress = *address 70 } 71 72 return result, nil 73 }