# gqlgen знает как с этим работать и что парсить это надо через multipart-form
scalar Upload

type User {
  id: ID!
  name: String!
  avatar: String!
  followed: Boolean!

  """возвращает фотограции данного пользователя"""
  photos(count: Int = 10): [Photo!]!

  """возвращает пользователей, на которых подписан данный пользователь"""
  followedUsers(count: Int = 10): [User!]!

  """возвращает пользователей, на которых рекомендуется подписаться данному пользователю"""
  recomendedUsers(count: Int = 10): [User!]!
}

type Photo {
  id: ID!
  user: User!
  url: String!
  comment: String!
  rating: Int!
  liked: Boolean!
}

type Query {
  # query{timeline{id,url,user{id,name}}}
  """возвращает ленту текущего пользователя - фото тех, на кого он подписан"""
  timeline: [Photo!]!

  # query{user(userID:"1"){id,name,avatar}}
  """возвращает выбранного пользователя"""
  user(userID: ID!): User!

  # query{me{id,name,avatar}}
  """возвращает текущего пользователя"""
  me: User!

  # query{photo(photoID:"1"){id,url,comment}}
  """возвращает выбранного пользователя"""
  photo(photoID: ID!): Photo!

  # query{user(userID:"1"){id,avatar,name}}
  """возвращает фотограции выбранного пользователя"""
  photos(userID: ID!): [Photo!]!
}

type Mutation {
  # mutation _{ratePhoto(photoID:"1", direction:"up"){id,url,rating,user{id,name}}}
  ratePhoto(photoID: ID!, direction: String!): Photo!

  # mutation _{followUser(userID:"7", direction:"up"){id,name,avatar}}
  """подписывает текущего пользователя на выбранного пользователя"""
  followUser(userID: ID!, direction: String!): User!

  uploadPhoto(comment: String!, file: Upload!): Photo!
}

# go run github.com/99designs/gqlgen init
# go run github.com/99designs/gqlgen -v
