Skip to content

Commit 852fb59

Browse files
authored
Merge pull request #108 from PLANALOG/feature/task-api-create
Chore: 날짜 시간 UTC 에서 UTC+9로변경
2 parents 0ea2983 + 9bebeb1 commit 852fb59

4 files changed

Lines changed: 58 additions & 15 deletions

File tree

.idea/workspace.xml

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/controllers/category.controller.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@ import {createCategoryService,
55
createTaskCategory,
66
createTaskCategoryBulk,
77
createCategoryBulk
8-
} from '../services/category.service.js'
8+
} from '../services/category.service.js';
9+
import { transformCategoryListResponse,
10+
transformCategoryResponse,
11+
transformTaskResponse,
12+
transformTaskListResponse
13+
} from '../dtos/task.dto.js';
914
import { createTaskBulkDto, createTaskDto } from '../dtos/task.dto.js';
1015
import { deleteCategoryRepository } from '../repositories/category.repository.js';
1116
import { DuplicateCategoryError, AuthError } from '../errors.js';
@@ -47,10 +52,12 @@ export const handleCreateCategory = async (req, res, next) => {
4752
throw new AuthError;
4853
}
4954

55+
// 생성된 카테고리 반환
56+
const createdCategory = await createCategoryService({ userId, name }); // 서비스 호출
5057

51-
const createdTaskCategory = await createCategoryService({ userId, name }); // 서비스 호출
52-
53-
res.success(createdTaskCategory); // 성공 응답
58+
res.success(
59+
transformCategoryResponse(createdCategory)
60+
); // 성공 응답
5461
} catch (error) {
5562
next(error); // 전역 오류 처리 미들웨어로 전달
5663
}
@@ -97,7 +104,7 @@ export const handleCreateCategoryBulk = async (req, res, next) => {
97104

98105
const createdCategories = await createCategoryBulk({ userId, names }); // 서비스 호출
99106
// 성공 응답
100-
res.success(createdCategories);
107+
res.success(transformCategoryListResponse(createdCategories));
101108
} catch (error) {
102109
next(error);
103110
}
@@ -147,8 +154,8 @@ export const handleUpdateCategory = async (req, res, next) => {
147154
});
148155
}
149156

150-
const updatedTaskCategory = await updateCategoryService(task_category_id, name, userId); // 서비스 호출
151-
res.success(updatedTaskCategory); // 성공 응답
157+
const updatedCategory = await updateCategoryService(task_category_id, name, userId); // 서비스 호출
158+
res.success(transformCategoryResponse(updatedCategory)); // 성공 응답
152159
} catch (error) {
153160
next(error); // 전역 오류 처리 미들웨어로 전달
154161
}
@@ -214,7 +221,7 @@ export const handleViewCategory = async (req, res, next) => {
214221

215222

216223
const taskCategories = await getCategoriesByUser(userId); // 서비스 호출
217-
res.success(taskCategories); // 성공 응답
224+
res.success(transformCategoryListResponse(taskCategories)); // 성공 응답
218225
} catch (error) {
219226
next(error); // 전역 오류 처리 미들웨어로 전달
220227
}
@@ -395,7 +402,7 @@ export const handleCreateTaskCategoryBulk = async (req, res, next) => {
395402
return res.status(200).json({
396403
resultType: "SUCCESS",
397404
error: null,
398-
success: createdTaskCategory,
405+
success: transformTaskResponse(createdTaskCategory),
399406
});
400407
} catch (error) {
401408
next(error); // 전역 오류 처리 미들웨어로 전달

src/controllers/task.controller.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { StatusCodes } from "http-status-codes";
22
import { createTask,createTaskBulk} from "../services/task.service.js";
3-
import { createTaskBulkDto, createTaskDto, getTaskDto, responseFromToggledTask, updateTaskDto } from "../dtos/task.dto.js";
3+
import { createTaskBulkDto, createTaskDto, getTaskDto, responseFromToggledTask, updateTaskDto,
4+
transformTaskListResponse, transformTaskResponse
5+
} from "../dtos/task.dto.js";
46
import { updateTask, getTask, deleteTask } from "../services/task.service.js";
57
import { toggleTaskCompletion } from "../services/task.service.js";
68
import { findTaskWithPlanner } from "../repositories/task.repository.js";
@@ -57,7 +59,7 @@ export const handleCreateTask = async (req, res, next) => {
5759
const newTask = await createTask({ ...validTaskData, userId });
5860

5961
// 성공 응답 반환
60-
res.success(newTask);
62+
res.success(transformTaskResponse(newTask));
6163

6264
} catch (error) {
6365
next(error);
@@ -110,7 +112,7 @@ export const handleCreateTaskBulk = async (req, res, next) => {
110112
//여러개 생성
111113
const newTasks= await createTaskBulk (validTaskData, userId);
112114

113-
res.success(newTasks);
115+
res.success(transformTaskListResponse(newTasks));
114116
} catch (error) {
115117
next(error);
116118
}
@@ -185,7 +187,7 @@ export const handleUpdateTask = async (req, res, next) => {
185187
});
186188

187189
// 성공 응답
188-
res.success(updatedTask);
190+
res.success(transformTaskResponse(updatedTask));
189191
} catch (error) {
190192
next(error);
191193
}
@@ -223,7 +225,7 @@ export const handleGetTask = async (req, res, next) => {
223225

224226
const tasks = await getTask(validDate, userId);
225227

226-
res.success(tasks);
228+
res.success(transformTaskListResponse(tasks));
227229
}
228230
catch (error) {
229231
console.log(error);

src/dtos/task.dto.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
1+
// YYYY-MM-DDTHH:mm:ss.sssZ 형식으로 변환하는 함수 (UTC+9 적용)
2+
const formatDateTime = (date) => {
3+
if (!date) return null;
4+
const validDate = date instanceof Date ? date : new Date(date); // 문자열이면 Date 객체로 변환
5+
if (isNaN(validDate.getTime())) {
6+
console.error("Invalid date detected:", date);
7+
return null;
8+
}
9+
const KST = new Date(validDate.getTime() + 9 * 60 * 60 * 1000); // UTC+9 적용
10+
return KST.toISOString(); // ISO 형식 유지
11+
};
12+
13+
export const transformCategoryResponse = (category) => ({
14+
...category,
15+
createdAt: formatDateTime(category.createdAt),
16+
updatedAt: formatDateTime(category.updatedAt)
17+
});
18+
19+
export const transformCategoryListResponse = (categories) =>
20+
Array.isArray(categories) ? categories.map(transformCategoryResponse) : categories;
21+
22+
23+
export const transformTaskResponse = (task) => ({
24+
...task,
25+
createdAt: formatDateTime(task.createdAt),
26+
updatedAt: formatDateTime(task.updatedAt)
27+
});
28+
29+
export const transformTaskListResponse = (tasks) =>
30+
tasks.map(transformTaskResponse);
31+
32+
133
export const createTaskDto = (body) => {
234

335
// 1. Validate title

0 commit comments

Comments
 (0)