query_collections.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package graphql
  2. import (
  3. "context"
  4. "github.com/gshopify/service-wrapper/fun"
  5. "github.com/gshopify/service-wrapper/model"
  6. "github.com/gshopify/service-wrapper/server/middleware"
  7. "github.com/microcosm-cc/bluemonday"
  8. "gshopper.com/gshopify/products/graphql/generated"
  9. "gshopper.com/gshopify/products/graphql/helper"
  10. )
  11. func (r *queryResolver) Collection(ctx context.Context, handle *string, id *string) (*generated.Collection, error) {
  12. panic("not implemented")
  13. }
  14. func (r *queryResolver) Collections(ctx context.Context,
  15. after *string, before *string, first *int, last *int, query *string, reverse *bool, sort *generated.CollectionSortKeys) (*generated.CollectionConnection, error) {
  16. var (
  17. inContext *middleware.GShopifyContext
  18. collections []*generated.Collection
  19. err error
  20. )
  21. if inContext, err = middleware.InContext(ctx); err != nil {
  22. return nil, err
  23. }
  24. if collections, err = r.db.Collections(inContext.Language); err != nil {
  25. return nil, err
  26. }
  27. collections = helper.SortCollections(collections, sort)
  28. return helper.NewCollectionConnection(collections, after, before, first, last, reverse)
  29. }
  30. func (r *productResolver) Collections(ctx context.Context, product *generated.Product,
  31. after *string, before *string, first *int, last *int, reverse *bool) (*generated.CollectionConnection, error) {
  32. var (
  33. inContext *middleware.GShopifyContext
  34. collections []*generated.Collection
  35. err error
  36. )
  37. if inContext, err = middleware.InContext(ctx); err != nil {
  38. return nil, err
  39. }
  40. rawId, err := model.ParseId(model.GidProduct, product.ID)
  41. if err != nil {
  42. return nil, err
  43. }
  44. if collections, err = r.db.ProductCollections(inContext.Language, rawId); err != nil {
  45. return nil, err
  46. }
  47. return helper.NewCollectionConnection(collections, after, before, first, last, reverse)
  48. }
  49. func (r *collectionResolver) Description(_ context.Context, collection *generated.Collection, truncateAt *int) (string, error) {
  50. return fun.TruncateAt(
  51. bluemonday.StrictPolicy().Sanitize(string(collection.DescriptionHTML)),
  52. truncateAt)
  53. }