-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathadmin.js
More file actions
73 lines (62 loc) · 2.29 KB
/
admin.js
File metadata and controls
73 lines (62 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import instance from './axios'
// 관리자용 퀴즈 목록 조회 (숨김 포함)
export const getAdminQuizzes = async (params) => {
const response = await instance.get('/admin/quizzes', { params })
return response.data
}
// 퀴즈 숨김 처리 토글
export const toggleQuizVisibility = async (quizId) => {
const response = await instance.patch(`/admin/quizzes/${quizId}/hide`)
return response.data
}
// 챌린지 생성
export const createChallenge = async (challengeData) => {
const response = await instance.post('/admin/challenges', challengeData)
return response.data
}
// 커스텀 아이템 생성
export const createCustomItem = async (itemData) => {
const response = await instance.post('/admin/items', itemData)
return response.data
}
// 커스텀 아이템 목록 조회
export const getCustomItems = async () => {
const response = await instance.get('/admin/items')
return response.data
}
// 아이템 유저 할당
export const assignItemToUser = async (itemId, userId) => {
const response = await instance.post(`/admin/items/${itemId}/assign/${userId}`)
return response.data
}
// 아이템 이미지 업로드
export const uploadItemImage = async (file, type) => {
const formData = new FormData();
formData.append('file', file);
formData.append('type', type);
// FormData 사용 시 axios가 Content-Type을 자동 설정함
const response = await instance.post('/admin/items/upload', formData, {
headers: { 'Content-Type': 'multipart/form-data' }
});
return response.data; // 상대 경로 문자열 반환
}
// 아이템 수정
export const updateCustomItem = async (itemId, itemData) => {
const response = await instance.put(`/admin/items/${itemId}`, itemData)
return response.data
}
// 할당된 유저 조회
export const getAssignedUsers = async (itemId) => {
const response = await instance.get(`/admin/items/${itemId}/users`)
return response.data
}
// 유저 할당 취소
export const revokeUserItem = async (itemId, userId) => {
const response = await instance.delete(`/admin/items/${itemId}/users/${userId}`)
return response.data
}
// 아이템 삭제
export const deleteCustomItem = async (itemId) => {
const response = await instance.delete(`/admin/items/${itemId}`)
return response.data
}