Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 9 additions & 94 deletions src/apis/Matching/dto.ts
Original file line number Diff line number Diff line change
@@ -1,103 +1,18 @@
import { BaseApiResponse } from '../util/dto';
import { User } from '../user/dto';
import { BaseSuccessResponse } from '../core/dto';

// 매칭 요청
//Request
export type CreateMatchingRequest = MatchingRequest;
//Response
export type CreateMatchingResponse = BaseApiResponse<MatchingResult>;

// 매칭 요청 수락/거부
//Request
export type UpdateMatchingAcceptRequest = MatchingAcceptRequest;
//Response
export type UpdateMatchingAcceptResponse = BaseApiResponse<MatchingResult>;

// 매칭 리스트 조회
// Response
export type GetMatchingListResponse = BaseApiResponse<MatchingListResult[]>;

// 매칭 요청 데이터
export interface MatchingRequest {
//request
export interface CreateMatchingRequest {
requesterId: number;
targetId: number;
message: string;
}

// 매칭 상태 업데이트 (수락/거부) 데이터
export interface MatchingAcceptRequest {
id: number;
requestStatus: 'rejected' | 'accepted';
}

// 매칭 응답 데이터 (요청 수락/거부 포함)
export interface MatchingResult {
id: number;
requester: User;
target: User;
message: string;
requestStatus: 'pending' | 'rejected' | 'accepted';
rejectedAt?: string | null;
acceptedAt?: string | null;
createdAt: string;
}

// 매칭 리스트 조회 시 응답 데이터
export interface MatchingListResult {
id: number;
status: string; // 요청의 현재 상태
createdAt: string;
updatedAt: string;
deletedAt?: string | null;
message: string;
requestStatus: 'pending' | 'rejected' | 'accepted';
rejectedAt?: string | null;
acceptedAt?: string | null;
target: User;
requester: User;
representativePost?: RepresentativePost; // 선택적 대표 게시물 정보
}

// 대표 게시물 정보
export interface RepresentativePost {
id: number;
status: 'activated' | 'deactivated';
createdAt: string;
updatedAt: string;
deletedAt?: string | null;
content: string;
isRepresentative: boolean;
images: PostImage[];
postStyletags: StyleTag[];
postClothings: PostClothing[];
}

// 게시물 이미지 정보
export interface PostImage {
id: number;
status: 'activated' | 'deactivated';
createdAt: string;
updatedAt: string;
deletedAt?: string | null;
postId: number;
url: string;
order: number;
}

// 스타일 태그 정보
export interface StyleTag {
id: number;
status: 'activated' | 'deactivated';
createdAt: string;
updatedAt: string;
deletedAt?: string | null;
}
// response
export type CreateMatchingResponse = BaseSuccessResponse<CreateMatchingData>;

// 의류 항목 정보
export interface PostClothing {
id: number;
status: 'activated' | 'deactivated';
createdAt: string;
updatedAt: string;
deletedAt?: string | null;
export interface CreateMatchingData {
chatRoomId: number;
fromUserId: number;
toUserId: number;
}
6 changes: 6 additions & 0 deletions src/apis/Matching/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { newRequest } from '../core';
import { CreateMatchingRequest, CreateMatchingResponse } from './dto';

// 매칭 생성
export const createMatchingApi = (data: CreateMatchingRequest) =>
newRequest.post<CreateMatchingResponse>('/matching', data);
9 changes: 9 additions & 0 deletions src/apis/core/dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// 새로운 서버 응답 타입
export type BaseSuccessResponse<T = any> = {
isSuccess: boolean;
code: string;
data: T;
};

// 응답 body가 없을 경우
export type EmptySuccessResponse = BaseSuccessResponse<void>;
7 changes: 0 additions & 7 deletions src/apis/core/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,6 @@ import axios, {
} from 'axios';
import { JWT_KEY, NEW_JWT_KEY } from '../../config/constant';

// 새로운 서버 응답 타입
export type BaseSuccessResponse<T = any> = {
isSuccess: boolean;
code: string;
data: T;
};

// 기존 서버 응답 타입
export type BaseResponse<T = any> = {
isSuccess: boolean;
Expand Down
4 changes: 2 additions & 2 deletions src/components/PostBase/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ import { useRecoilState } from 'recoil';
import { postIdAtom, userIdAtom, userNameAtom } from '../../recoil/Post/PostAtom';

import { PostBaseProps } from './dto';
import { GetPostDetailResponse } from '../../apis/Post/dto';
import { GetUserResponse } from '../../apis/User/dto';
import { GetPostDetailResponse } from '../../apis/post/dto';
import { GetUserResponse } from '../../apis/user/dto';
import { UpdatePostLikeResponse } from '../../apis/post-like/dto';
import request from '../../apis/core';

Expand Down