34 lines
1.2 KiB
GraphQL
34 lines
1.2 KiB
GraphQL
# Example mutations for a simple movie app
|
|
|
|
# Create a movie based on user input
|
|
mutation CreateMovie($title: String!, $genre: String!, $imageUrl: String!)
|
|
@auth(level: USER_EMAIL_VERIFIED, insecureReason: "Any email verified users can create a new movie.") {
|
|
movie_insert(data: { title: $title, genre: $genre, imageUrl: $imageUrl })
|
|
}
|
|
|
|
# Upsert (update or insert) a user's username based on their auth.uid
|
|
mutation UpsertUser($username: String!) @auth(level: USER) {
|
|
# The "auth.uid" server value ensures that users can only register their own user.
|
|
user_upsert(data: { id_expr: "auth.uid", username: $username })
|
|
}
|
|
|
|
# Add a review for a movie
|
|
mutation AddReview($movieId: UUID!, $rating: Int!, $reviewText: String!)
|
|
@auth(level: USER) {
|
|
review_upsert(
|
|
data: {
|
|
userId_expr: "auth.uid"
|
|
movieId: $movieId
|
|
rating: $rating
|
|
reviewText: $reviewText
|
|
# reviewDate defaults to today in the schema. No need to set it manually.
|
|
}
|
|
)
|
|
}
|
|
|
|
# Logged in user can delete their review for a movie
|
|
mutation DeleteReview($movieId: UUID!) @auth(level: USER) {
|
|
# The "auth.uid" server value ensures that users can only delete their own reviews.
|
|
review_delete(key: { userId_expr: "auth.uid", movieId: $movieId })
|
|
}
|