#399 Код-ревью отчета по задачам пользователей

Компании:
БФТ
Темы:
SpringОсновы SpringКод ревью

Сделать код-ревью:

@RestController
@RequestMapping("/user")
@RequiredArgsConstructor
@Sl4j
public class UserController {
    private final ExerciseService exerciseService;
    private final UserRepository userRepository;

    @RequestMapping("/get-report")
    public Map<String, Double> getReport() {
        log.info("get report");
        var users = userRepository.findAll();
        Map<String, Double> result = new HashMap<>();
        users.forEach(
                user -> {
                    var exercises = exerciseService.getUserPerformance(user.id);
                    var performance = exercises
                            .stream()
                            .mapToDouble(t -> Duration.between(t.getStartTime(), t.getEndTime()).toMinutes())
                            .average().orElse(0);
                    result.put(user.getName(), performance);
                }
        );
        return result;
    }
}

@Data
class User {
    Long id;
    String name;
}

@Data
class Exercise {
    Long id;
    @NotNull
    LocalDateTime startTime = LocalDateTime.now();
    LocalDateTime endTime;
}

@Service
@RequiredArgsConstructor
class ExerciseService {
    private final ExerciseRepository exerciseRepository;

    List<Exercise> getUserPerformance(Long userId) {
        return exerciseRepository.findByUserId(userId);
    }
}

interface ExerciseRepository {
    List<Exercise> findByUserId(Long userId);
}

interface UserRepository {
    List<User> findAll();
}

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти