
기존에 구현했던 API의 응답 검토하기

schema.prisma
generator client {
provider = "prisma-client-js"
output = "./node_modules/@prisma/client"
}
datasource db {
provider = "mysql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
nickname String @unique
reviews Review[] @relation("UserReviews")
missions Mission[] @relation("UserMissions")
}
model Store {
id Int @id @default(autoincrement())
name String
location String
missions Mission[] @relation("StoreMissions")
reviews Review[] @relation("StoreReviews")
}
model Review {
id Int @id @default(autoincrement())
content String
rating Float
date DateTime @default(now())
userId Int
storeId Int // 필드 추가
user User @relation("UserReviews", fields: [userId], references: [id])
store Store @relation("StoreReviews", fields: [storeId], references: [id]) // 수정 완료
}
model Mission {
id Int @id @default(autoincrement())
title String
description String
reward Int
status String
userId Int
storeId Int
user User @relation("UserMissions", fields: [userId], references: [id])
store Store @relation("StoreMissions", fields: [storeId], references: [id])
}
mission.controller.js
import {
getUserMissions,
completeMission,
getStoreMissions,
} from "../services/mission.service.js";
export const fetchUserMissions = async (req, res, next) => {
try {
const { userId } = req.params;
const missions = await getUserMissions(parseInt(userId));
res.json(missions);
} catch (error) {
next(error);
}
};
export const markMissionComplete = async (req, res, next) => {
try {
const { missionId } = req.params;
const updatedMission = await completeMission(parseInt(missionId));
res.json(updatedMission);
} catch (error) {
next(error);
}
};
export const fetchStoreMissions = async (req, res, next) => {
try {
const { storeId } = req.params;
const missions = await getStoreMissions(parseInt(storeId));
res.json(missions);
} catch (error) {
next(error);
}
};
review.controller.js
import { getUserReviews } from "../services/review.service.js";
export const fetchUserReviews = async (req, res, next) => {
try {
const { userId } = req.params;
const reviews = await getUserReviews(parseInt(userId));
res.json(reviews);
} catch (error) {
next(error);
}
};
mission.dto.js
export class MissionDTO {
constructor(id, userId, title, reward, status, description, createdAt) {
this.id = id;
this.userId = userId;
this.title = title;
this.reward = reward;
this.status = status;
this.description = description;
this.createdAt = createdAt;
}
}