package com.samsung.sample.board.impl; // 샘플 게시판 서비스 구현 패키지이다.

import java.util.List; // 목록 반환을 위해 List 타입을 사용한다.

import org.springframework.stereotype.Service; // 서비스 빈 등록을 위해 Service를 사용한다.

import com.samsung.sample.board.SampleBoardService; // 샘플 게시판 서비스 인터페이스를 사용한다.
import com.samsung.sample.board.dao.SampleBoardDao; // 샘플 게시판 DAO를 사용한다.
import com.samsung.sample.board.entity.SampleBoard; // 샘플 게시판 엔티티를 사용한다.

@Service // 샘플 게시판 서비스 구현체를 스프링 빈으로 등록한다.
public class SampleBoardServiceImpl implements SampleBoardService { // 샘플 게시판 서비스 구현체이다.

    private final SampleBoardDao sampleBoardDao; // 샘플 게시판 DAO이다.

    public SampleBoardServiceImpl(SampleBoardDao sampleBoardDao) { // 생성자에서 DAO를 주입받는다.
        this.sampleBoardDao = sampleBoardDao; // 주입받은 DAO를 필드에 저장한다.
    } // 생성자를 종료한다.

    @Override // 목록 조회 인터페이스 구현이다.
    public List<SampleBoard> getSampleBoardList() { // 게시글 목록을 조회한다.
        return sampleBoardDao.selectSampleBoardList(); // DAO 목록 조회를 호출한다.
    } // 목록 조회 메서드를 종료한다.

    @Override // 상세 조회 인터페이스 구현이다.
    public SampleBoard getSampleBoard(Integer id) { // 게시글 상세를 조회한다.
        return sampleBoardDao.selectSampleBoard(id); // DAO 단건 조회를 호출한다.
    } // 상세 조회 메서드를 종료한다.

    @Override // 등록 인터페이스 구현이다.
    public SampleBoard createSampleBoard(SampleBoard sampleBoard) { // 게시글을 등록한다.
        sampleBoardDao.insertSampleBoard(sampleBoard); // DAO 등록을 호출한다.
        return sampleBoardDao.selectSampleBoard(sampleBoard.getId()); // 등록된 게시글을 다시 조회해 반환한다.
    } // 등록 메서드를 종료한다.

    @Override // 수정 인터페이스 구현이다.
    public SampleBoard updateSampleBoard(SampleBoard sampleBoard) { // 게시글을 수정한다.
        sampleBoardDao.updateSampleBoard(sampleBoard); // DAO 수정을 호출한다.
        return sampleBoardDao.selectSampleBoard(sampleBoard.getId()); // 수정된 게시글을 다시 조회해 반환한다.
    } // 수정 메서드를 종료한다.

    @Override // 삭제 인터페이스 구현이다.
    public void deleteSampleBoard(Integer id) { // 게시글을 삭제한다.
        sampleBoardDao.deleteSampleBoard(id); // DAO 삭제를 호출한다.
    } // 삭제 메서드를 종료한다.
} // 서비스 구현체 정의를 종료한다.
