피드로 돌아가기
Dev.toBackend
원문 읽기
URL 쿼리를 Type-Safe SQL로 변환하는 Dynamic Query Builder 설계
How to Dynamically Map URL Queries to Type-Safe SQL (Drizzle ORM Architecture)
AI 요약
Context
동적 URL 쿼리 스트링을 Type-Safe SQL로 변환하는 과정에서 발생하는 코드 중복 문제. API 엔드포인트마다 거대한 switch 문을 작성하는 비효율적인 구조. 적절한 검증 없는 입력값 처리로 인한 SQL Injection 보안 위험.
Technical Solution
- URL Query, Parser, AST, ORM Builder, SQL로 이어지는 계층적 데이터 흐름 설계
- 허용된 연산자만 매핑하는 Operator Dictionary를 구축하여 비정상적인 쿼리 요청 원천 차단
- Drizzle ORM의 getTableColumns 기능을 활용해 DB 스키마 메타데이터를 동적으로 추출하는 Introspection 전략
- 입력된 컬럼명과 연산자의 유효성을 스키마 및 딕셔너리와 대조하여 검증하는 필터 빌더 구현
- 검증 완료된 조건들을 Drizzle AST(Abstract Syntax Tree) 형태로 변환하여 WHERE 절에 주입하는 구조
- 개별 엔드포인트 의존성을 제거하고 모든 테이블에 적용 가능한 범용 쿼리 엔진 아키텍처 구축
Key Takeaway
사용자 입력값을 직접 쿼리에 사용하지 않고 중간 추상화 계층(AST)을 통해 변환함으로써 보안성과 확장성을 동시에 확보하는 설계 원칙.
실천 포인트
동적 필터링 요구사항이 많은 API 설계 시, 하드코딩된 조건문 대신 스키마 기반의 메타데이터 매핑 엔진 도입을 검토할 것