package com.unicorn.hgzero.meeting.infra.gateway.repository;

import com.unicorn.hgzero.meeting.infra.gateway.entity.MinutesSectionEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 회의록 섹션 JPA Repository
 */
@Repository
public interface MinutesSectionJpaRepository extends JpaRepository<MinutesSectionEntity, String> {

    /**
     * 회의록 ID로 섹션 목록 조회 (순서대로)
     */
    @Query("SELECT m FROM MinutesSectionEntity m WHERE m.minutesId = :minutesId ORDER BY m.order ASC")
    List<MinutesSectionEntity> findByMinutesIdOrderByOrderAsc(@Param("minutesId") String minutesId);

    /**
     * 회의록 ID와 타입으로 섹션 목록 조회
     */
    List<MinutesSectionEntity> findByMinutesIdAndType(String minutesId, String type);

    /**
     * 회의록 ID와 검증 여부로 섹션 목록 조회
     */
    List<MinutesSectionEntity> findByMinutesIdAndVerified(String minutesId, Boolean verified);

    /**
     * 회의록 ID와 잠금 여부로 섹션 목록 조회
     */
    List<MinutesSectionEntity> findByMinutesIdAndLocked(String minutesId, Boolean locked);

    /**
     * 잠금한 사용자 ID로 섹션 목록 조회
     */
    List<MinutesSectionEntity> findByLockedBy(String lockedBy);
}
