script.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. // let gql = (url, query, variables={}) =>
  2. // fetch(url, {
  3. // method: 'POST',
  4. // headers:{
  5. // Accept: 'application/json',
  6. // "Content-Type": 'application/json'
  7. // },
  8. // body: JSON.stringify({query, variables})
  9. // }).then(res => res.json())
  10. // используя функцию gql, понаделать функций с параметрами для разных запросов: категории, категория по id с товарами,
  11. // товар по id с картинками и описанием, логин, регистрация.
  12. // например:
  13. // const gqlLogin = (login, password) =>
  14. // gql('http://shop-roles.node.ed.asmer.org.ua/graphql', `query login($login:String, $password: String){
  15. // login(login:$loagin, password: $password)
  16. // }`, {login, password})
  17. let gql = (url, query, variables = {}) =>
  18. fetch(url, {
  19. method: 'POST',
  20. headers: {
  21. Accept: 'application/json',
  22. "Content-Type": 'application/json'
  23. },
  24. body: JSON.stringify({ query, variables })
  25. }).then(res => res.json())
  26. const url = 'http://shop-roles.node.ed.asmer.org.ua/graphql'
  27. // категории
  28. const gqlCategoriesList = () => {
  29. return gql(url, `query cats{
  30. CategoryFind(query: "[{}]"){
  31. _id, name
  32. }
  33. }`, {})
  34. }
  35. // категория по id с товарами
  36. const productSearchById = (id) => {
  37. let jsn = JSON.stringify({ _id: id })
  38. return gql(
  39. url,
  40. `query searchById{
  41. GoodFind(query: ${JSON.stringify(`[${jsn}]`)}){
  42. name description images {
  43. _id
  44. createdAt
  45. text
  46. url
  47. originalFileName
  48. }
  49. }
  50. }`
  51. );
  52. };
  53. // товар по id с картинками и описанием
  54. const gqlCategories = () => {
  55. return gql(url,
  56. ` query categories{
  57. CategoryFind(query:"[{}]"){
  58. _id name goods {
  59. _id
  60. name
  61. price
  62. description
  63. }
  64. }
  65. }`
  66. );
  67. }
  68. // логин
  69. const gqlLogin = (login, password) => {
  70. gql(url, `query login($login:String, $password: String){
  71. login(login:$login, password: $password)
  72. }`,
  73. { login, password })
  74. }
  75. // регистрация
  76. const gqlRegister = (login, password) => {
  77. return gql(url, `mutation register($login: String, $password: String){
  78. UserUpsert(user: {login: $login, password: $password}){
  79. _id, login, createdAt
  80. }
  81. }`, { login, password })
  82. }
  83. (async function call() {
  84. console.log(await gqlCategoriesList());
  85. console.log(await gqlRegister("Dmytro Suslov", "qwerty"));
  86. console.log(await gqlLogin("Dmytro Suslov", "qwerty"));
  87. console.log(await gqlCategories());
  88. console.log(await productSearchById("62d5ca00b74e1f5f2ec1a156"));
  89. })();