const getGQL = url => { return (query, variables) => { return fetch(url, { method: 'POST', headers: { "content-type": "application/json", ...(localStorage.authToken ? { Authorization: "Bearer " + localStorage.authToken } : {}) }, body: JSON.stringify({ query, variables }), }).then(res => res.json()) } } let gql = getGQL("http://shop-roles.asmer.fs.a-level.com.ua/graphql") //функция для регистрации let reg = async (login, password) => { let query = `mutation reg($l: String, $p: String) { UserUpsert(user: { login: $l, password: $p } ) { _id } }` let qVariables = { "l": login, "p": password } let res = await gql(query, qVariables) return res } //функция для логина let log = async (login, password) => { let query = `query log($l: String, $p: String) { login(login: $l, password: $p) }` let qVariables = { "l": login, "p": password } let token = await gql(query, qVariables) console.log(token) localStorage.authToken = token.data.login } //функция для отправки заказа. Принимает объект вида:{_id1: количество, _id2: количество} let newOrder = async (obj) => { let option = Object.entries(obj); let orderGoods = []; for (let key of option) { let i = { "count": key[1], "good": { "_id": key[0] } } orderGoods.push(i); } let query = `mutation sndOrder($order: OrderInput) { OrderUpsert(order: $order) { _id createdAt total } }` let qVariables = { "order": { "orderGoods": orderGoods } } let res = await gql(query, qVariables) console.log(res) return res } //функция для получения всех заказов let getOrders = async () => { let query = `query ordersfnd { OrderFind(query: "[{}]"){ _id total owner{ _id } orderGoods{ good{ _id name } count total } } }` let res = await gql(query) console.log(res) return res } //функция для получения одного заказа по _id let orderById = async (id) => { let query = `query orderfnd($id: String){ OrderFind(query: $id){ createdAt total owner{ _id } orderGoods{ good{ _id name } count total } } }` let qVariables = { "id": JSON.stringify([{ "_id": id }]) } let res = await gql(query, qVariables) console.log(res) return res }