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!
}