package dev.awesomedev.mirim.repository;

import dev.awesomedev.mirim.domain.QuizResult;
import dev.awesomedev.mirim.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

/**
 * 이 파일이 하는 일: quiz_result 테이블의 DB 접근 창구.
 */
public interface QuizResultRepository extends JpaRepository<QuizResult, Long> {

    /**
     * 이 사용자의 모든 응시 기록 — 최신순.
     *
     * 학습 포인트: 왜 OrderBy를 붙였나? 원래는 findByUser(user)였는데,
     * 이걸 쓰는 쪽에서 "마지막 것이 가장 최근"이라고 가정하는 코드가 있었다.
     * 하지만 정렬을 지정하지 않으면 DB가 어떤 순서로 줄지 아무도 보장하지 않는다 —
     * 지금 잘 나오더라도 데이터가 늘거나 실행 계획이 바뀌면 조용히 순서가 달라진다.
     * "순서가 필요하면 반드시 ORDER BY로 말한다" — 우연히 맞는 코드는 언젠가 틀린다.
     */
    List<QuizResult> findByUserOrderBySubmittedAtDesc(User user);
}
