main.js 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. const getGQL = url => {
  2. return function(query, variables) {
  3. return fetch(url,
  4. {
  5. method: "POST",
  6. headers: {"Content-Type": "application/json"},
  7. body: JSON.stringify({query, variables})
  8. }).then(resp => resp.json()).then(data => {
  9. if ("errors" in data) {
  10. throw new Error('ашипка, угадывай што не так')
  11. }
  12. else {
  13. return data.data[Object.keys(variables)[0]]
  14. }
  15. })
  16. }
  17. }
  18. let gql = getGQL('http://shop-roles.asmer.fs.a-level.com.ua/graphql')
  19. //запросики
  20. //categories
  21. async function getCategoriesCount() {
  22. let result = await gql(`
  23. query ($query:String){
  24. CategoryCount(query: $query)
  25. }`, {CategoryCount: '', query: "[{}]"})
  26. return result
  27. }
  28. async function findAllCategories() {
  29. let result = await gql(`
  30. query ($query:String){
  31. CategoryFind(query: $query) {
  32. _id
  33. name
  34. image {
  35. _id text url
  36. }
  37. goods {
  38. _id name description price images {
  39. _id text url
  40. }
  41. }
  42. }
  43. }`, {CategoryFind: '', query: "[{}]"})
  44. return result
  45. }
  46. async function findCategoryById(categoryId) {
  47. let id = `[{"_id":"${categoryId}"}]`
  48. let result = await gql(`
  49. query ($id:String){
  50. CategoryFindOne(query: $id){
  51. name
  52. image {
  53. _id text url
  54. }
  55. goods {
  56. _id name description price images {
  57. _id text url
  58. }
  59. }
  60. }
  61. }`, { CategoryFindOne: '', id })
  62. return result
  63. }
  64. async function findSubCategories(categoryId) {
  65. let id = `[{"_id":"${categoryId}"}]`
  66. let result = await gql(`
  67. query($id:String){
  68. CategoryFindOne(query: $id){
  69. subCategories {
  70. _id
  71. name
  72. image {
  73. _id text url originalFileName
  74. }
  75. goods {
  76. _id name description price images {
  77. _id text url
  78. }
  79. }
  80. }
  81. }
  82. }`, { CategoryFindOne: '', id })
  83. return result
  84. }
  85. //goods
  86. async function getGoodsCount() {
  87. let result = await gql(`
  88. query ($query:String){
  89. GoodCount(query: $query)
  90. }`, {GoodCount: '', query: "[{}]"})
  91. return result
  92. }
  93. async function findAllGoods() {
  94. let result = await gql(`
  95. query ($query:String){
  96. GoodFind(query: $query) {
  97. _id name description price images {
  98. _id text url
  99. }
  100. categories {
  101. _id name
  102. }
  103. }
  104. }`, {GoodFind: '', query: "[{}]"})
  105. return result
  106. }
  107. async function findGoodById(goodId) {
  108. let id = `[{"_id":"${goodId}"}]`
  109. let result = await gql(`
  110. query good($id:String){
  111. GoodFindOne(query: $id) {
  112. name description price images {
  113. _id text url
  114. }
  115. categories {
  116. _id name
  117. }
  118. }
  119. }`, { GoodFindOne: '', id })
  120. return result
  121. }
  122. //users
  123. async function getUsersCount() {
  124. let result = await gql(`
  125. query ($query:String){
  126. UserCount(query: $query)
  127. }`, {UserCount: '', query: "[{}]"})
  128. return result
  129. }
  130. async function findAllUsers() {
  131. let result = await gql(`
  132. query ($query:String){
  133. UserFind(query: $query){
  134. _id createdAt login nick acl avatar {
  135. _id text url
  136. }
  137. }
  138. }`, {UserFind: '', query: "[{}]"})
  139. return result
  140. }
  141. async function findUserById(userId) {
  142. let id = `[{"_id":"${userId}"}]`
  143. let result = await gql(`
  144. query ($id:String){
  145. UserFindOne(query: $id){
  146. _id createdAt login nick acl avatar {
  147. _id text url
  148. }
  149. }
  150. }`, { UserFindOne: '', id })
  151. return result
  152. }
  153. //images
  154. async function getImagesCount() {
  155. let result = await gql(`
  156. query ($query:String){
  157. ImageCount(query: $query)
  158. }`, {ImageCount: '', query: "[{}]"})
  159. return result
  160. }
  161. async function findAllImages() {
  162. let result = await gql(`
  163. query ($query:String){
  164. ImageFind(query: $query) {
  165. _id createdAt text url originalFileName
  166. }
  167. }`, {ImageFind: '', query: "[{}]"})
  168. return result
  169. }
  170. //orders
  171. async function findAllOrders() {
  172. let result = await gql(`
  173. query ($query:String) {
  174. OrderFind(query: $query){
  175. _id
  176. createdAt
  177. total
  178. orderGoods {
  179. _id count price good {
  180. _id name
  181. }
  182. }
  183. owner {
  184. _id login acl
  185. }
  186. }
  187. }`, {OrderFind: '', query: "[{}]"})
  188. return result
  189. }
  190. async function findOrderById(orderId) {
  191. let id = `[{"_id":"${orderId}"}]`
  192. let result = await gql(`
  193. query ($id:String){
  194. OrderFindOne(query: $id){
  195. _id
  196. createdAt
  197. total
  198. orderGoods {
  199. _id count price good {
  200. _id name
  201. }
  202. }
  203. owner {
  204. _id login acl
  205. }
  206. }
  207. }`, { OrderFindOne: '', id })
  208. return result
  209. }
  210. //reg
  211. async function registerUser(login, password) {
  212. let result = await gql(`
  213. mutation ($login:String, $password:String) {
  214. UserUpsert(user:{
  215. login:$login, password:$password
  216. }) {
  217. _id
  218. login
  219. }
  220. }`, {UserUpsert: '', login, password})
  221. return result
  222. }
  223. //всё, хватит..........