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