피드로 돌아가기
# I built a type-safe SQL library for Bun — no ORM, no codegen, just SQL (using Claude Code)
Dev.toDev.to
Database

Codegen 없는 Bun 네이티브 Type-safe SQL 라이브러리 squn 구현

# I built a type-safe SQL library for Bun — no ORM, no codegen, just SQL (using Claude Code)

phonemyatt2026년 5월 22일5intermediate

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 구조 적용

원문 읽기