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
21 changes: 21 additions & 0 deletions src/main/java/com/going/server/domain/graph/entity/Graph.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.going.server.domain.graph.entity;

import com.going.server.global.common.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.neo4j.core.schema.GeneratedValue;
import org.springframework.data.neo4j.core.schema.Id;
import org.springframework.data.neo4j.core.schema.Node;

@Node("KnowledgeGraph")
@Getter
@Setter
public class Graph extends BaseEntity {
@Id
@GeneratedValue
private Long id; //그래프 id
private String title; // 그래프 제목
private boolean listenUpPerfect; //listenUp 퀴즈 만접 여부
private boolean connectPerfect; //connect 퀴즈 만접 여부
private boolean picturePerfect; //picture 퀴즈 만접 여부
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.going.server.domain.graph.exception;

import com.going.server.global.exception.BaseErrorCode;
import lombok.AllArgsConstructor;
import lombok.Getter;

import static com.going.server.global.constant.StaticValue.NOT_FOUND;

@Getter
@AllArgsConstructor
public enum GraphErrorCode implements BaseErrorCode {
GRAPH_NOT_FOUND(NOT_FOUND, "GRAPH_404_1", "존재하지 않는 graph_id 입니다.");

private final int httpStatus;
private final String code;
private final String message;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.going.server.domain.graph.exception;

import com.going.server.global.exception.BaseException;

public class GraphNotFoundException extends BaseException {
public GraphNotFoundException() {
super(GraphErrorCode.GRAPH_NOT_FOUND);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.going.server.domain.graph.repository;

import com.going.server.domain.graph.entity.Graph;
import jdk.jfr.Registered;
import org.springframework.data.neo4j.repository.Neo4jRepository;

@Registered
public interface GraphRepository extends Neo4jRepository<Graph, Long> {
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
@RestController
@RequestMapping("/quiz")
@RequiredArgsConstructor
@Tag(name="[캡스톤]Quiz", description = "퀴즈 관련 통신을 위한 API")
@Tag(name="[캡스톤]ListenUpQuiz", description = "퀴즈 관련 통신을 위한 API")
public class QuizController {

private QuizServiceImpl quizService;
Expand All @@ -33,7 +33,7 @@ public class QuizController {
)
})
public SuccessResponse<?> createQuiz(@PathVariable String graphId, @RequestParam String mode) {
QuizCreateResponseDto result = quizService.QuizCreate(graphId, mode);
QuizCreateResponseDto result = quizService.quizCreate(graphId, mode);
return SuccessResponse.of(result);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package com.going.server.domain.quiz.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;

// 퀴즈 생성 반환 DTO
public class QuizCreateResponseDto {
@AllArgsConstructor
public class QuizCreateResponseDto<T> {
private String graphId;
private String mode; // listenUp, connect, picture

@Schema(oneOf = {
ListenUpQuizDto.class,
ConnectQuizDto.class,
PictureQuizDto.class})
private Object quizzes;
private T quizzes;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@
@Service
public interface QuizService {

// ListenUp 퀴즈 생성
public QuizCreateResponseDto QuizCreate(String mode, String graphId);
// 모드 별 퀴즈 생성
public QuizCreateResponseDto quizCreate(String mode, String graphId);
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,60 @@
package com.going.server.domain.quiz.service;

import com.going.server.domain.graph.entity.Graph;
import com.going.server.domain.graph.exception.GraphNotFoundException;
import com.going.server.domain.graph.repository.GraphRepository;
import com.going.server.domain.quiz.dto.ConnectQuizDto;
import com.going.server.domain.quiz.dto.ListenUpQuizDto;
import com.going.server.domain.quiz.dto.PictureQuizDto;
import com.going.server.domain.quiz.dto.QuizCreateResponseDto;
import lombok.AllArgsConstructor;

@AllArgsConstructor
public class QuizServiceImpl implements QuizService{

private final GraphRepository graphRepository;

@Override
public QuizCreateResponseDto QuizCreate(String mode, String graphId) {
// TODO : mode별 분기 필요
public QuizCreateResponseDto quizCreate(String mode, String graphIdStr) {
Long graphId = Long.valueOf(graphIdStr);

// 404 : 지식그래프 찾을 수 없음
Graph graph = graphRepository.findById(graphId)
.orElseThrow(GraphNotFoundException::new);

Object quizDto = null;

// TODO : graphId로 지식그래프 예시 문장 3개 랜덤으로 가져오기
switch (mode) {
case "listenUp":
quizDto = listenUpQuizCreate(graph);
break;
case "connect":
quizDto = connectQuizCreate(graph);
break;
case "picture":
quizDto = pictureQuizCreate(graph);
break;
default:
// TODO : 퀴즈 모드 관련 예외처리 필요
}

return new QuizCreateResponseDto<>(graphIdStr, mode, quizDto);
}

// listenUp 퀴즈 생성 메서드
private ListenUpQuizDto listenUpQuizCreate(Graph graph) {
// TODO : listenUp 퀴즈 생성 로직 작성
return new ListenUpQuizDto();
}

// connect 퀴즈 생성 메서드
private ConnectQuizDto connectQuizCreate(Graph graph) {
// TODO : connect 퀴즈 생성 로직 작성
return new ConnectQuizDto();
}

// TODO : 각 문장을 반환 형식에 맞게 가공
return null;
// picture 퀴즈 생성 메서드
private PictureQuizDto pictureQuizCreate(Graph graph) {
// TODO : picture 퀴즈 생성 로직 작성
return new PictureQuizDto();
}
}
}