123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- // ДЗ: допилить:
- 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"));
-
|