api-extensions.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { gql } from 'graphql-tag';
  2. export const commonApiExtensions = gql`
  3. type ProductReview implements Node {
  4. id: ID!
  5. createdAt: DateTime!
  6. updatedAt: DateTime!
  7. product: Product!
  8. productVariant: ProductVariant
  9. summary: String!
  10. body: String
  11. rating: Float!
  12. authorName: String!
  13. authorLocation: String
  14. upvotes: Int!
  15. downvotes: Int!
  16. state: String!
  17. response: String
  18. responseCreatedAt: DateTime
  19. }
  20. type ProductReviewList implements PaginatedList {
  21. items: [ProductReview!]!
  22. totalItems: Int!
  23. }
  24. type ProductReviewHistogramItem {
  25. bin: Int!
  26. frequency: Int!
  27. }
  28. extend type Product {
  29. reviews(options: ProductReviewListOptions): ProductReviewList!
  30. reviewsHistogram: [ProductReviewHistogramItem!]!
  31. }
  32. # Auto-generated at runtime
  33. input ProductReviewListOptions
  34. `;
  35. export const adminApiExtensions = gql`
  36. ${commonApiExtensions}
  37. input UpdateProductReviewInput {
  38. id: ID!
  39. summary: String
  40. body: String
  41. response: String
  42. }
  43. extend type ProductReview {
  44. author: Customer
  45. }
  46. extend type Query {
  47. productReviews(options: ProductReviewListOptions): ProductReviewList!
  48. productReview(id: ID!): ProductReview
  49. }
  50. extend type Mutation {
  51. updateProductReview(input: UpdateProductReviewInput!): ProductReview!
  52. approveProductReview(id: ID!): ProductReview
  53. rejectProductReview(id: ID!): ProductReview
  54. }
  55. `;
  56. export const shopApiExtensions = gql`
  57. ${commonApiExtensions}
  58. input SubmitProductReviewInput {
  59. productId: ID!
  60. variantId: ID
  61. customerId: ID
  62. summary: String!
  63. body: String!
  64. rating: Float!
  65. authorName: String!
  66. authorLocation: String
  67. }
  68. extend type Mutation {
  69. submitProductReview(input: SubmitProductReviewInput!): ProductReview!
  70. voteOnReview(id: ID!, vote: Boolean!): ProductReview!
  71. }
  72. `;