api-extensions.ts 2.4 KB

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