123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- // getGql - фунция GraphQL запросов для всех запросов ниже!
- function getGql(endpoint) {
- let headers = {
- 'Content-Type': 'application/json;charset=utf-8',
- 'Accept': 'application/json',
- }
- if ('authToken' in localStorage) {
- headers.Authorization = 'Bearer ' + localStorage.authToken
- }
- return async function gql(query, variables = {}) {
- let result = await fetch(endpoint, {
- method: 'POST',
- headers,
- body: JSON.stringify({
- query,
- variables
- })
- }).then(res => res.json())
- if (('errors' in result) && !('data' in result)) {
- throw new Error(JSON.stringify(result.errors))
- }
- result = Object.values(result.data)[0]
- return result
- }
- }
- const gql = getGql('http://shop-roles.node.ed.asmer.org.ua/graphql') // скармливаем урл для запросов
- // ==============================================================
- // Запрос на список корневых категорий
- // запрос на самом сервере
- // query CategoryFind{
- // CategoryFind(query: "[{\"parent\": null}]"){
- // _id name
- // }
- // }
- let findCategory = `query baseCategory($searchVariablesCategory: String){
- CategoryFind(query: $searchVariablesCategory){
- _id name parent {
- _id
- name
- }
- }
- }`
- let variables = {
- searchVariablesCategory: JSON.stringify([{ parent: null }])
- }
- // тест
- gql(findCategory, variables).then(console.log)
- // ===============================================================
- // Запрос для получения одной категории с товарами и картинками
- // запрос на самом сервере
- // query categoryFindOne($q: String,) {
- // CategoryFindOne(query: $q){
- // _id name parent{
- // _id name
- // }
- // goods{
- // _id name description price
- // images{
- // url
- // }
- // }
- // subCategories{
- // _id name
- // }
- // }
- // }
- let findOneCategory = `query categoryFindOne($searchVariablesCategoryOne: String,) {
- CategoryFindOne(query: $searchVariablesCategoryOne){
- _id name parent{
- _id name
- }
- goods{
- _id name description price
- images{
- url
- }
- }
- subCategories{
- _id name
- }
- }
- }`
- let variables = {
- searchVariablesCategoryOne: JSON.stringify([{ _id: "6262ca7dbf8b206433f5b3d1" }])
- }
- // тест
- gql(findOneCategory, variables).then(console.log)
- // ======================================================
- // Запрос на получение товара с описанием и картинками
- // запрос на сервере
- // query oneGoodWithImages($q2: String) {
- // GoodFindOne(query: $q2){
- // _id name price description images {
- // url
- // }
- // }
- // }
- let findGoodWithImage = `query oneGoodWithImages($searchVariablesGoodOne: String) {
- GoodFindOne(query: $searchVariablesGoodOne){
- _id name price description images {
- url
- }
- }
- }
- `
- let variables = {
- searchVariablesGoodOne: JSON.stringify([{ _id: "62c9472cb74e1f5f2ec1a0d3" }])
- }
- // тест
- gql(findGoodWithImage, variables).then(console.log)
- // ===================================================================
- // Запрос на регистрацию - работает, если не залогинен пользователь
- // запрос на сервере
- // mutation registration($loginReg: String, $passwordReg: String){
- // UserUpsert(user: {
- // login: $loginReg, password: $passwordReg
- // }){
- // _id createdAt
- // }
- // }
- let registration = ` mutation registration($loginReg:String,$passwordReg:String ){
- UserUpsert(user:{
- login:$loginReg, password:$passwordReg
- }){
- _id createdAt
- }
- }`
- let variables = {
- loginReg: "abababa",
- passwordReg: "123123"
- }
- // тест
- gql(registration, variables).then(console.log)
- // =======================================================
- // Запрос на логин
- // на сервере
- // query login($login: String, $password: String){
- // login(login: $login, password: $password)
- // }
- let checkLogin = `query login($login: String, $password: String){
- login(login: $login, password: $password)
- }
- `
- let variables = {
- login: "abababa",
- password: "123123"
- }
- // тест
- gql(checkLogin, variables).then(console.log)
- // ===============================================================================
- // Запрос истории заказов - нужно учитывать, что работает только, если вместе с заголовком отправить JWT-token от пользователя
- // запрос на сервере
- // query order{
- // OrderFind(query: "[{}]"){
- // _id total orderGoods{
- // good {
- // _id
- // name
- // price
- // }
- // }
- // }
- // }
- let orderFind = `query order ($order: String){
- OrderFind(query: $order){
- _id total orderGoods{
- good {
- _id
- name
- price
- }
- }
- }
- }
- `
- let variables = {
- order: JSON.stringify([{}])
- }
- // тест
- gql(orderFind, variables).then(console.log)
- // ==========================================================================
- // Запрос оформления заказа - еще нужно добавить запрос на очистку корзины
- // запрос на сервере
- // mutation myOrder($createOrder: OrderInput){
- // OrderUpsert(order: $createOrder) {
- // orderGoods{
- // count good{
- // _id
- // }
- // }
- // }
- // }
- let orderCreate = `mutation myOrder($createOrder: OrderInput){
- OrderUpsert(order: $createOrder) {
- orderGoods{
- count good{
- _id
- }
- }
- }
- }`
- let variables = {
- createOrder: JSON.stringify({ orderGoods: { count: 2, good: { _id: "62c9472cb74e1f5f2ec1a0d2" } } })
- }
- // тест
- gql(orderCreate, variables).then(console.log)
|