diff --git a/src/api/projectLists.api.ts b/src/api/projectLists.api.ts index f37fbcab..086f7679 100644 --- a/src/api/projectLists.api.ts +++ b/src/api/projectLists.api.ts @@ -1,4 +1,6 @@ import type { + ApiProjectLists, + ApiProjectStatistic, ProjectLists, ProjectStatistic, } from '../models/mainProjectLists'; @@ -7,11 +9,11 @@ import { httpClient } from './http.api'; export const getProjectLists = async (params: SearchFilters) => { try { - const response = await httpClient.get('/project', { + const response = await httpClient.get('/project', { params, }); - return response.data; + return response.data.data; } catch (e) { console.log('getProjectLists', e); } @@ -19,8 +21,11 @@ export const getProjectLists = async (params: SearchFilters) => { export const getProjectStatistic = async () => { try { - const response = await httpClient.get('/project/count'); - return response.data; + const response = await httpClient.get( + '/project/count' + ); + + return response.data.data; } catch (e) { console.log('getProjectStatistic', e); } diff --git a/src/api/projectSearchFiltering.api.ts b/src/api/projectSearchFiltering.api.ts index 9aa0a621..348b2d44 100644 --- a/src/api/projectSearchFiltering.api.ts +++ b/src/api/projectSearchFiltering.api.ts @@ -1,14 +1,11 @@ -import type { - MethodTagHeader, - PositionTagHeader, - SillTagHeader, -} from '../models/tags'; +import type { ApiMethodTag, ApiPositionTag, ApiSkillTag } from '../models/tags'; import { httpClient } from './http.api'; export const getSkillTag = async () => { try { - const response = await httpClient.get('/skill-tag'); - return response.data; + const response = await httpClient.get('/skill-tag'); + + return response.data.data; } catch (e) { console.log('getSkillTag', e); } @@ -16,8 +13,8 @@ export const getSkillTag = async () => { export const getPositionTag = async () => { try { - const response = await httpClient.get('/position-tag'); - return response.data; + const response = await httpClient.get('/position-tag'); + return response.data.data; } catch (e) { console.log('getPositionTag', e); } @@ -25,8 +22,8 @@ export const getPositionTag = async () => { export const getMethodTag = async () => { try { - const response = await httpClient.get('/method-type'); - return response.data; + const response = await httpClient.get('/method-type'); + return response.data.data; } catch (e) { console.log('getMethodTag', e); } diff --git a/src/components/home/projectCardLists/cardList/CardList.tsx b/src/components/home/projectCardLists/cardList/CardList.tsx index 359d712d..d0a18053 100644 --- a/src/components/home/projectCardLists/cardList/CardList.tsx +++ b/src/components/home/projectCardLists/cardList/CardList.tsx @@ -11,10 +11,12 @@ interface CardListProps { } export default function CardList({ list }: CardListProps) { - const listPositionTag = list.positionTags.slice(0, 2); - const listSkillTag = list.skillTags.slice(0, 4); - const othersPosition = list.positionTags.length - 2; - const othersSkill = list.skillTags.length - 4; + console.log('리스트*-*-*-*-*-*-*', list); + + const listPositionTag = list.positions.slice(0, 2); + const listSkillTag = list.skills.slice(0, 4); + const othersPosition = list.positions.length - 2; + const othersSkill = list.skills.length - 4; return ( 마감일: {formatDate(list.recruitmentEndDate)} @@ -22,33 +24,33 @@ export default function CardList({ list }: CardListProps) { 모집 분야 - {Boolean(list.positionTags.length) && + {Boolean(list.positions.length) && listPositionTag.map((tag) => ( ))} - {list.positionTags.length > listPositionTag.length && ( + {list.positions.length > listPositionTag.length && ( +{othersPosition} )} - {Boolean(list.skillTags.length) && + {Boolean(list.skills.length) && listSkillTag.map((tag) => ( ))} - {list.skillTags.length > listSkillTag.length && ( + {list.skills.length > listSkillTag.length && ( +{othersSkill} )} - - {list.User.nickname} + + {list.user.nickname} {list.isBeginner && } diff --git a/src/components/home/searchFiltering/filteringContents/filtering/Filtering.tsx b/src/components/home/searchFiltering/filteringContents/filtering/Filtering.tsx index 9115b489..d69e1efe 100644 --- a/src/components/home/searchFiltering/filteringContents/filtering/Filtering.tsx +++ b/src/components/home/searchFiltering/filteringContents/filtering/Filtering.tsx @@ -24,7 +24,7 @@ export default function Filtering({ selects, defaultValue }: FilteringProps) { useEffect(() => { if (!selects.length) return; setChangeValue((prev) => { - if (searchFilters.positionTag !== 0 || searchFilters.methodId !== 0) { + if (searchFilters.positionTag !== 0 || searchFilters.methodType !== 0) { if (defaultValue === SEARCH_FILTERING_DEFAULT_VALUE.POSITION) { const positionTag = selects.find( (data) => data.id === searchFilters.positionTag @@ -33,7 +33,7 @@ export default function Filtering({ selects, defaultValue }: FilteringProps) { return positionTag ?? SEARCH_FILTERING_DEFAULT_VALUE.METHOD; } else if (defaultValue === SEARCH_FILTERING_DEFAULT_VALUE.METHOD) { const methodTag = selects.find( - (data) => data.id === searchFilters.methodId + (data) => data.id === searchFilters.methodType )?.name; return methodTag ?? SEARCH_FILTERING_DEFAULT_VALUE.METHOD; @@ -42,7 +42,7 @@ export default function Filtering({ selects, defaultValue }: FilteringProps) { return prev; }); }, [ - searchFilters.methodId, + searchFilters.methodType, searchFilters.positionTag, selects, defaultValue, @@ -55,7 +55,7 @@ export default function Filtering({ selects, defaultValue }: FilteringProps) { if (defaultValue === SEARCH_FILTERING_DEFAULT_VALUE.POSITION) { handleUpdateFilters('positionTag', tagId); } else if (defaultValue === SEARCH_FILTERING_DEFAULT_VALUE.METHOD) { - handleUpdateFilters('methodId', tagId); + handleUpdateFilters('methodType', tagId); } }; diff --git a/src/context/SearchFilteringContext.tsx b/src/context/SearchFilteringContext.tsx index b023b873..90d7fda2 100644 --- a/src/context/SearchFilteringContext.tsx +++ b/src/context/SearchFilteringContext.tsx @@ -4,7 +4,7 @@ import type { SearchFilters } from '../models/SearchFilters'; type SearchFilteringKey = | 'skillTag' | 'positionTag' - | 'methodId' + | 'methodType' | 'isBeginner' | 'keyword' | 'page'; @@ -25,7 +25,7 @@ export function SearchFilteringProvider({ children }: PropsWithChildren) { const [searchFilters, setSearchFilters] = useState({ skillTag: [], positionTag: 0, - methodId: 0, + methodType: 0, isBeginner: false, keyword: '', page: 1, diff --git a/src/hooks/useSearchFilteringSkillTag.ts b/src/hooks/useSearchFilteringSkillTag.ts index d99c82a7..24b28311 100644 --- a/src/hooks/useSearchFilteringSkillTag.ts +++ b/src/hooks/useSearchFilteringSkillTag.ts @@ -10,7 +10,7 @@ import type { MethodTag, PositionTag, SkillTag } from '../models/tags'; export const useSearchFilteringSkillTag = () => { const [skillTagsData, setSkillTagsData] = useState([]); const [positionTagsData, setPositionTagsData] = useState([]); - const [methodTagsData, setMethodTagsData] = useState(); + const [methodTagsData, setMethodTagsData] = useState([]); const queries = useQueries({ queries: [ @@ -38,10 +38,11 @@ export const useSearchFilteringSkillTag = () => { const [skillQuery, positionQuery, methodQuery] = queries; useEffect(() => { - if (!skillQuery.data || !positionQuery.data) return; - setSkillTagsData(skillQuery.data.data); - setPositionTagsData(positionQuery.data.data); - setMethodTagsData(methodQuery.data?.data); + if (!skillQuery.data || !positionQuery.data || !methodQuery.data) return; + + setSkillTagsData(skillQuery.data); + setPositionTagsData(positionQuery.data); + setMethodTagsData(methodQuery.data); }, [skillQuery.data, positionQuery.data, methodQuery.data]); return { skillTagsData, positionTagsData, methodTagsData }; diff --git a/src/mock/mockProjectList.json b/src/mock/mockProjectList.json index 16c09abb..c40b54c9 100644 --- a/src/mock/mockProjectList.json +++ b/src/mock/mockProjectList.json @@ -1,209 +1,352 @@ -[ - { - "id": 68, - "title": "클론코딩 사이드 프로젝트 모집 공고", - "description": "string", - "totalMember": 3, - "startDate": "2025-01-25T00:00:00.000Z", - "estimatedPeriod": "3개월", - "methodId": 1, - "authorId": 8, - "views": 2, - "isBeginner": true, - "isDone": true, - "recruitmentEndDate": "2025-02-15T00:00:00.000Z", - "recruitmentStartDate": "2025-01-06T00:00:00.000Z", - "createdAt": "2025-01-06T21:19:21.000Z", - "updatedAt": "2025-01-06T21:19:21.000Z", - "ProjectSkillTag": [ +{ + "success": true, + "message": "프로젝트 목록 조회 성공", + "data": { + "currentPage": 1, + "lastPage": 1, + "total": 6, + "projects": [ { - "projectId": 68, - "skillTagId": 12, - "SkillTag": { - "id": 12, - "name": "Kotlin", - "img": "스킬 태그 이미지 주소", - "createdAt": "2025-01-02T15:09:19.000Z" - } - } - ], - "ProjectPositionTag": [ - { - "projectId": 68, - "positionTagId": 1, - "PositionTag": { - "id": 1, - "name": "백엔드", - "createdAt": "2025-01-02T12:19:48.000Z" - } - }, - { - "projectId": 68, - "positionTagId": 2, - "PositionTag": { + "id": 49, + "title": "ㅇㄹㄴㄷㄹㄴㅇㄹㄷㄴㅇㄹㄷㄴㅇㄹㄷㄴㄹ", + "description": "ㅗㄹㅅ홓롱솔홍소ㄱㅅ롤소", + "totalMember": 3, + "startDate": "2012-02-12", + "estimatedPeriod": "6개월", + "isBeginner": true, + "isDone": false, + "recruitmentStartDate": "2025-04-01", + "recruitmentEndDate": "2025-04-10", + "views": 0, + "user": { + "id": 4, + "nickname": "test", + "img": null + }, + "methodType": { "id": 2, - "name": "프론트엔드", - "createdAt": "2025-01-02T12:19:51.000Z" - } - } - ] - }, - { - "id": 68, - "title": "클론코딩 사이드 프로젝트 모집 공고22222222222222222222222222222222222222222222222222222", - "description": "string", - "totalMember": 3, - "startDate": "2025-01-25T00:00:00.000Z", - "estimatedPeriod": "3개월", - "methodId": 1, - "authorId": 8, - "views": 2, - "isBeginner": true, - "isDone": true, - "recruitmentEndDate": "2025-02-15T00:00:00.000Z", - "recruitmentStartDate": "2025-01-06T00:00:00.000Z", - "createdAt": "2025-01-06T21:19:21.000Z", - "updatedAt": "2025-01-06T21:19:21.000Z", - "ProjectSkillTag": [ - { - "projectId": 68, - "skillTagId": 12, - "SkillTag": { - "id": 12, - "name": "Kotlin", - "img": "스킬 태그 이미지 주소", - "createdAt": "2025-01-02T15:09:19.000Z" - } - }, - { - "projectId": 68, - "skillTagId": 12, - "SkillTag": { - "id": 12, - "name": "Kotlin", - "img": "스킬 태그 이미지 주소", - "createdAt": "2025-01-02T15:09:19.000Z" - } - }, - { - "projectId": 68, - "skillTagId": 12, - "SkillTag": { - "id": 12, - "name": "Kotlin", - "img": "스킬 태그 이미지 주소", - "createdAt": "2025-01-02T15:09:19.000Z" - } - }, - { - "projectId": 68, - "skillTagId": 12, - "SkillTag": { - "id": 12, - "name": "Kotlin", - "img": "스킬 태그 이미지 주소", - "createdAt": "2025-01-02T15:09:19.000Z" - } + "name": "오프라인" + }, + "positions": [ + { + "id": 1, + "name": "프론트엔드" + } + ], + "skills": [ + { + "id": 1, + "name": "Spring", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Spring.png" + } + ] }, { - "projectId": 68, - "skillTagId": 12, - "SkillTag": { - "id": 12, - "name": "Kotlin", - "img": "스킬 태그 이미지 주소", - "createdAt": "2025-01-02T15:09:19.000Z" - } + "id": 40, + "title": "AI 기반 추천 시스템 개발", + "description": "사용자 데이터를 분석하여 맞춤형 추천을 제공하는 AI 기반 시스템을 개발합니다.", + "totalMember": 5, + "startDate": "2025-04-01", + "estimatedPeriod": "3개월", + "isBeginner": true, + "isDone": false, + "recruitmentStartDate": "2025-03-20", + "recruitmentEndDate": "2025-04-01", + "views": 0, + "user": { + "id": 4, + "nickname": "test", + "img": null + }, + "methodType": { + "id": 2, + "name": "오프라인" + }, + "positions": [ + { + "id": 1, + "name": "프론트엔드" + }, + { + "id": 3, + "name": "디자이너" + } + ], + "skills": [ + { + "id": 2, + "name": "Django", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Django.png" + }, + { + "id": 5, + "name": "GraphQL", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/GraphQL.png" + }, + { + "id": 6, + "name": "JavaScript", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/JavaScript.png" + }, + { + "id": 3, + "name": "Express", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Express.png" + }, + { + "id": 7, + "name": "Next.js", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Next.js.png" + }, + { + "id": 4, + "name": "Figma", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Figma.png" + }, + { + "id": 8, + "name": "Node.js", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Node.js.png" + }, + { + "id": 13, + "name": "Sass", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Sass.png" + }, + { + "id": 12, + "name": "Flutter", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Flutter.png" + }, + { + "id": 11, + "name": "C++", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/C%2B%2B.png" + }, + { + "id": 21, + "name": "Go", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Go.png" + }, + { + "id": 26, + "name": "Nest.js", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Nest.js.png" + }, + { + "id": 16, + "name": "MongoDB", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/MongoDB.png" + }, + { + "id": 17, + "name": "Kotlin", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Kotlin.png" + }, + { + "id": 22, + "name": "Docker", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Docker.png" + }, + { + "id": 27, + "name": "Ruby", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Ruby.png" + }, + { + "id": 28, + "name": "Unity", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Unity.png" + }, + { + "id": 25, + "name": "Java", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Java.png" + }, + { + "id": 20, + "name": "Firebase", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Firebase.png" + }, + { + "id": 15, + "name": "PHP", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/PHP.png" + }, + { + "id": 10, + "name": "Swift", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Swift.png" + } + ] }, { - "projectId": 68, - "skillTagId": 12, - "SkillTag": { - "id": 12, - "name": "Kotlin", - "img": "스킬 태그 이미지 주소", - "createdAt": "2025-01-02T15:09:19.000Z" - } + "id": 41, + "title": "AI 기반 추천 시스템 개발", + "description": "사용자 데이터를 분석하여 맞춤형 추천을 제공하는 AI 기반 시스템을 개발합니다.", + "totalMember": 5, + "startDate": "2025-04-01", + "estimatedPeriod": "3 months", + "isBeginner": true, + "isDone": false, + "recruitmentStartDate": "2025-03-20", + "recruitmentEndDate": "2025-04-01", + "views": 0, + "user": { + "id": 4, + "nickname": "test", + "img": null + }, + "methodType": { + "id": 2, + "name": "오프라인" + }, + "positions": [ + { + "id": 1, + "name": "프론트엔드" + }, + { + "id": 2, + "name": "백엔드" + } + ], + "skills": [ + { + "id": 1, + "name": "Spring", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Spring.png" + }, + { + "id": 5, + "name": "GraphQL", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/GraphQL.png" + } + ] }, { - "projectId": 68, - "skillTagId": 12, - "SkillTag": { - "id": 12, - "name": "Kotlin", - "img": "스킬 태그 이미지 주소", - "createdAt": "2025-01-02T15:09:19.000Z" - } - } - ], - "ProjectPositionTag": [ - { - "projectId": 68, - "positionTagId": 1, - "PositionTag": { + "id": 42, + "title": "AI 기반 추천 시스템 개발", + "description": "사용자 데이터를 분석하여 맞춤형 추천을 제공하는 AI 기반 시스템을 개발합니다.", + "totalMember": 5, + "startDate": "2025-04-01", + "estimatedPeriod": "3 months", + "isBeginner": true, + "isDone": false, + "recruitmentStartDate": "2025-03-20", + "recruitmentEndDate": "2025-04-01", + "views": 0, + "user": { + "id": 4, + "nickname": "test", + "img": null + }, + "methodType": { "id": 1, - "name": "백엔드", - "createdAt": "2025-01-02T12:19:48.000Z" - } + "name": "온라인" + }, + "positions": [ + { + "id": 1, + "name": "프론트엔드" + }, + { + "id": 3, + "name": "디자이너" + } + ], + "skills": [ + { + "id": 1, + "name": "Spring", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Spring.png" + }, + { + "id": 3, + "name": "Express", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Express.png" + } + ] }, { - "projectId": 68, - "positionTagId": 2, - "PositionTag": { - "id": 2, - "name": "프론트엔드", - "createdAt": "2025-01-02T12:19:51.000Z" - } - } - ] - }, - { - "id": 68, - "title": "클론코딩 사이드 프로젝트 모집 공고", - "description": "string", - "totalMember": 3, - "startDate": "2025-01-25T00:00:00.000Z", - "estimatedPeriod": "3개월", - "methodId": 1, - "authorId": 8, - "views": 2, - "isBeginner": true, - "isDone": true, - "recruitmentEndDate": "2025-02-15T00:00:00.000Z", - "recruitmentStartDate": "2025-01-06T00:00:00.000Z", - "createdAt": "2025-01-06T21:19:21.000Z", - "updatedAt": "2025-01-06T21:19:21.000Z", - "ProjectSkillTag": [ - { - "projectId": 68, - "skillTagId": 12, - "SkillTag": { - "id": 12, - "name": "Kotlin", - "img": "스킬 태그 이미지 주소", - "createdAt": "2025-01-02T15:09:19.000Z" - } - } - ], - "ProjectPositionTag": [ - { - "projectId": 68, - "positionTagId": 1, - "PositionTag": { + "id": 43, + "title": "AI 기반 추천 시스템 개발", + "description": "사용자 데이터를 분석하여 맞춤형 추천을 제공하는 AI 기반 시스템을 개발합니다.", + "totalMember": 5, + "startDate": "2025-04-01", + "estimatedPeriod": "3 months", + "isBeginner": true, + "isDone": false, + "recruitmentStartDate": "2025-03-20", + "recruitmentEndDate": "2025-04-01", + "views": 0, + "user": { + "id": 4, + "nickname": "test", + "img": null + }, + "methodType": { "id": 1, - "name": "백엔드", - "createdAt": "2025-01-02T12:19:48.000Z" - } + "name": "온라인" + }, + "positions": [ + { + "id": 1, + "name": "프론트엔드" + }, + { + "id": 3, + "name": "디자이너" + } + ], + "skills": [ + { + "id": 1, + "name": "Spring", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Spring.png" + }, + { + "id": 3, + "name": "Express", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Express.png" + } + ] }, { - "projectId": 68, - "positionTagId": 2, - "PositionTag": { - "id": 2, - "name": "프론트엔드", - "createdAt": "2025-01-02T12:19:51.000Z" - } + "id": 45, + "title": "string", + "description": "string", + "totalMember": 0, + "startDate": "2025-04-09", + "estimatedPeriod": "string", + "isBeginner": true, + "isDone": true, + "recruitmentStartDate": "2025-04-09", + "recruitmentEndDate": "2025-04-09", + "views": 0, + "user": { + "id": 4, + "nickname": "test", + "img": null + }, + "methodType": { + "id": 1, + "name": "온라인" + }, + "positions": [ + { + "id": 3, + "name": "디자이너" + } + ], + "skills": [ + { + "id": 2, + "name": "Django", + "img": "https://devpal.s3.ap-northeast-2.amazonaws.com/Django.png" + } + ] } ] } -] +} diff --git a/src/models/SearchFilters.ts b/src/models/SearchFilters.ts index edfe623f..d58bc4ac 100644 --- a/src/models/SearchFilters.ts +++ b/src/models/SearchFilters.ts @@ -1,7 +1,7 @@ export interface SearchFilters { skillTag?: number[]; positionTag?: number; - methodId?: number; + methodType?: number; isBeginner: boolean; keyword?: string; page: number; diff --git a/src/models/apiCommon.ts b/src/models/apiCommon.ts new file mode 100644 index 00000000..9cfdd127 --- /dev/null +++ b/src/models/apiCommon.ts @@ -0,0 +1,4 @@ +export interface ApiCommonType { + success: boolean; + message: string; +} diff --git a/src/models/mainProjectLists.ts b/src/models/mainProjectLists.ts index 5a3cfa0e..8d0ebb01 100644 --- a/src/models/mainProjectLists.ts +++ b/src/models/mainProjectLists.ts @@ -1,13 +1,10 @@ import type { PositionTag, SkillTag, MethodTag } from './tags'; +import type { ApiCommonType } from './apiCommon'; export interface User { id: number; nickname: string; - email: string; - bio?: string; - profileImg?: string; - createdAt?: string; - updatedAt?: string; + img: string; } export interface ProjectList { @@ -17,26 +14,15 @@ export interface ProjectList { totalMember: number; startDate: string; estimatedPeriod: string; - methodId: number; - authorId: number; views: number; isBeginner: boolean; isDone: boolean; recruitmentEndDate: string; recruitmentStartDate: string; - createdAt: string; - updatedAt: string; - User: User; - positionTags: PositionTag[]; - skillTags: SkillTag[]; - ProjectSkillTag: string[]; - Method: MethodTag[]; - ProjectPositionTag: string[]; -} - -export interface Pagination { - currentPage: number; - lastPage: number; + user: User; + positions: Omit[]; + skills: Omit[]; + MethodType: Omit; } export interface ProjectLists { @@ -46,8 +32,16 @@ export interface ProjectLists { total: number; } +export interface ApiProjectLists extends ApiCommonType { + data: ProjectLists; +} + export interface ProjectStatistic { ongoingProjectCount: number; endProjectCount: number; totalProjectCount: number; } + +export interface ApiProjectStatistic extends ApiCommonType { + data: ProjectStatistic; +} diff --git a/src/models/tags.ts b/src/models/tags.ts index 2bb0df7d..3b19eba0 100644 --- a/src/models/tags.ts +++ b/src/models/tags.ts @@ -1,3 +1,5 @@ +import type { ApiCommonType } from './apiCommon'; + export interface SkillTag { id: number; name: string; @@ -17,20 +19,14 @@ export interface MethodTag { createdAt: string; } -export interface SillTagHeader { - success: boolean; - message: string; +export interface ApiSkillTag extends ApiCommonType { data: SkillTag[]; } -export interface PositionTagHeader { - success: boolean; - message: string; +export interface ApiPositionTag extends ApiCommonType { data: PositionTag[]; } -export interface MethodTagHeader { - success: boolean; - message: string; +export interface ApiMethodTag extends ApiCommonType { data: MethodTag[]; }