/* This is an example snippet - you should consider tailoring it to your service. Note: we only handle the first operation here */ import { Geometry } from "@turf/helpers"; function fetchGraphQL(operationsDoc: string, operationName: string, variables: Record) { return fetch("http://10.0.10.101:8081/v1/graphql", { method: "POST", body: JSON.stringify({ query: operationsDoc, variables, operationName, }), }).then((result) => result.json()); } const operation = ` mutation addUserDefineArea($areaColor:String,$geometry:geometry,$areaName:String,$user_id:String) { insert_rn_user_define_area(objects: {color: $areaColor, geometry:$geometry, name: $areaName, user_id: $user_id}) { returning { color geometry id name user_id } } } `; export async function addUserDefineArea(areaName: string, areaColor: string, geometry: Geometry) { const str = localStorage.getItem("USER_INFO"); let USER_INFO: any; if (str) { USER_INFO = JSON.parse(str); } const result = await fetchGraphQL(operation, "addUserDefineArea", { areaName, areaColor, geometry, user_id: USER_INFO.id, }); if (result.errors) { throw new Error("系统错误"); } else { return result.data.rn_user_define_area; } } const queryOperation = ` query queryAllUserDefineArea($user_id:String) { rn_user_define_area(where: {user_id: {_eq: $user_id}}) { color geometry id name user_id } } `; const removeOperation = ` mutation removeUserDefineArea($id:Int) { delete_rn_user_define_area(where: {id: {_eq: $id}}) { returning { id } } } `; const updateOperation = ` mutation updateUserDefineArea($geometry: geometry, $id: Int) { update_rn_user_define_area(_set: {geometry: $geometry}, where: {id: {_eq: $id}}) { returning { id } } }`; export async function queryAllUserDefineArea() { const str = localStorage.getItem("USER_INFO"); let USER_INFO: any; if (str) { USER_INFO = JSON.parse(str); } const result = await fetchGraphQL(queryOperation, "queryAllUserDefineArea", { user_id: USER_INFO.id }); if (result.errors) { throw new Error("系统错误"); } else { return result.data.rn_user_define_area; } } export async function removeUserDefineArea(id: number) { const result = await fetchGraphQL(removeOperation, "removeUserDefineArea", { id: id }); if (result.errors) { throw new Error("系统错误"); } else { return result.data.rn_user_define_area; } } export async function updateUserDefineArea(id: number, geometry: Geometry) { const result = await fetchGraphQL(updateOperation, "updateUserDefineArea", { geometry, id, }); if (result.errors) { throw new Error("系统错误"); } else { return result.data.update_rn_user_define_area; } }