| | |
| | | // 比赛管理 API |
| | | |
| | | const GRAPHQL_ENDPOINT = 'http://localhost:8080/api/graphql'; |
| | | import { API_CONFIG, graphqlRequest } from '@/config/api'; |
| | | |
| | | // GraphQL 查询语句 |
| | | const GET_ACTIVITIES_QUERY = ` |
| | |
| | | playerMax |
| | | state |
| | | stateName |
| | | sortOrder |
| | | ratingScheme { |
| | | id |
| | | name |
| | |
| | | name |
| | | state |
| | | stateName |
| | | sortOrder |
| | | parent { |
| | | id |
| | | name |
| | |
| | | |
| | | // API 函数 |
| | | export const getActivities = async (page = 0, size = 10, name = '') => { |
| | | const response = await fetch(GRAPHQL_ENDPOINT, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | body: JSON.stringify({ |
| | | query: GET_ACTIVITIES_QUERY, |
| | | variables: { page, size, name } |
| | | }) |
| | | }); |
| | | |
| | | const result = await response.json(); |
| | | if (result.errors) { |
| | | throw new Error(result.errors[0].message); |
| | | try { |
| | | const data = await graphqlRequest(GET_ACTIVITIES_QUERY, { page, size, name }); |
| | | return data.activities; |
| | | } catch (error) { |
| | | throw new Error(error.message || '获取比赛列表失败'); |
| | | } |
| | | return result.data.activities; |
| | | }; |
| | | |
| | | export const getActivity = async (id) => { |
| | | const response = await fetch(GRAPHQL_ENDPOINT, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | body: JSON.stringify({ |
| | | query: GET_ACTIVITY_QUERY, |
| | | variables: { id } |
| | | }) |
| | | }); |
| | | |
| | | const result = await response.json(); |
| | | if (result.errors) { |
| | | throw new Error(result.errors[0].message); |
| | | try { |
| | | const data = await graphqlRequest(GET_ACTIVITY_QUERY, { id }); |
| | | return data.activity; |
| | | } catch (error) { |
| | | throw new Error(error.message || '获取比赛详情失败'); |
| | | } |
| | | return result.data.activity; |
| | | }; |
| | | |
| | | export const getAllActivities = async () => { |
| | | const response = await fetch(GRAPHQL_ENDPOINT, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | body: JSON.stringify({ |
| | | query: GET_ALL_ACTIVITIES_QUERY |
| | | }) |
| | | }); |
| | | |
| | | const result = await response.json(); |
| | | if (result.errors) { |
| | | throw new Error(result.errors[0].message); |
| | | try { |
| | | const data = await graphqlRequest(GET_ALL_ACTIVITIES_QUERY); |
| | | return data.allActivities; |
| | | } catch (error) { |
| | | throw new Error(error.message || '获取所有比赛失败'); |
| | | } |
| | | return result.data.allActivities; |
| | | }; |
| | | |
| | | export const saveActivity = async (activityData) => { |
| | | const response = await fetch(GRAPHQL_ENDPOINT, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | body: JSON.stringify({ |
| | | query: SAVE_ACTIVITY_MUTATION, |
| | | variables: { input: activityData } |
| | | }) |
| | | }); |
| | | |
| | | const result = await response.json(); |
| | | if (result.errors) { |
| | | throw new Error(result.errors[0].message); |
| | | try { |
| | | const data = await graphqlRequest(SAVE_ACTIVITY_MUTATION, { input: activityData }); |
| | | return data.saveActivity; |
| | | } catch (error) { |
| | | throw new Error(error.message || '保存比赛失败'); |
| | | } |
| | | return result.data.saveActivity; |
| | | }; |
| | | |
| | | export const deleteActivity = async (id) => { |
| | | const response = await fetch(GRAPHQL_ENDPOINT, { |
| | | method: 'POST', |
| | | headers: { |
| | | 'Content-Type': 'application/json', |
| | | }, |
| | | body: JSON.stringify({ |
| | | query: DELETE_ACTIVITY_MUTATION, |
| | | variables: { id } |
| | | }) |
| | | }); |
| | | |
| | | const result = await response.json(); |
| | | if (result.errors) { |
| | | throw new Error(result.errors[0].message); |
| | | try { |
| | | const data = await graphqlRequest(DELETE_ACTIVITY_MUTATION, { id }); |
| | | return data.deleteActivity; |
| | | } catch (error) { |
| | | throw new Error(error.message || '删除比赛失败'); |
| | | } |
| | | return result.data.deleteActivity; |
| | | }; |