// ДЗ: допилить: const getGQL = url => (query, variables) => fetch(url, { //метод method: 'POST', headers: { //заголовок content-type "Content-Type": "application/json" }, body: JSON.stringify({ query, variables }) //body с ключами query и variables }).then(res => res.json()).then(data => { //расковырять data, если все ок - отдать data.login или data. // CategoryFindOne, или шо там еще //если есть errors и нет data, то выбросить исключение и тем самым зареджектить промис return data }); const gql = getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql'); // console.log((await gql(` // query NameForMe1($login:String, $password:String){ // login(login:$login, password:$password) // } // `, { login: 'tst', password: '123' })).data.login) // написать тестовых запросов: // логин, регистрация, категории все, категория по id, товар по id // Регистрация async function gqlRegistration(login, password) { try { let result = await gql(`mutation register ($login:String, $password:String) {UserUpsert(user:{login:$login, password:$password, nick:$login}) {_id}}`, { "login": login, "password": password }); return (result.errors?result.errors[0].message:result.data.UserUpsert._id); } catch (e) { e} }; // Авторизация async function gqlLogin(login, password) { try { let result = await gql(`query log ($login:String, $password:String) { login(login:$login, password:$password)}`, { "login": login, "password": password }); return (result.data.login?result.data.login:'Пользователь не найден') } catch(e) {e} }; // Все категории async function gqlCats() { try { let result = await gql(` query cats($q:String){ CategoryFind(query:$q){_id name parent { _id createdAt name }} }`, {"q": "[{}]"}); return (!result.errors?result.data:result.errors[0].message) } catch(e) {e} }; //Категория по id async function gqlCatById(catId) { try { const catIdQ = `[{"_id":"${catId}"}]`; let result = await gql(`query catById($catId:String){ CategoryFindOne(query:$catId) {_id name parent{name} subCategories{name} }}`, { "catId": catIdQ }); return (!result.errors?result.data:result.errors[0].message) } catch(e) {e} }; //Товар по id async function gqlGoodById(goodId) { try { const goodIdQ = `[{"_id":"${goodId}"}]`; let result = await gql(`query goodById($goodId:String){ GoodFindOne(query:$goodId) {_id name price owner{nick} }}`, { "goodId": goodIdQ }); return (!result.errors?result.data:result.errors[0].message) } catch(e) {e} }; console.log(gqlLogin("Olyatest3", "000")); console.log(gqlLogin("OlyaBrekh", "arriba")); console.log(gqlRegistration("OlyaBrekh", "arriba")); console.log(gqlCats()); console.log(gqlCatById("5dc4b2553f23b553bf3540fc")); console.log(gqlGoodById("5dc45c3d5df9d670df48cc4a"));