diff --git a/src/main/java/com/codzilla/backend/judge/client/Artefactik0Client.java b/src/main/java/com/codzilla/backend/judge/client/Artefactik0Client.java index f0388a0..4f48471 100644 --- a/src/main/java/com/codzilla/backend/judge/client/Artefactik0Client.java +++ b/src/main/java/com/codzilla/backend/judge/client/Artefactik0Client.java @@ -94,6 +94,7 @@ public static class RandomProblemResponse { private Long id; private String name; private String level; + private String type; } @Data diff --git a/src/main/java/com/codzilla/backend/judge/problem/ProblemService.java b/src/main/java/com/codzilla/backend/judge/problem/ProblemService.java index 6e0eae1..b2cd7f2 100644 --- a/src/main/java/com/codzilla/backend/judge/problem/ProblemService.java +++ b/src/main/java/com/codzilla/backend/judge/problem/ProblemService.java @@ -67,11 +67,8 @@ public String submitSolution(UUID userId, UUID matchId , Long problemId, String .orElseThrow(() -> new RuntimeException("Problem not found: " + problemId)); return switch (problem.getType()) { - case ALGORITHM -> submitAlgo(userId, problem, sourceCode, languageId , matchId); + case ALGORITHM, MATH, DATA_STRUCTURES -> submitAlgo(userId, problem, sourceCode, languageId , matchId); case SQL -> submitSql(userId, problem, sourceCode , matchId); - - case MATH -> null; - case DATA_STRUCTURES -> null; }; } @@ -154,10 +151,11 @@ private String submitSql(UUID userId, Problem problem, String query, UUID matchI public Problem getOrCreateRandomAlgoProblem(String type, String level) { Artefactik0Client.RandomProblemResponse external = artefactik0Client.getRandomProblem(type, level); - ProblemType problemType; try { - problemType = ProblemType.valueOf(type.toUpperCase()); + problemType = ProblemType.valueOf( + external.getType() != null ? external.getType().toUpperCase() : type.toUpperCase() + ); } catch (IllegalArgumentException e) { problemType = ProblemType.ALGORITHM; } @@ -169,9 +167,10 @@ public Problem getOrCreateRandomAlgoProblem(String type, String level) { problem.setName(external.getName()); problem.setExternalId(external.getId()); problem.setType(finalProblemType); - problem.setLevel(Problem.ProblemLevel.valueOf(external.getLevel().toUpperCase())); - log.info("Created new ALGO problem in local DB: id={}, externalId={}", - problem.getId(), problem.getExternalId()); + problem.setLevel(Problem.ProblemLevel.valueOf( + external.getLevel().toUpperCase())); + log.info("Created new {} problem in local DB: externalId={}", + finalProblemType, problem.getExternalId()); return problemRepository.save(problem); }); }