QUERY createUser(name: String, age: U32, email: String) =>
user <- AddN<User>({name: name, age: age, email: email})
RETURN user
QUERY createFollow(follower_id: ID, followed_id: ID) =>
follower <- N<User>(follower_id)
followed <- N<User>(followed_id)
AddE<Follows>::From(follower)::To(followed) // don't need to specify the `since` property because it has a default value
RETURN "success"
QUERY createPost(user_id: ID, content: String) =>
user <- N<User>(user_id)
post <- AddN<Post>({content: content})
AddE<Created>::From(user)::To(post) // don't need to specify the `created_at` property because it has a default value
RETURN post
QUERY getUsers() =>
users <- N<User>
RETURN users
QUERY getPosts() =>
posts <- N<Post>
RETURN posts
QUERY getPostsByUser(user_id: ID) =>
posts <- N<User>(user_id)::Out<Created>
RETURN posts
QUERY getFollowedUsers(user_id: ID) =>
followed <- N<User>(user_id)::Out<Follows>
RETURN followed
QUERY getFollowedUsersPosts(user_id: ID) =>
followers <- N<User>(user_id)::Out<Follows>
posts <- followers::Out<Created>::RANGE(0, 40)
RETURN posts::{
post: _::{content},
creatorID: _::In<Created>::ID,
}