Refactor API response structure to use 'body' instead of 'data' for consistency across all endpoints. Update stub responses and documentation accordingly.
This commit is contained in:
parent
e777b57991
commit
daa44521b9
@ -41,12 +41,12 @@ export const api = createApi({
|
|||||||
// Tasks
|
// Tasks
|
||||||
getTasks: builder.query<ChallengeTask[], void>({
|
getTasks: builder.query<ChallengeTask[], void>({
|
||||||
query: () => '/challenge/tasks',
|
query: () => '/challenge/tasks',
|
||||||
transformResponse: (response: { data: ChallengeTask[] }) => response.data,
|
transformResponse: (response: { body: ChallengeTask[] }) => response.body,
|
||||||
providesTags: ['Task'],
|
providesTags: ['Task'],
|
||||||
}),
|
}),
|
||||||
getTask: builder.query<ChallengeTask, string>({
|
getTask: builder.query<ChallengeTask, string>({
|
||||||
query: (id) => `/challenge/task/${id}`,
|
query: (id) => `/challenge/task/${id}`,
|
||||||
transformResponse: (response: { data: ChallengeTask }) => response.data,
|
transformResponse: (response: { body: ChallengeTask }) => response.body,
|
||||||
providesTags: (_result, _error, id) => [{ type: 'Task', id }],
|
providesTags: (_result, _error, id) => [{ type: 'Task', id }],
|
||||||
}),
|
}),
|
||||||
createTask: builder.mutation<ChallengeTask, CreateTaskRequest>({
|
createTask: builder.mutation<ChallengeTask, CreateTaskRequest>({
|
||||||
@ -55,7 +55,7 @@ export const api = createApi({
|
|||||||
method: 'POST',
|
method: 'POST',
|
||||||
body,
|
body,
|
||||||
}),
|
}),
|
||||||
transformResponse: (response: { data: ChallengeTask }) => response.data,
|
transformResponse: (response: { body: ChallengeTask }) => response.body,
|
||||||
invalidatesTags: ['Task'],
|
invalidatesTags: ['Task'],
|
||||||
}),
|
}),
|
||||||
updateTask: builder.mutation<ChallengeTask, { id: string; data: UpdateTaskRequest }>({
|
updateTask: builder.mutation<ChallengeTask, { id: string; data: UpdateTaskRequest }>({
|
||||||
@ -64,7 +64,7 @@ export const api = createApi({
|
|||||||
method: 'PUT',
|
method: 'PUT',
|
||||||
body: data,
|
body: data,
|
||||||
}),
|
}),
|
||||||
transformResponse: (response: { data: ChallengeTask }) => response.data,
|
transformResponse: (response: { body: ChallengeTask }) => response.body,
|
||||||
invalidatesTags: (_result, _error, { id }) => [{ type: 'Task', id }, 'Task'],
|
invalidatesTags: (_result, _error, { id }) => [{ type: 'Task', id }, 'Task'],
|
||||||
}),
|
}),
|
||||||
deleteTask: builder.mutation<void, string>({
|
deleteTask: builder.mutation<void, string>({
|
||||||
@ -78,12 +78,12 @@ export const api = createApi({
|
|||||||
// Chains
|
// Chains
|
||||||
getChains: builder.query<ChallengeChain[], void>({
|
getChains: builder.query<ChallengeChain[], void>({
|
||||||
query: () => '/challenge/chains',
|
query: () => '/challenge/chains',
|
||||||
transformResponse: (response: { data: ChallengeChain[] }) => response.data,
|
transformResponse: (response: { body: ChallengeChain[] }) => response.body,
|
||||||
providesTags: ['Chain'],
|
providesTags: ['Chain'],
|
||||||
}),
|
}),
|
||||||
getChain: builder.query<ChallengeChain, string>({
|
getChain: builder.query<ChallengeChain, string>({
|
||||||
query: (id) => `/challenge/chain/${id}`,
|
query: (id) => `/challenge/chain/${id}`,
|
||||||
transformResponse: (response: { data: ChallengeChain }) => response.data,
|
transformResponse: (response: { body: ChallengeChain }) => response.body,
|
||||||
providesTags: (_result, _error, id) => [{ type: 'Chain', id }],
|
providesTags: (_result, _error, id) => [{ type: 'Chain', id }],
|
||||||
}),
|
}),
|
||||||
createChain: builder.mutation<ChallengeChain, CreateChainRequest>({
|
createChain: builder.mutation<ChallengeChain, CreateChainRequest>({
|
||||||
@ -92,7 +92,7 @@ export const api = createApi({
|
|||||||
method: 'POST',
|
method: 'POST',
|
||||||
body,
|
body,
|
||||||
}),
|
}),
|
||||||
transformResponse: (response: { data: ChallengeChain }) => response.data,
|
transformResponse: (response: { body: ChallengeChain }) => response.body,
|
||||||
invalidatesTags: ['Chain'],
|
invalidatesTags: ['Chain'],
|
||||||
}),
|
}),
|
||||||
updateChain: builder.mutation<ChallengeChain, { id: string; data: UpdateChainRequest }>({
|
updateChain: builder.mutation<ChallengeChain, { id: string; data: UpdateChainRequest }>({
|
||||||
@ -101,7 +101,7 @@ export const api = createApi({
|
|||||||
method: 'PUT',
|
method: 'PUT',
|
||||||
body: data,
|
body: data,
|
||||||
}),
|
}),
|
||||||
transformResponse: (response: { data: ChallengeChain }) => response.data,
|
transformResponse: (response: { body: ChallengeChain }) => response.body,
|
||||||
invalidatesTags: (_result, _error, { id }) => [{ type: 'Chain', id }, 'Chain'],
|
invalidatesTags: (_result, _error, { id }) => [{ type: 'Chain', id }, 'Chain'],
|
||||||
}),
|
}),
|
||||||
deleteChain: builder.mutation<void, string>({
|
deleteChain: builder.mutation<void, string>({
|
||||||
@ -115,19 +115,19 @@ export const api = createApi({
|
|||||||
// Users
|
// Users
|
||||||
getUsers: builder.query<ChallengeUser[], void>({
|
getUsers: builder.query<ChallengeUser[], void>({
|
||||||
query: () => '/challenge/users',
|
query: () => '/challenge/users',
|
||||||
transformResponse: (response: { data: ChallengeUser[] }) => response.data,
|
transformResponse: (response: { body: ChallengeUser[] }) => response.body,
|
||||||
providesTags: ['User'],
|
providesTags: ['User'],
|
||||||
}),
|
}),
|
||||||
|
|
||||||
// Statistics
|
// Statistics
|
||||||
getSystemStats: builder.query<SystemStats, void>({
|
getSystemStats: builder.query<SystemStats, void>({
|
||||||
query: () => '/challenge/stats',
|
query: () => '/challenge/stats',
|
||||||
transformResponse: (response: { data: SystemStats }) => response.data,
|
transformResponse: (response: { body: SystemStats }) => response.body,
|
||||||
providesTags: ['Stats'],
|
providesTags: ['Stats'],
|
||||||
}),
|
}),
|
||||||
getUserStats: builder.query<UserStats, string>({
|
getUserStats: builder.query<UserStats, string>({
|
||||||
query: (userId) => `/challenge/user/${userId}/stats`,
|
query: (userId) => `/challenge/user/${userId}/stats`,
|
||||||
transformResponse: (response: { data: UserStats }) => response.data,
|
transformResponse: (response: { body: UserStats }) => response.body,
|
||||||
providesTags: (_result, _error, userId) => [{ type: 'User', id: userId }],
|
providesTags: (_result, _error, userId) => [{ type: 'User', id: userId }],
|
||||||
}),
|
}),
|
||||||
|
|
||||||
@ -137,12 +137,12 @@ export const api = createApi({
|
|||||||
const params = taskId ? `?taskId=${taskId}` : ''
|
const params = taskId ? `?taskId=${taskId}` : ''
|
||||||
return `/challenge/user/${userId}/submissions${params}`
|
return `/challenge/user/${userId}/submissions${params}`
|
||||||
},
|
},
|
||||||
transformResponse: (response: { data: ChallengeSubmission[] }) => response.data,
|
transformResponse: (response: { body: ChallengeSubmission[] }) => response.body,
|
||||||
providesTags: ['Submission'],
|
providesTags: ['Submission'],
|
||||||
}),
|
}),
|
||||||
getAllSubmissions: builder.query<ChallengeSubmission[], void>({
|
getAllSubmissions: builder.query<ChallengeSubmission[], void>({
|
||||||
query: () => '/challenge/submissions',
|
query: () => '/challenge/submissions',
|
||||||
transformResponse: (response: { data: ChallengeSubmission[] }) => response.data,
|
transformResponse: (response: { body: ChallengeSubmission[] }) => response.body,
|
||||||
providesTags: ['Submission'],
|
providesTags: ['Submission'],
|
||||||
}),
|
}),
|
||||||
}),
|
}),
|
||||||
|
|||||||
@ -50,18 +50,19 @@ stubs/api/
|
|||||||
### Успешный ответ
|
### Успешный ответ
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"error": null,
|
"success": true,
|
||||||
"data": <данные>
|
"body": <данные>
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Ошибка
|
### Ошибка
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
"success": false,
|
||||||
|
"body": null,
|
||||||
"error": {
|
"error": {
|
||||||
"message": "Описание ошибки"
|
"message": "Описание ошибки"
|
||||||
},
|
}
|
||||||
"data": null
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -11,14 +11,15 @@ const loadJSON = (filename) => {
|
|||||||
return JSON.parse(data);
|
return JSON.parse(data);
|
||||||
};
|
};
|
||||||
|
|
||||||
const respond = (res, data) => {
|
const respond = (res, body) => {
|
||||||
res.json({ error: null, data });
|
res.json({ success: true, body });
|
||||||
};
|
};
|
||||||
|
|
||||||
const respondError = (res, message, statusCode = 400) => {
|
const respondError = (res, message, statusCode = 400) => {
|
||||||
res.status(statusCode).json({
|
res.status(statusCode).json({
|
||||||
error: { message },
|
success: false,
|
||||||
data: null
|
body: null,
|
||||||
|
error: { message }
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user