Schema cards

# С символа # в схемах начинаются комментарии

 

### Пользователь карточек

type User {

  id: ID  

  name: String!

  age: Int

  phone: String

  vip: Boolean

 

# A relationship in a GraphQL schema is represented by adding an object type as a field inside another object. 

#  То есть ниже мы показываем, что у одного юзера может быть массив карточек

 

  cards: [Card]

}

 

 

### Банковская Карточка

type Card {

  bank: Bank

  number: String 

  balance: Float

  user: User

}

 

### Тип карточки

enum Bank {

  GREEN_BANK

  RED_BANK

  BETA

  TINTIN

}

 

### Запросы Query 

type Query {

 

  # Возвращает всех юзеров

  getAllUsers(): [User]

 

  # Возвращает конкретного юзера

  getUser(id: ID!): User

 

 # Возвращает все карточки юзера по его ID (не уверена, что тут правильно записано)

  getAllCardOfUser(user: ID!): [Card]

 

  # Возвращает баланс карточки по ид юзера

  getBalance(id: number!): balance

 

  # Возвращает общий баланс со всех карт юзера (как в приложениях банковских, сколько всего у тебя денег)

  getAggregateBalance(id: number!): balance

}

 

 

### Запросы на изменение данных

type Mutation {

 

# Создать нового юзера

addUser (id: ID!, name: String!, age: Int, phone: String, vip: Boolean): User!

 

# Создать нового юзера с карточками

addUserWithCards (id: ID!, name: String!, age: Int, phone: String, vip: Boolean, bank: Bank!, number: String!): User!

 

# Создать новую карточку юзеру (баланс будет равен 0)

addCard (bank: Bank!, number: String!, user: ID!): Card!

 

  # Пополнить баланс (в банкомате типа пополняем)

  addMoney (number: String!, balance: Float!): Card!

 

  # Списание средств (купили что-то и оплатили карточкой)

  payMoney (number: String!, balance: Float!): Card!

 

  # Перевести деньги с карты на карту (по номеру или телефону)

  moneyTransfer (number_from: String!, number_to: String!, bank:Bank, balance: Float!): Card!

 

# Удалить карту

DeleteCard (number: String!): Card!

 

# Удалить юзера

DeleteUser (id: ID!): User!

}