2
0

query_collections.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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) Collections(ctx context.Context,
  12. after *string, before *string, first *int, last *int, query *string, reverse *bool, sort *generated.CollectionSortKeys) (*generated.CollectionConnection, error) {
  13. var (
  14. inContext *middleware.GShopifyContext
  15. collections []*generated.Collection
  16. err error
  17. )
  18. if inContext, err = middleware.InContext(ctx); err != nil {
  19. return nil, err
  20. }
  21. if collections, err = r.db.Collections(inContext.Language); err != nil {
  22. return nil, err
  23. }
  24. collections = helper.SortCollections(collections, sort)
  25. return helper.NewCollectionConnection(collections, after, before, first, last, reverse)
  26. }
  27. func (r *productResolver) Collections(ctx context.Context, product *generated.Product,
  28. after *string, before *string, first *int, last *int, reverse *bool) (*generated.CollectionConnection, error) {
  29. var (
  30. inContext *middleware.GShopifyContext
  31. collections []*generated.Collection
  32. err error
  33. )
  34. if inContext, err = middleware.InContext(ctx); err != nil {
  35. return nil, err
  36. }
  37. rawId, err := model.ParseId(model.GidProduct, product.ID)
  38. if err != nil {
  39. return nil, err
  40. }
  41. if collections, err = r.db.ProductCollections(inContext.Language, rawId); err != nil {
  42. return nil, err
  43. }
  44. return helper.NewCollectionConnection(collections, after, before, first, last, reverse)
  45. }
  46. func (r *collectionResolver) Description(_ context.Context, collection *generated.Collection, truncateAt *int) (string, error) {
  47. return fun.TruncateAt(
  48. bluemonday.StrictPolicy().Sanitize(string(collection.DescriptionHTML)),
  49. truncateAt)
  50. }