package net.okjsp.techqna.service;
import java.util.List;
import org.springframework.web.bind.annotation.PathVariable;
import net.okjsp.common.model.Paging;
import net.okjsp.techqna.model.Revision;
import net.okjsp.techqna.model.TechQna;
/**
* Tech QNA service
*
* @author yjc0703
*
*/
public interface TechQnaService {
/**
* question total count
*
* @return question total count
*/
Integer selectTechQnaTotalCount(int boardId, int categoryId);
/**
* question total count(by tag)
*
* @param tagName
* @return question total count
*/
Integer selectTechQnaByTagTotalCount(int boardId, int categoryId, String tagName);
/**
* Tech QNA 리스트(질문목록)
*
* @param paging 페이징
* @param sortType 정렬기준(최근순, 답변많은순 등등...)
* @return Tach QNA 리스트
*/
List<TechQna> selectTechQnaList(int boardId, int categoryId, Paging paging, String sortType);
/**
* Tech QNA 리스트(질문목록)
*
* @param paging 페이징
* @param sortType 정렬기준(최근순, 답변많은순 등등...)
* @param tagName 특정 Tag가 포함된 목록만 조회
* @return Tach QNA 리스트
*/
List<TechQna> selectTechQnaList(int boardId, int categoryId, Paging paging, String sortType, String tagName);
/**
* Tech QNA Detail
* 질문 클릭 후 내용보기 화면에서 사용
*
* @param WriteNo 게시글번호(Question 기준)
* @return Tech QNA 리스트(1 Question + N Answers.. LinkedList로 순서 섞이지 않게)
*/
List<TechQna> selectTechQnaDetail(int boardId, int categoryId, Integer writeNo);
/**
* Tech QNA Question
* 질문 클릭 후 내용보기 화면에서 사용
*
* @param WriteNo 게시글번호(Question 기준)
* @return Tech QNA스트
*/
TechQna selectOneTechQnaQuestion(int boardId, int categoryId, Integer writeNo);
/**
* Tech QNA Answser
* 질문 클릭 후 내용보기 화면에서 사용
*
* @param WriteNo 게시글번호(Question 기준)
* @return Tech QNA 리스트
*/
List<TechQna> selectTechQnaAnswers(int boardId, int categoryId, Integer writeNo);
/**
* Tech QNA Answser
* 질문 클릭 후 내용보기 화면에서 사용
*
* @param WriteNo 게시글번호(Question 기준)
* @return Tech QNA 리스트
*/
TechQna selectOneTechQnaAnswer(int boardId, int categoryId, Integer writeNo, Integer parentId);
/**
* Tech QNA 생성
*
* @param techQna
*/
void createTechQna(TechQna techQna, String summary);
/**
* Tech QNA 수정
*
* @param techQna
*/
void updateTechQna(TechQna techQna, String summary);
/**
* Tech QNA Revision List
* 변경이력 조회 화면에서 사용
*
* @param techQna
*/
List<Revision> selectRevisionList(Integer writeNo);
/**
* Tech QNA 조회수 증가
*
* @param WriteNo 글 번호
*/
void incTechQnaHit(int WriteNo);
}