graphql.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. // getGql - фунция GraphQL запросов для всех запросов ниже!
  2. function getGql(endpoint) {
  3. let headers = {
  4. 'Content-Type': 'application/json;charset=utf-8',
  5. 'Accept': 'application/json',
  6. }
  7. if ('authToken' in localStorage) {
  8. headers.Authorization = 'Bearer ' + localStorage.authToken
  9. }
  10. return async function gql(query, variables = {}) {
  11. let result = await fetch(endpoint, {
  12. method: 'POST',
  13. headers,
  14. body: JSON.stringify({
  15. query,
  16. variables
  17. })
  18. }).then(res => res.json())
  19. if (('errors' in result) && !('data' in result)) {
  20. throw new Error(JSON.stringify(result.errors))
  21. }
  22. result = Object.values(result.data)[0]
  23. return result
  24. }
  25. }
  26. const gql = getGql('http://shop-roles.node.ed.asmer.org.ua/graphql') // скармливаем урл для запросов
  27. // ==============================================================
  28. // Запрос на список корневых категорий
  29. // запрос на самом сервере
  30. // query CategoryFind{
  31. // CategoryFind(query: "[{\"parent\": null}]"){
  32. // _id name
  33. // }
  34. // }
  35. let findCategory = `query baseCategory($searchVariablesCategory: String){
  36. CategoryFind(query: $searchVariablesCategory){
  37. _id name parent {
  38. _id
  39. name
  40. }
  41. }
  42. }`
  43. let variables = {
  44. searchVariablesCategory: JSON.stringify([{ parent: null }])
  45. }
  46. // тест
  47. gql(findCategory, variables).then(console.log)
  48. // ===============================================================
  49. // Запрос для получения одной категории с товарами и картинками
  50. // запрос на самом сервере
  51. // query categoryFindOne($q: String,) {
  52. // CategoryFindOne(query: $q){
  53. // _id name parent{
  54. // _id name
  55. // }
  56. // goods{
  57. // _id name description price
  58. // images{
  59. // url
  60. // }
  61. // }
  62. // subCategories{
  63. // _id name
  64. // }
  65. // }
  66. // }
  67. let findOneCategory = `query categoryFindOne($searchVariablesCategoryOne: String,) {
  68. CategoryFindOne(query: $searchVariablesCategoryOne){
  69. _id name parent{
  70. _id name
  71. }
  72. goods{
  73. _id name description price
  74. images{
  75. url
  76. }
  77. }
  78. subCategories{
  79. _id name
  80. }
  81. }
  82. }`
  83. let variables = {
  84. searchVariablesCategoryOne: JSON.stringify([{ _id: "6262ca7dbf8b206433f5b3d1" }])
  85. }
  86. // тест
  87. gql(findOneCategory, variables).then(console.log)
  88. // ======================================================
  89. // Запрос на получение товара с описанием и картинками
  90. // запрос на сервере
  91. // query oneGoodWithImages($q2: String) {
  92. // GoodFindOne(query: $q2){
  93. // _id name price description images {
  94. // url
  95. // }
  96. // }
  97. // }
  98. let findGoodWithImage = `query oneGoodWithImages($searchVariablesGoodOne: String) {
  99. GoodFindOne(query: $searchVariablesGoodOne){
  100. _id name price description images {
  101. url
  102. }
  103. }
  104. }
  105. `
  106. let variables = {
  107. searchVariablesGoodOne: JSON.stringify([{ _id: "62c9472cb74e1f5f2ec1a0d3" }])
  108. }
  109. // тест
  110. gql(findGoodWithImage, variables).then(console.log)
  111. // ===================================================================
  112. // Запрос на регистрацию - работает, если не залогинен пользователь
  113. // запрос на сервере
  114. // mutation registration($loginReg: String, $passwordReg: String){
  115. // UserUpsert(user: {
  116. // login: $loginReg, password: $passwordReg
  117. // }){
  118. // _id createdAt
  119. // }
  120. // }
  121. let registration = ` mutation registration($loginReg:String,$passwordReg:String ){
  122. UserUpsert(user:{
  123. login:$loginReg, password:$passwordReg
  124. }){
  125. _id createdAt
  126. }
  127. }`
  128. let variables = {
  129. loginReg: "abababa",
  130. passwordReg: "123123"
  131. }
  132. // тест
  133. gql(registration, variables).then(console.log)
  134. // =======================================================
  135. // Запрос на логин
  136. // на сервере
  137. // query login($login: String, $password: String){
  138. // login(login: $login, password: $password)
  139. // }
  140. let checkLogin = `query login($login: String, $password: String){
  141. login(login: $login, password: $password)
  142. }
  143. `
  144. let variables = {
  145. login: "abababa",
  146. password: "123123"
  147. }
  148. // тест
  149. gql(checkLogin, variables).then(console.log)
  150. // ===============================================================================
  151. // Запрос истории заказов - нужно учитывать, что работает только, если вместе с заголовком отправить JWT-token от пользователя
  152. // запрос на сервере
  153. // query order{
  154. // OrderFind(query: "[{}]"){
  155. // _id total orderGoods{
  156. // good {
  157. // _id
  158. // name
  159. // price
  160. // }
  161. // }
  162. // }
  163. // }
  164. let orderFind = `query order ($order: String){
  165. OrderFind(query: $order){
  166. _id total orderGoods{
  167. good {
  168. _id
  169. name
  170. price
  171. }
  172. }
  173. }
  174. }
  175. `
  176. let variables = {
  177. order: JSON.stringify([{}])
  178. }
  179. // тест
  180. gql(orderFind, variables).then(console.log)
  181. // ==========================================================================
  182. // Запрос оформления заказа - еще нужно добавить запрос на очистку корзины
  183. // запрос на сервере
  184. // mutation myOrder($createOrder: OrderInput){
  185. // OrderUpsert(order: $createOrder) {
  186. // orderGoods{
  187. // count good{
  188. // _id
  189. // }
  190. // }
  191. // }
  192. // }
  193. let orderCreate = `mutation myOrder($createOrder: OrderInput){
  194. OrderUpsert(order: $createOrder) {
  195. orderGoods{
  196. count good{
  197. _id
  198. }
  199. }
  200. }
  201. }`
  202. let variables = {
  203. createOrder: JSON.stringify({ orderGoods: { count: 2, good: { _id: "62c9472cb74e1f5f2ec1a0d2" } } })
  204. }
  205. // тест
  206. gql(orderCreate, variables).then(console.log)