피드로 돌아가기
Dev.toDatabase
원문 읽기
Codegen 없는 Bun 네이티브 Type-safe SQL 라이브러리 squn 구현
# I built a type-safe SQL library for Bun — no ORM, no codegen, just SQL (using Claude Code)
AI 요약
Context
기존 SQL 라이브러리의 Node.js 내부 의존성 및 ORM의 과도한 추상화로 인한 유연성 저하 문제 발생. Build-time의 Schema 기반 Codegen 과정이 개발 사이클의 병목으로 작용하는 한계 존재.
Technical Solution
- Tagged Template Literal 기반의
sql함수를 통한 SQL Injection 구조적 차단 및 Bound Parameter 자동 변환 - Adapter Pattern 도입을 통해 SQLite, PostgreSQL, MySQL, MSSQL 등 4종의 DB를 단일 API로 통합 제어
- TypeScript의 Generics와
defineTable을 통한 런타임 스키마 정의 및InferSelect,InferInsert타입 추론 구현 - Composable SQL Fragments 설계를 통한 조건부 쿼리 조립 및 Placeholder 자동 재번호 매기기 로직 적용
Symbol.asyncDispose를 활용한 Transaction Cleanup 보장 및atomically래퍼를 통한 원자적 처리 구현- Connection Pool 관리를 위한
createConnections구조 설계로 Primary-Replica 읽기 분산 라우팅 지원
실천 포인트
- Type-safety 확보를 위해 Codegen 대신 TypeScript의 고급 타입 추론(Inference) 활용 검토 - SQL Injection 방지를 위해 문자열 결합이 아닌 Bound Parameter 기반의 Tagged Template Literal 도입 - 다양한 DB 엔진 대응을 위해 비즈니스 로직과 DB 드라이버 사이의 Adapter 계층 분리 - Transaction 관리 시 Resource Leak 방지를 위한 `await using` 패턴 및 자동 Rollback 구조 적용