diff --git a/.gitignore b/.gitignore index 5ff171b9..d7395efb 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,6 @@ out/ ### VS Code ### .vscode/ + +### QClass +**/build/generated/sources/annotationProcessor/** diff --git a/application/build.gradle b/application/build.gradle index 13fca76a..cfcb4c41 100644 --- a/application/build.gradle +++ b/application/build.gradle @@ -23,7 +23,7 @@ dependencies { implementation(project(":persistence")) implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.springfox:springfox-boot-starter:3.0.0' - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + } test { diff --git a/application/src/main/java/com/comssa/api/config/JpaConfig.java b/application/src/main/java/com/comssa/api/config/JpaConfig.java deleted file mode 100644 index 1e4c8131..00000000 --- a/application/src/main/java/com/comssa/api/config/JpaConfig.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.comssa.api.config; - -import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.jpa.repository.config.EnableJpaAuditing; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; - -@Configuration -@EnableJpaAuditing -@EntityScan(basePackages = "com.comssa.persistence") -@EnableJpaRepositories(basePackages = "com.comssa.persistence") -public class JpaConfig { -} diff --git a/application/src/main/java/com/comssa/api/question/controller/rest/license/AdminLicenseQuestionController.java b/application/src/main/java/com/comssa/api/question/controller/rest/license/AdminLicenseQuestionController.java index 4e705ef6..a5eebf75 100644 --- a/application/src/main/java/com/comssa/api/question/controller/rest/license/AdminLicenseQuestionController.java +++ b/application/src/main/java/com/comssa/api/question/controller/rest/license/AdminLicenseQuestionController.java @@ -26,6 +26,7 @@ public class AdminLicenseQuestionController { public ResponseEntity> makeLicenseQuestionOfSession( @RequestBody RequestMakeLicenseMultipleChoiceQuestionDto requestMakeLicenseMultipleChoiceQuestionDto) { return ResponseEntity.ok( - adminLicenseQuestionMakeService.makeLicenseNormalQuestion(requestMakeLicenseMultipleChoiceQuestionDto)); + adminLicenseQuestionMakeService + .makeLicenseMultipleChoiceQuestion(requestMakeLicenseMultipleChoiceQuestionDto)); } } diff --git a/application/src/main/java/com/comssa/api/question/service/rest/common/implement/BasicQuestionSelectorService.java b/application/src/main/java/com/comssa/api/question/service/rest/common/implement/BasicQuestionSelectorService.java index e480a94a..a0b298f4 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/common/implement/BasicQuestionSelectorService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/common/implement/BasicQuestionSelectorService.java @@ -7,9 +7,9 @@ import com.comssa.persistence.question.domain.common.QuestionLevel; import com.comssa.persistence.question.domain.license.LicenseCategory; import com.comssa.persistence.question.domain.license.LicenseSession; -import com.comssa.persistence.question.repository.LicenseMultipleChoiceQuestionRepository; -import com.comssa.persistence.question.repository.LicenseSessionRepository; -import com.comssa.persistence.question.repository.MajorMultipleChoiceQuestionRepository; +import com.comssa.persistence.question.repository.jpa.LicenseSessionRepository; +import com.comssa.persistence.question.repository.querydsl.LicenseMultipleChoiceQuestionDslRepository; +import com.comssa.persistence.question.repository.querydsl.MajorMultipleChoiceQuestionDslRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -22,8 +22,8 @@ @RequiredArgsConstructor public class BasicQuestionSelectorService implements QuestionSelectorService { private final LicenseSessionRepository licenseSessionRepository; - private final MajorMultipleChoiceQuestionRepository majorMultipleChoiceQuestionRepository; - private final LicenseMultipleChoiceQuestionRepository licenseMultipleChoiceQuestionRepository; + private final MajorMultipleChoiceQuestionDslRepository majorMultipleChoiceQuestionDslRepository; + private final LicenseMultipleChoiceQuestionDslRepository licenseMultipleChoiceQuestionDslRepository; @Override public List getCategories() { @@ -56,10 +56,11 @@ public List getLicenseSessions(LicenseCategory licenseCategory) public List getAllQuestions(List questionCategories, boolean multipleChoice) { List questions = new ArrayList<>(); if (multipleChoice) { - questions.addAll(licenseMultipleChoiceQuestionRepository.findAllByQuestionCategoriesFetchChoices( - questionCategories)); - questions.addAll(majorMultipleChoiceQuestionRepository.findAllByQuestionCategoriesFetchChoices( + questions.addAll(licenseMultipleChoiceQuestionDslRepository.findAllWhereQuestionCategories( questionCategories)); + questions.addAll(majorMultipleChoiceQuestionDslRepository + .findAllWhereQuestionCategories( + questionCategories)); } return questions; } diff --git a/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceGradeService.java b/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceGradeService.java index 4c1c5ae9..d0445b46 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceGradeService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceGradeService.java @@ -1,7 +1,7 @@ package com.comssa.api.question.service.rest.common.implement; import com.comssa.persistence.question.domain.common.QuestionChoice; -import com.comssa.persistence.question.repository.QuestionChoiceRepository; +import com.comssa.persistence.question.repository.jpa.QuestionChoiceRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; diff --git a/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceService.java b/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceService.java index 723b283b..21ce900e 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceService.java @@ -6,8 +6,7 @@ import com.comssa.persistence.question.domain.major.MajorMultipleChoiceQuestion; import com.comssa.persistence.question.domain.major.MajorQuestionChoice; import com.comssa.persistence.question.dto.common.request.RequestMakeMultipleChoiceQuestionDto; -import com.comssa.persistence.question.repository.LicenseQuestionChoiceRepository; -import com.comssa.persistence.question.repository.MajorQuestionChoiceRepository; +import com.comssa.persistence.question.repository.jpa.QuestionChoiceRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,13 +17,12 @@ @RequiredArgsConstructor @Transactional public class QuestionChoiceService { - private final MajorQuestionChoiceRepository majorQuestionChoiceRepository; - private final LicenseQuestionChoiceRepository licenseQuestionChoiceRepository; + private final QuestionChoiceRepository questionChoiceRepository; public void saveWith( RequestMakeMultipleChoiceQuestionDto dto, LicenseMultipleChoiceQuestion licenseMultipleChoiceQuestion) { - licenseQuestionChoiceRepository.saveAll(dto.getQuestionChoices() + questionChoiceRepository.saveAll(dto.getQuestionChoices() .stream() .map(qc -> LicenseQuestionChoice.from(qc, licenseMultipleChoiceQuestion)) .collect(Collectors.toList())); @@ -33,7 +31,7 @@ public void saveWith( public void saveWith( RequestMakeMultipleChoiceQuestionDto dto, MajorMultipleChoiceQuestion majorMultipleChoiceQuestion) { - majorQuestionChoiceRepository.saveAll(dto.getQuestionChoices() + questionChoiceRepository.saveAll(dto.getQuestionChoices() .stream() .map(qc -> MajorQuestionChoice.fromMajorQuestion(qc, majorMultipleChoiceQuestion)) .collect(Collectors.toList())); diff --git a/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceUpdateService.java b/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceUpdateService.java index 49810c6c..4b9c862e 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceUpdateService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionChoiceUpdateService.java @@ -1,7 +1,7 @@ package com.comssa.api.question.service.rest.common.implement; import com.comssa.persistence.question.domain.common.QuestionChoice; -import com.comssa.persistence.question.repository.QuestionChoiceRepository; +import com.comssa.persistence.question.repository.jpa.QuestionChoiceRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionUpdateService.java b/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionUpdateService.java index 20896081..e2568a6e 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionUpdateService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/common/implement/QuestionUpdateService.java @@ -2,7 +2,7 @@ import com.comssa.api.question.service.rest.common.FileUploadService; import com.comssa.persistence.question.domain.common.Question; -import com.comssa.persistence.question.service.QuestionRepositoryService; +import com.comssa.persistence.question.repository.jpa.QuestionRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -13,7 +13,7 @@ @RequiredArgsConstructor public class QuestionUpdateService implements com.comssa.api.question.service.rest.common.QuestionUpdateService { - private final QuestionRepositoryService questionRepositoryService; + private final QuestionRepository questionRepository; private final FileUploadService fileUploadService; @Override @@ -32,11 +32,11 @@ public String updateImage(Long questionId, MultipartFile image) { @Override public void deleteQuestion(Long questionId) { - questionRepositoryService.delete(questionId); + questionRepository.deleteById(questionId); } @Override public Question findById(Long questionId) { - return questionRepositoryService.findById(questionId); + return questionRepository.findById(questionId).get(); } } diff --git a/application/src/main/java/com/comssa/api/question/service/rest/license/implement/AdminLicenseQuestionGetService.java b/application/src/main/java/com/comssa/api/question/service/rest/license/implement/AdminLicenseQuestionGetService.java index 5634aff4..dfee0911 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/license/implement/AdminLicenseQuestionGetService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/license/implement/AdminLicenseQuestionGetService.java @@ -6,7 +6,7 @@ import com.comssa.persistence.question.domain.common.Question; import com.comssa.persistence.question.domain.common.QuestionCategory; import com.comssa.persistence.question.domain.license.LicenseMultipleChoiceQuestion; -import com.comssa.persistence.question.repository.LicenseMultipleChoiceQuestionRepository; +import com.comssa.persistence.question.repository.querydsl.LicenseMultipleChoiceQuestionDslRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,7 +18,8 @@ @Transactional @RequiredArgsConstructor public class AdminLicenseQuestionGetService implements LicenseQuestionGetService { - private final LicenseMultipleChoiceQuestionRepository licenseMultipleChoiceQuestionRepository; + + private final LicenseMultipleChoiceQuestionDslRepository licenseMultipleChoiceQuestionDslRepository; private final QuestionClassifyByCategoryService questionClassifyByCategoryService; /** @@ -29,8 +30,8 @@ public class AdminLicenseQuestionGetService implements LicenseQuestionGetService @Override public Map> getClassifiedLicenseMultipleChoiceQuestion( Long sessionId) { - List licenseMultipleChoiceQuestions = licenseMultipleChoiceQuestionRepository - .findAllByLicenseSessionIdFetchChoicesOrderByApproved(sessionId); + List licenseMultipleChoiceQuestions = licenseMultipleChoiceQuestionDslRepository + .findAllWhereLicenseSessionId(sessionId); return questionClassifyByCategoryService.classifyQuestionByCategoryOrdered(licenseMultipleChoiceQuestions); } } diff --git a/application/src/main/java/com/comssa/api/question/service/rest/license/implement/AdminLicenseQuestionMakeService.java b/application/src/main/java/com/comssa/api/question/service/rest/license/implement/AdminLicenseQuestionMakeService.java index bdc05958..e88e5d13 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/license/implement/AdminLicenseQuestionMakeService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/license/implement/AdminLicenseQuestionMakeService.java @@ -9,7 +9,7 @@ import com.comssa.persistence.question.dto.common.response.ResponseMultipleChoiceQuestionDto; import com.comssa.persistence.question.dto.common.response.ResponseQuestionDto; import com.comssa.persistence.question.dto.license.request.RequestMakeLicenseMultipleChoiceQuestionDto; -import com.comssa.persistence.question.repository.LicenseMultipleChoiceQuestionRepository; +import com.comssa.persistence.question.repository.jpa.QuestionRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,10 +22,10 @@ @RequiredArgsConstructor public class AdminLicenseQuestionMakeService { private final LicenseSessionService licenseSessionService; - private final LicenseMultipleChoiceQuestionRepository licenseMultipleChoiceQuestionRepository; + private final QuestionRepository questionRepository; private final QuestionChoiceService questionChoiceService; - public List makeLicenseNormalQuestion( + public List makeLicenseMultipleChoiceQuestion( RequestMakeLicenseMultipleChoiceQuestionDto requestMakeLicenseMultipleChoiceQuestionDto) { LicenseSession licenseSession = licenseSessionService.getLicenseSession( requestMakeLicenseMultipleChoiceQuestionDto.getLicenseSession(), @@ -34,18 +34,18 @@ public List makeLicenseNormalQuestion( .getQuestions(); return questions .stream() - .map(q -> saveNormalLicenseQuestion(q, licenseSession, + .map(q -> saveLicenseMultipleChoiceQuestion(q, licenseSession, requestMakeLicenseMultipleChoiceQuestionDto.getLicenseCategory())) .collect(Collectors.toList()); } - private ResponseMultipleChoiceQuestionDto saveNormalLicenseQuestion( + private ResponseMultipleChoiceQuestionDto saveLicenseMultipleChoiceQuestion( RequestMakeMultipleChoiceQuestionDto requestMakeMultipleChoiceQuestionDto, LicenseSession licenseSession, LicenseCategory licenseCategory) { LicenseMultipleChoiceQuestion licenseMultipleChoiceQuestion = LicenseMultipleChoiceQuestion.makeWithDto( requestMakeMultipleChoiceQuestionDto, licenseSession, licenseCategory); - licenseMultipleChoiceQuestionRepository.save(licenseMultipleChoiceQuestion); + questionRepository.save(licenseMultipleChoiceQuestion); questionChoiceService.saveWith(requestMakeMultipleChoiceQuestionDto, licenseMultipleChoiceQuestion); return ResponseQuestionDto.from(licenseMultipleChoiceQuestion); } diff --git a/application/src/main/java/com/comssa/api/question/service/rest/license/implement/LicenseSessionService.java b/application/src/main/java/com/comssa/api/question/service/rest/license/implement/LicenseSessionService.java index 7cd5e2b5..6c13e921 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/license/implement/LicenseSessionService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/license/implement/LicenseSessionService.java @@ -3,7 +3,7 @@ import com.comssa.persistence.question.domain.license.LicenseCategory; import com.comssa.persistence.question.domain.license.LicenseSession; -import com.comssa.persistence.question.repository.LicenseSessionRepository; +import com.comssa.persistence.question.repository.jpa.LicenseSessionRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -14,20 +14,20 @@ @RequiredArgsConstructor @Transactional public class LicenseSessionService { - private final LicenseSessionRepository licenseSessionRepository; + private final LicenseSessionRepository licenseSessionRepository; - public LicenseSession getLicenseSession(String session, LicenseCategory licenseCategory) { - Optional licenseSession = licenseSessionRepository.findLicenseSessionByContent(session, - licenseCategory); - if (licenseSession.isPresent()) { - return licenseSession.get(); - } - LicenseSession newLicenseSession = LicenseSession.from(session, licenseCategory); - licenseSessionRepository.save(newLicenseSession); - return newLicenseSession; - } + public LicenseSession getLicenseSession(String session, LicenseCategory licenseCategory) { + Optional licenseSession = licenseSessionRepository.findLicenseSessionByContent(session, + licenseCategory); + if (licenseSession.isPresent()) { + return licenseSession.get(); + } + LicenseSession newLicenseSession = LicenseSession.from(session, licenseCategory); + licenseSessionRepository.save(newLicenseSession); + return newLicenseSession; + } - public LicenseSession getLicenseSessionById(Long licenseSessionId) { - return licenseSessionRepository.findById(licenseSessionId).orElse(null); - } + public LicenseSession getLicenseSessionById(Long licenseSessionId) { + return licenseSessionRepository.findById(licenseSessionId).orElse(null); + } } diff --git a/application/src/main/java/com/comssa/api/question/service/rest/license/implement/UserLicenseQuestionGetService.java b/application/src/main/java/com/comssa/api/question/service/rest/license/implement/UserLicenseQuestionGetService.java index 7ceec350..30e7d069 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/license/implement/UserLicenseQuestionGetService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/license/implement/UserLicenseQuestionGetService.java @@ -6,7 +6,7 @@ import com.comssa.persistence.question.domain.common.Question; import com.comssa.persistence.question.domain.common.QuestionCategory; import com.comssa.persistence.question.domain.license.LicenseMultipleChoiceQuestion; -import com.comssa.persistence.question.repository.LicenseMultipleChoiceQuestionRepository; +import com.comssa.persistence.question.repository.querydsl.LicenseMultipleChoiceQuestionDslRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,14 +19,14 @@ @RequiredArgsConstructor @Transactional(readOnly = true) public class UserLicenseQuestionGetService implements LicenseQuestionGetService { - private final LicenseMultipleChoiceQuestionRepository licenseMultipleChoiceQuestionRepository; + private final LicenseMultipleChoiceQuestionDslRepository licenseMultipleChoiceQuestionDslRepository; private final QuestionClassifyByCategoryService questionClassifyByCategoryService; public Map> getClassifiedLicenseMultipleChoiceQuestion( Long sessionId) { - List licenseMultipleChoiceQuestions = licenseMultipleChoiceQuestionRepository - .findAllByLicenseSessionIdFetchChoicesAndIfApproved( - sessionId); + List licenseMultipleChoiceQuestions = licenseMultipleChoiceQuestionDslRepository + .findAllWhereLicenseSessionIdAndIfApproved( + sessionId, true); for (LicenseMultipleChoiceQuestion licenseMultipleChoiceQuestion : licenseMultipleChoiceQuestions) { Collections.shuffle(licenseMultipleChoiceQuestion.getQuestionChoices()); } diff --git a/application/src/main/java/com/comssa/api/question/service/rest/major/implement/AdminMajorMultipleChoiceQuestionUpdateService.java b/application/src/main/java/com/comssa/api/question/service/rest/major/implement/AdminMajorMultipleChoiceQuestionUpdateService.java index d8d12ec1..fa67d2f5 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/major/implement/AdminMajorMultipleChoiceQuestionUpdateService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/major/implement/AdminMajorMultipleChoiceQuestionUpdateService.java @@ -1,22 +1,24 @@ package com.comssa.api.question.service.rest.major.implement; import com.comssa.persistence.question.domain.major.MajorMultipleChoiceQuestion; +import com.comssa.persistence.question.repository.jpa.MajorMultipleChoiceQuestionRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.NoSuchElementException; + @Service @RequiredArgsConstructor @Transactional public class AdminMajorMultipleChoiceQuestionUpdateService { - private final MajorMultipleChoiceQuestionDbService majorMultipleChoiceQuestionDBService; + private final MajorMultipleChoiceQuestionRepository majorMultipleChoiceQuestionRepository; public MajorMultipleChoiceQuestion toggleCanBeShortAnswered(Long questionId) { - MajorMultipleChoiceQuestion majorMultipleChoiceQuestion = majorMultipleChoiceQuestionDBService - .findById( - questionId); + MajorMultipleChoiceQuestion majorMultipleChoiceQuestion = majorMultipleChoiceQuestionRepository + .findById(questionId) + .orElseThrow(NoSuchElementException::new); majorMultipleChoiceQuestion.toggleCanBeShortAnswered(); return majorMultipleChoiceQuestion; } - } diff --git a/application/src/main/java/com/comssa/api/question/service/rest/major/implement/BasicAdminMajorQuestionClassifiedGetService.java b/application/src/main/java/com/comssa/api/question/service/rest/major/implement/BasicAdminMajorQuestionClassifiedGetService.java index 4a08c6f0..670f3edc 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/major/implement/BasicAdminMajorQuestionClassifiedGetService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/major/implement/BasicAdminMajorQuestionClassifiedGetService.java @@ -7,7 +7,8 @@ import com.comssa.persistence.question.domain.common.QuestionCategory; import com.comssa.persistence.question.domain.major.MajorDescriptiveQuestion; import com.comssa.persistence.question.domain.major.MajorMultipleChoiceQuestion; -import com.comssa.persistence.question.repository.MajorDescriptiveQuestionRepository; +import com.comssa.persistence.question.repository.querydsl.MajorDescriptiveDslRepository; +import com.comssa.persistence.question.repository.querydsl.MajorMultipleChoiceQuestionDslRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -19,9 +20,9 @@ @RequiredArgsConstructor @Transactional public class BasicAdminMajorQuestionClassifiedGetService implements AdminMajorQuestionClassifiedGetService { - private final MajorMultipleChoiceQuestionDbService majorMultipleChoiceQuestionDbService; - private final MajorDescriptiveQuestionRepository majorDescriptiveQuestionRepository; private final QuestionClassifyByCategoryService questionClassifyByCategoryService; + private final MajorDescriptiveDslRepository majorDescriptiveQuestionChooseRepository; + private final MajorMultipleChoiceQuestionDslRepository majorMultipleChoiceQuestionDslRepository; /** * 관리자가 조회시 Approve됐는지 기준으로 정렬되며(false인 것부터), @@ -31,15 +32,15 @@ public class BasicAdminMajorQuestionClassifiedGetService implements AdminMajorQu */ @Override public Map> getClassifiedAllMajorMultipleChoiceQuestions() { - List majorMultipleChoiceQuestions = majorMultipleChoiceQuestionDbService - .findAllFetchChoicesSortedByApproveAndShortAnswered(); + List majorMultipleChoiceQuestions = majorMultipleChoiceQuestionDslRepository + .findAllOrderByIfApprovedAsc(); return questionClassifyByCategoryService.classifyQuestionByCategoryOrdered(majorMultipleChoiceQuestions); } @Override public Map> getClassifiedAllMajorDescriptiveQuestions() { List majorDescriptiveQuestions = - majorDescriptiveQuestionRepository.findAllSortedByIfApproved(); + majorDescriptiveQuestionChooseRepository.findAllOrderByIfApprovedAsc(); return questionClassifyByCategoryService.classifyQuestionByCategoryOrdered(majorDescriptiveQuestions); } } diff --git a/application/src/main/java/com/comssa/api/question/service/rest/major/implement/BasicAdminMajorQuestionMakeService.java b/application/src/main/java/com/comssa/api/question/service/rest/major/implement/BasicAdminMajorQuestionMakeService.java index 0b7408ec..a5ef280e 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/major/implement/BasicAdminMajorQuestionMakeService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/major/implement/BasicAdminMajorQuestionMakeService.java @@ -8,8 +8,8 @@ import com.comssa.persistence.question.domain.major.MajorMultipleChoiceQuestion; import com.comssa.persistence.question.dto.common.request.RequestMakeMultipleChoiceQuestionDto; import com.comssa.persistence.question.dto.major.request.RequestMakeMajorDescriptiveQuestionDto; -import com.comssa.persistence.question.repository.MajorDescriptiveQuestionRepository; -import com.comssa.persistence.question.repository.MajorMultipleChoiceQuestionRepository; +import com.comssa.persistence.question.repository.jpa.MajorMultipleChoiceQuestionRepository; +import com.comssa.persistence.question.repository.jpa.QuestionRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,8 +22,8 @@ @Transactional public class BasicAdminMajorQuestionMakeService implements AdminMajorQuestionMakeService { + private final QuestionRepository questionRepository; private final MajorMultipleChoiceQuestionRepository majorMultipleChoiceQuestionRepository; - private final MajorDescriptiveQuestionRepository majorDescriptiveQuestionRepository; private final QuestionChoiceService questionChoiceService; private final DuplicateQuestionDetector duplicateQuestionDetector; @@ -77,7 +77,7 @@ private boolean isNotDuplicateQuestion(RequestMakeMultipleChoiceQuestionDto requ private MajorMultipleChoiceQuestion saveMajorMultipleChoiceQuestion( RequestMakeMultipleChoiceQuestionDto requestDto) { MajorMultipleChoiceQuestion question = MajorMultipleChoiceQuestion.makeWithDto(requestDto); - majorMultipleChoiceQuestionRepository.save(question); + questionRepository.save(question); questionChoiceService.saveWith(requestDto, question); return question; } @@ -88,7 +88,7 @@ private MajorDescriptiveQuestion saveMajorDescriptiveQuestion( MajorDescriptiveQuestion question = MajorDescriptiveQuestion.makeWithDto( requestDto ); - majorDescriptiveQuestionRepository.save(question); + questionRepository.save(question); return question; } } diff --git a/application/src/main/java/com/comssa/api/question/service/rest/major/implement/MajorMultipleChoiceQuestionDbService.java b/application/src/main/java/com/comssa/api/question/service/rest/major/implement/MajorMultipleChoiceQuestionDbService.java deleted file mode 100644 index de13b095..00000000 --- a/application/src/main/java/com/comssa/api/question/service/rest/major/implement/MajorMultipleChoiceQuestionDbService.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.comssa.api.question.service.rest.major.implement; - - -import com.comssa.persistence.question.domain.common.QuestionCategory; -import com.comssa.persistence.question.domain.common.QuestionLevel; -import com.comssa.persistence.question.domain.major.MajorMultipleChoiceQuestion; -import com.comssa.persistence.question.repository.MajorMultipleChoiceQuestionRepository; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; -import java.util.NoSuchElementException; - -@Service -@RequiredArgsConstructor -@Transactional -public class MajorMultipleChoiceQuestionDbService { - private final MajorMultipleChoiceQuestionRepository majorMultipleChoiceQuestionRepository; - - /** - * 허용되지 않은 모든 문제까지 조회 (주로 관리자) - */ - // 기본 개별 조회 - public MajorMultipleChoiceQuestion findById(Long id) { - return majorMultipleChoiceQuestionRepository.findById(id).orElseThrow(NoSuchElementException::new); - } - - // 카테고리, 레벨로 조회 - 선택지까지 - public List getFetchChoicesByCategoriesAndLevels( - List categories, - List questionLevels) { - return majorMultipleChoiceQuestionRepository.findFetchChoicesWithCategoriesAndLevels(categories, - questionLevels); - } - - // 전체 조회 - 선택지까지, 주관식 가능한 것들만 - public List findAllFetchChoicesShortAnswered() { - return majorMultipleChoiceQuestionRepository.findFetchChoicesShortAnswered(); - } - - // 전체 조회 -선택지까지 - public List findAllFetchChoices() { - return majorMultipleChoiceQuestionRepository.findFetchChoices(); - } - - //전체 조회 - 선택지까지, 정렬 - public List findAllFetchChoicesSortedByApproveAndShortAnswered() { - return majorMultipleChoiceQuestionRepository.findFetchChoicesSortedByIfApprovedAndCanBeShortAnswered(); - } - - // 개별 조회 - 선택지까지 - public MajorMultipleChoiceQuestion findByIdFetchChoices(Long id) { - return majorMultipleChoiceQuestionRepository.findByIdFetchChoices(id).orElseThrow(NoSuchElementException::new); - } - - // id로 삭제 - public void deleteById(Long id) { - majorMultipleChoiceQuestionRepository.deleteById(id); - } - - // 개별 삭제 - public void deleteNormalQuestion(MajorMultipleChoiceQuestion majorMultipleChoiceQuestion) { - majorMultipleChoiceQuestionRepository.delete(majorMultipleChoiceQuestion); - } - - /** - * 허용된 문제만을 조회 (주로 유저) - */ - // 카테고리, 레벨로 조회 - 선택지까지 - public List findAllFetchChoicesByCategoriesAndLevelsApproved( - List categories, List questionLevels) { - return majorMultipleChoiceQuestionRepository.findFetchChoicesWithCategoriesAndLevelsAndIfApproved(categories, - questionLevels); - } - - // 카테고리, 레벨로 조회 - 선택지까지, 주관식만 - public List findAllFetchChoicesByCategoriesAndLevelsApprovedAndShortAnswered( - List categories, List questionLevels) { - return majorMultipleChoiceQuestionRepository - .findFetchChoicesWithCategoriesAndLevelsAndIfApprovedAndCanBeShortAnswered( - categories, questionLevels); - } - -} diff --git a/application/src/main/java/com/comssa/api/question/service/rest/major/implement/UserMajorQuestionClassifiedGetService.java b/application/src/main/java/com/comssa/api/question/service/rest/major/implement/UserMajorQuestionClassifiedGetService.java index 8ae27235..2573dddb 100644 --- a/application/src/main/java/com/comssa/api/question/service/rest/major/implement/UserMajorQuestionClassifiedGetService.java +++ b/application/src/main/java/com/comssa/api/question/service/rest/major/implement/UserMajorQuestionClassifiedGetService.java @@ -8,7 +8,8 @@ import com.comssa.persistence.question.domain.major.MajorDescriptiveQuestion; import com.comssa.persistence.question.domain.major.MajorMultipleChoiceQuestion; import com.comssa.persistence.question.dto.major.request.RequestGetQuestionByCategoryAndLevelDto; -import com.comssa.persistence.question.repository.MajorDescriptiveQuestionRepository; +import com.comssa.persistence.question.repository.querydsl.MajorDescriptiveDslRepository; +import com.comssa.persistence.question.repository.querydsl.MajorMultipleChoiceQuestionDslRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -19,38 +20,41 @@ @Service @RequiredArgsConstructor public class UserMajorQuestionClassifiedGetService implements MajorQuestionClassifiedGetService { - private final MajorMultipleChoiceQuestionDbService majorMultipleChoiceQuestionDbService; - private final QuestionClassifyByCategoryService questionClassifyByCategoryService; - private final MajorDescriptiveQuestionRepository majorDescriptiveQuestionRepository; + private final MajorMultipleChoiceQuestionDslRepository majorMultipleChoiceQuestionDslRepository; + private final QuestionClassifyByCategoryService questionClassifyByCategoryService; + private final MajorDescriptiveDslRepository majorDescriptiveQuestionDslRepository; - /** - * 분야, 난이도 파라미터로 문제를 조회하는 경우 - 객관식. - * 문제 선택지들을 섞어준다. - */ - @Override - public Map> getApprovedClassifiedMajorMultipleChoiceQuestions( - RequestGetQuestionByCategoryAndLevelDto requestGetQuestionByCategoryAndLevelDto) { - List majorMultipleChoiceQuestions = majorMultipleChoiceQuestionDbService - .findAllFetchChoicesByCategoriesAndLevelsApproved( - requestGetQuestionByCategoryAndLevelDto.getQuestionCategories(), - requestGetQuestionByCategoryAndLevelDto.getQuestionLevels()); - for (MajorMultipleChoiceQuestion question : majorMultipleChoiceQuestions) { - Collections.shuffle(question.getQuestionChoices()); - } - return questionClassifyByCategoryService.classifyQuestionByCategoryOrdered(majorMultipleChoiceQuestions); - } + /** + * 분야, 난이도 파라미터로 문제를 조회하는 경우 - 객관식. + * 문제 선택지들을 섞어준다. + */ + @Override + public Map> getApprovedClassifiedMajorMultipleChoiceQuestions( + RequestGetQuestionByCategoryAndLevelDto requestGetQuestionByCategoryAndLevelDto) { + List majorMultipleChoiceQuestions = majorMultipleChoiceQuestionDslRepository + .findAllWhereCategoriesAndLevelsAndIfApproved( + requestGetQuestionByCategoryAndLevelDto.getQuestionCategories(), + requestGetQuestionByCategoryAndLevelDto.getQuestionLevels(), + true); + for (MajorMultipleChoiceQuestion question : majorMultipleChoiceQuestions) { + Collections.shuffle(question.getQuestionChoices()); + } + return questionClassifyByCategoryService.classifyQuestionByCategoryOrdered(majorMultipleChoiceQuestions); + } - /** - * 분야, 난이도 파라미터로 문제를 조회하는 경우 - 서술형 - */ - @Override - public Map> getApprovedClassifiedDescriptiveQuestions( - RequestGetQuestionByCategoryAndLevelDto requestGetQuestionByCategoryAndLevelDto) { - List majorDescriptiveQuestions = majorDescriptiveQuestionRepository - .findWithCategoriesAndLevelsAndIfApproved( - requestGetQuestionByCategoryAndLevelDto.getQuestionCategories(), - requestGetQuestionByCategoryAndLevelDto.getQuestionLevels()); - return questionClassifyByCategoryService.classifyQuestionByCategoryOrdered(majorDescriptiveQuestions); - } + /** + * 분야, 난이도 파라미터로 문제를 조회하는 경우 - 서술형 + */ + @Override + public Map> getApprovedClassifiedDescriptiveQuestions( + RequestGetQuestionByCategoryAndLevelDto dto) { + List majorDescriptiveQuestions = majorDescriptiveQuestionDslRepository + .findWithCategoriesAndLevelsAndIfApproved( + dto.getQuestionCategories(), + dto.getQuestionLevels(), + true + ); + return questionClassifyByCategoryService.classifyQuestionByCategoryOrdered(majorDescriptiveQuestions); + } } diff --git a/application/src/main/resources/templates/descriptiveQuestion.html b/application/src/main/resources/templates/descriptiveQuestion.html index f2315dc1..b26de80d 100644 --- a/application/src/main/resources/templates/descriptiveQuestion.html +++ b/application/src/main/resources/templates/descriptiveQuestion.html @@ -79,7 +79,7 @@