package com.pandoli365.bibimbap.data;

import java.math.BigDecimal;
import java.time.OffsetDateTime;

/**
 * jam_awards 행 POJO (W2-3 동결 스키마 소비 — docs/jam-eval-ddl.sql §4).
 *
 * <p>핵심 컬럼(jamId/gameId/awardTrack/rank/scoreValue/computedAt)에 더해
 * 결과 페이지 표시용 JOIN 필드(gameName/thumbnailUrl/entrantName)를 보유한다.
 * 표시 필드는 listByJamWithGame(JOIN games + jam_entries) 조회에서만 채워지고,
 * INSERT 시에는 핵심 컬럼만 사용한다(표시 필드 write 0).
 *
 * <p>POJO 직접 매핑이므로 매퍼 alias 는 snake→camel 비인용(scoreValue) 사용 — §33
 * 큰따옴표 규칙은 집계 VIEW(Map resultType) 소비에만 적용. 본 POJO 는 일반 테이블 매핑.
 */
public class JamAwardData {

    private Long id;
    private Long jamId;
    private Long gameId;
    private String awardTrack;
    private Integer rank;
    private BigDecimal scoreValue;
    private OffsetDateTime computedAt;

    // 결과 페이지 표시용 JOIN 필드(listByJamWithGame 전용 — INSERT 미사용)
    private String gameName;
    private String thumbnailUrl;
    private String entrantName;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getJamId() {
        return jamId;
    }

    public void setJamId(Long jamId) {
        this.jamId = jamId;
    }

    public Long getGameId() {
        return gameId;
    }

    public void setGameId(Long gameId) {
        this.gameId = gameId;
    }

    public String getAwardTrack() {
        return awardTrack;
    }

    public void setAwardTrack(String awardTrack) {
        this.awardTrack = awardTrack;
    }

    public Integer getRank() {
        return rank;
    }

    public void setRank(Integer rank) {
        this.rank = rank;
    }

    public BigDecimal getScoreValue() {
        return scoreValue;
    }

    public void setScoreValue(BigDecimal scoreValue) {
        this.scoreValue = scoreValue;
    }

    public OffsetDateTime getComputedAt() {
        return computedAt;
    }

    public void setComputedAt(OffsetDateTime computedAt) {
        this.computedAt = computedAt;
    }

    public String getGameName() {
        return gameName;
    }

    public void setGameName(String gameName) {
        this.gameName = gameName;
    }

    public String getThumbnailUrl() {
        return thumbnailUrl;
    }

    public void setThumbnailUrl(String thumbnailUrl) {
        this.thumbnailUrl = thumbnailUrl;
    }

    public String getEntrantName() {
        return entrantName;
    }

    public void setEntrantName(String entrantName) {
        this.entrantName = entrantName;
    }
}
