|
@@ -0,0 +1,105 @@
|
|
|
+// let gql = (url, query, variables={}) =>
|
|
|
+// fetch(url, {
|
|
|
+// method: 'POST',
|
|
|
+// headers:{
|
|
|
+// Accept: 'application/json',
|
|
|
+// "Content-Type": 'application/json'
|
|
|
+// },
|
|
|
+// body: JSON.stringify({query, variables})
|
|
|
+// }).then(res => res.json())
|
|
|
+
|
|
|
+// используя функцию gql, понаделать функций с параметрами для разных запросов: категории, категория по id с товарами,
|
|
|
+// товар по id с картинками и описанием, логин, регистрация.
|
|
|
+
|
|
|
+// например:
|
|
|
+
|
|
|
+// const gqlLogin = (login, password) =>
|
|
|
+// gql('http://shop-roles.node.ed.asmer.org.ua/graphql', `query login($login:String, $password: String){
|
|
|
+// login(login:$loagin, password: $password)
|
|
|
+// }`, {login, password})
|
|
|
+
|
|
|
+let gql = (url, query, variables = {}) =>
|
|
|
+ fetch(url, {
|
|
|
+ method: 'POST',
|
|
|
+ headers: {
|
|
|
+ Accept: 'application/json',
|
|
|
+ "Content-Type": 'application/json'
|
|
|
+ },
|
|
|
+ body: JSON.stringify({ query, variables })
|
|
|
+ }).then(res => res.json())
|
|
|
+
|
|
|
+const url = 'http://shop-roles.node.ed.asmer.org.ua/graphql'
|
|
|
+
|
|
|
+// категории
|
|
|
+
|
|
|
+const gqlCategoriesList = () => {
|
|
|
+ return gql(url, `query cats{
|
|
|
+ CategoryFind(query: "[{}]"){
|
|
|
+ _id, name
|
|
|
+ }
|
|
|
+ }`, {})
|
|
|
+}
|
|
|
+
|
|
|
+// категория по id с товарами
|
|
|
+
|
|
|
+const productSearchById = (id) => {
|
|
|
+ let jsn = JSON.stringify({ _id: id })
|
|
|
+ return gql(
|
|
|
+ url,
|
|
|
+ `query searchById{
|
|
|
+ GoodFind(query: ${JSON.stringify(`[${jsn}]`)}){
|
|
|
+ name description images {
|
|
|
+ _id
|
|
|
+ createdAt
|
|
|
+ text
|
|
|
+ url
|
|
|
+ originalFileName
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }`
|
|
|
+ );
|
|
|
+};
|
|
|
+
|
|
|
+// товар по id с картинками и описанием
|
|
|
+
|
|
|
+const gqlCategories = () => {
|
|
|
+ return gql(url,
|
|
|
+ ` query categories{
|
|
|
+ CategoryFind(query:"[{}]"){
|
|
|
+ _id name goods {
|
|
|
+ _id
|
|
|
+ name
|
|
|
+ price
|
|
|
+ description
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }`
|
|
|
+ );
|
|
|
+}
|
|
|
+
|
|
|
+// логин
|
|
|
+
|
|
|
+const gqlLogin = (login, password) => {
|
|
|
+ gql(url, `query login($login:String, $password: String){
|
|
|
+ login(login:$login, password: $password)
|
|
|
+ }`,
|
|
|
+ { login, password })
|
|
|
+}
|
|
|
+
|
|
|
+// регистрация
|
|
|
+
|
|
|
+const gqlRegister = (login, password) => {
|
|
|
+ return gql(url, `mutation register($login: String, $password: String){
|
|
|
+ UserUpsert(user: {login: $login, password: $password}){
|
|
|
+ _id, login, createdAt
|
|
|
+ }
|
|
|
+ }`, { login, password })
|
|
|
+}
|
|
|
+
|
|
|
+(async function call() {
|
|
|
+ console.log(await gqlCategoriesList());
|
|
|
+ console.log(await gqlRegister("Dmytro Suslov", "qwerty"));
|
|
|
+ console.log(await gqlLogin("Dmytro Suslov", "qwerty"));
|
|
|
+ console.log(await gqlCategories());
|
|
|
+ console.log(await productSearchById("62d5ca00b74e1f5f2ec1a156"));
|
|
|
+})();
|