mirror of
https://github.com/r-ca/kidshift-be.git
synced 2024-10-25 16:14:02 +00:00
task追加 WIP
This commit is contained in:
parent
e4ba893547
commit
b3c7d33361
|
@ -15,9 +15,9 @@ interface TaskListResponse {
|
|||
list: TaskBaseItem[]
|
||||
}
|
||||
|
||||
interface TaskRequest extends TaskBaseItem {
|
||||
interface TaskAddRequest extends TaskBaseItem {
|
||||
// 追加プロパティ
|
||||
attachedChlidren?: String[] // タスク追加時にattachするかは任意
|
||||
}
|
||||
|
||||
export { TaskResponse, TaskRequest, TaskListResponse }
|
||||
export { TaskResponse, TaskAddRequest, TaskListResponse }
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { Router } from 'express';
|
||||
import { Task } from '@prisma/client';
|
||||
import { getTask, createTask, getTasks, updateTask, deleteTask, registCompleteTask } from '@src/services/taskService';
|
||||
import { TaskListResponse } from '@src/models/Task';
|
||||
import { TaskListResponse, TaskAddRequest } from '@src/models/Task';
|
||||
|
||||
const router = Router();
|
||||
|
||||
|
@ -26,43 +26,46 @@ router.get('/', (req, res) => {
|
|||
});
|
||||
|
||||
router.post('/', (req, res) => {
|
||||
const body = req.body;
|
||||
if (!body) {
|
||||
res.status(400).json({
|
||||
message: '不正なリクエスト: リクエストボディが空です'
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (!body.displayName || !body.reward) {
|
||||
res.status(400).json({
|
||||
message: '不正なリクエスト: displayName, rewardは必須です'
|
||||
});
|
||||
return;
|
||||
} else {
|
||||
const task: Task = {} as Task;
|
||||
|
||||
if (req.user === undefined) {
|
||||
res.status(500).json({
|
||||
message: 'エラーが発生しました(JWT解析結果が不正/未設定です)'
|
||||
// BodyをTaskAddRequestにマッピングできるかチェック
|
||||
let requestBody: TaskAddRequest;
|
||||
try {
|
||||
requestBody = req.body;
|
||||
if (!requestBody) {
|
||||
res.status(400).json({
|
||||
message: 'リクエストボディが空です'
|
||||
});
|
||||
return;
|
||||
}
|
||||
// TODO: 共通化
|
||||
task.display_name = body.displayName;
|
||||
task.reward = body.reward;
|
||||
task.home_group_id = req.user.claims.home_group_id;
|
||||
|
||||
createTask(task)
|
||||
.then((task: Task) => {
|
||||
res.status(201).json(task);
|
||||
})
|
||||
.catch((err) => {
|
||||
res.status(500).json({
|
||||
message: 'エラーが発生しました',
|
||||
error: err
|
||||
});
|
||||
if (!requestBody.name || !requestBody.reward) {
|
||||
res.status(400).json({
|
||||
message: 'name, rewardは必須です'
|
||||
});
|
||||
return;
|
||||
}
|
||||
} catch (e) {
|
||||
res.status(400).json({
|
||||
message: 'リクエストボディが不正です'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (req.user === undefined) {
|
||||
res.status(500).json({
|
||||
message: 'エラーが発生しました(JWT解析結果が不正/未設定です)'
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
createTask(task)
|
||||
.then((task: Task) => {
|
||||
res.status(201).json(task);
|
||||
})
|
||||
.catch((err) => {
|
||||
res.status(500).json({
|
||||
message: 'エラーが発生しました',
|
||||
error: err
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
router.get('/:taskId', (req, res) => {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { PrismaPromise, Task, TaskCompletion } from "@prisma/client";
|
||||
import { TaskResponse, TaskListResponse } from "@src/models/Task";
|
||||
import { TaskResponse, TaskListResponse, TaskAddRequest } from "@src/models/Task";
|
||||
import prisma from "@src/prisma";
|
||||
|
||||
async function getTasks(homeGroupId: string): Promise<TaskListResponse> {
|
||||
|
@ -61,8 +61,14 @@ function getTask(taskId: string): PrismaPromise<Task | null> {
|
|||
});
|
||||
}
|
||||
|
||||
function createTask(task: Task): PrismaPromise<Task> {
|
||||
return prisma.task.create({ // TODO: Validate task
|
||||
function createTask(taskAddRequset: TaskAddRequest, homeGroupId: string): PrismaPromise<Task> {
|
||||
const task = { // TODO: 明示
|
||||
display_name: taskAddRequset.name,
|
||||
reward: taskAddRequset.reward,
|
||||
home_group_id: homeGroupId
|
||||
};
|
||||
|
||||
return prisma.task.create({
|
||||
data: task
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user