"""
Schema GraphQL d’un serveur PHP pour la gestion d’une base de pays.
Base sur la table SQL `countries` :
(code, name, native_name, phone, continent_code, capital, currency, emoji)
"""

schema {
  query: Query
  mutation: Mutation
}

"""
Objet representant un pays dans la base de donnees.
"""
type Country {
  id: ID
  code: String!
  name: String!
  native_name: String
  phone: String
  continent_code: String
  capital: String
  currency: String
  emoji: String
}

"""
Requetes disponibles pour consulter les pays.
"""
type Query {
  """
  Recupere la liste complete des pays.
  """
  countries: [Country!]!

  """
  Recupere un pays par son code ISO (ex: "FR", "US").
  """
  country(code: String!): Country
}

"""
Mutations permettant de creer, modifier ou supprimer des pays.
"""
type Mutation {
  """
  Ajoute un nouveau pays a la base.
  Tous les champs sauf `native_name`, `phone`, `continent_code`,
  `capital`, `currency` et `emoji` sont obligatoires.
  """
  addCountry(
    code: String!
    name: String!
    native_name: String
    phone: String
    continent_code: String
    capital: String
    currency: String
    emoji: String
  ): Country!

  """
  Met a jour un pays existant (seuls les champs envoyes seront modifies).
  """
  updateCountry(
    code: String!
    name: String
    native_name: String
    phone: String
    continent_code: String
    capital: String
    currency: String
    emoji: String
  ): Country

  """
  Supprime un pays par son code ISO.
  Retourne true si la suppression a reussi.
  """
  deleteCountry(
    code: String!
  ): Boolean!
}
