에 학생 관계형 테이블에 설정에 서로 다른 필터를 지원하기 위해 사용되는 [student_id, 표준, home_city, home_state, 국가를 num_of_subjects] 이제디자인 패턴은 내가</p> <p>스키마와 SQL 테이블이 자바
, 이 테이블 위에 api 엔드 포인트를 지원하고자합니다 :
GET /students?home_state=?&country=?&home_city=?&standard=?
모든 필터는 선택 사항입니다.
이제이 요구 사항에 맞는 좋은 코드 디자인을 알고 싶습니다. 기술을 위해 웹 애플리케이션 용 자바와 런타임 쿼리 생성 용 라이브러리 인 querydsl을 사용하고 있습니다.
몇 가지 아이디어가 떠돌 았지만 사례를 처리 할 수있는 구체적이고 확장 가능한 접근 방식을 찾고 있습니다. 따라서 새로운 필터 열이 추가되면 (예 : fav_subject) 최소 코드 변경이 필요합니다. 아이디어를 위해, 나는이 방법
public interface Filter {
// If apiCallParameters contains this filter key, add filter to addToList
void addFilter(Map<String, String> apiCallParameters, List<QueryFilters> addToList);
}
와 필터 인터페이스를 생각하고
가능한 모든 필터는이 인터페이스를 구현하는 클래스 각 될 것입니다. 이제 쿼리 생성 클래스는 List<Filter>
을 가질 수 있으며 각 필터는 addFilter를 사용하여이 필터를 추가할지 여부를 결정합니다.
코드 디자인에서이 겉으로보기에 매우 일반적인 경우를 어떻게 처리해야하는지 더 잘 알고 싶습니다.
이것은 내가 작성한 API 끝점 일 뿐이므로이 끝점과 데이터베이스 계층 사이의 이야기에 관심이 있습니다. – greperror