@asapjs/sequelize
@asapjs/sequelize는 ASAPJS 프레임워크의 Sequelize ORM 통합 패키지입니다. 데이터 모델링, DTO, 리포지토리 패턴, Swagger 스키마 자동 생성을 하나의 패키지에서 제공합니다.
TypeIs의 기본 타입(INT, STRING, BOOLEAN 등 16종)은@asapjs/schema패키지에서 정의됩니다.@asapjs/sequelize는 이 타입들을 프로퍼티 데코레이터로 래핑하여 export하며, Sequelize 전용 타입(QUERY, FOREIGNKEY, BELONGSTO)을 추가 등록합니다.
설치
npm install @asapjs/sequelize피어 의존성:
npm install sequelize sequelize-typescript임포트
import {
// 데이터베이스 라이프사이클
initSequelizeModule, getSequelize, modelsSync, healthCheck, generateDBML,
// 데코레이터
Table, Dto, TypeIs,
// DTO
ExtendableDto, PaginationQueryDto, type PaginationQueryType,
// 리포지토리
Repository,
// 타입
type DtoOrTypeIs, type TypeIsData,
// 유틸리티
getUserIdInQuery, getDBMLData, getConsoleData, setSwaggerFunctions,
} from '@asapjs/sequelize';이 페이지에서 찾을 수 있는 것
| 카테고리 | 심볼 | 설명 | 레퍼런스 |
|---|---|---|---|
| 라이프사이클 | initSequelizeModule | DB 레이어 초기화 | 데이터베이스 라이프사이클 |
getSequelize | Sequelize 인스턴스 접근 | 데이터베이스 라이프사이클 | |
modelsSync | 스키마 동기화 | 데이터베이스 라이프사이클 | |
healthCheck | DB 헬스 체크 | 데이터베이스 라이프사이클 | |
generateDBML | DBML 생성 (placeholder) | 데이터베이스 라이프사이클 | |
| 데코레이터 | @Table | Sequelize 테이블 정의 | @Table 데코레이터 |
@Dto | DTO 메타데이터 등록 | @Dto 데코레이터 | |
| 클래스 | ExtendableDto | DTO 기본 클래스 | ExtendableDto |
PaginationQueryDto | 페이지네이션 쿼리 DTO | @Dto 데코레이터 | |
Repository | 리포지토리 패턴 | Repository | |
| 타입 시스템 | TypeIs | 통합 타입 데코레이터 | 아래 퀵 레퍼런스 참조 |
DtoOrTypeIs | DTO/TypeIs 유니온 타입 | @Dto 데코레이터 | |
| 유틸리티 | getUserIdInQuery | 쿼리에서 유저 ID 추출 | 유틸리티 |
getDBMLData | DBML 데이터 생성 | 유틸리티 | |
getConsoleData | 콘솔 디버그 데이터 | 유틸리티 |
TypeIs 빠른 참조 테이블
| TypeIs | Sequelize | Swagger | fixValue | 엔티티 | DTO | 라우트 | 레퍼런스 |
|---|---|---|---|---|---|---|---|
INT | INTEGER | integer / int32 | parseInt | O | O | O | 기본 타입 |
BIGINT | BIGINT | integer / int32 | parseInt | O | O | O | 기본 타입 |
LONG | INTEGER | integer / int64 | parseInt | O | O | O | 기본 타입 |
FLOAT | FLOAT | integer / float | parseFloat | O | O | O | 기본 타입 |
DECIMAL | DECIMAL | integer / float | parseFloat | O | O | O | 기본 타입 |
DOUBLE | DOUBLE | number / double | parseFloat | O | O | O | 기본 타입 |
STRING | STRING | string | String(o) | O | O | O | 기본 타입 |
TEXT | TEXT | string | String(o) | O | O | O | 기본 타입 |
PASSWORD | STRING(512) | string / password | 없음 | O | O | O | 기본 타입 |
BOOLEAN | BOOLEAN | boolean | Boolean | O | O | O | 기본 타입 |
DATEONLY | DATEONLY | string / date | 없음 | O | O | O | 기본 타입 |
DATETIME | DATE | string / date-time | 없음 | O | O | O | 기본 타입 |
ENUM | ENUM | string (enum) | 값 검증 | O | O | O | 특수 타입 |
JSON | JSON | object | JSON.parse | O | O | O | 특수 타입 |
FOREIGNKEY | FK 제약 | — | 없음 | O | X | X | 관계 타입 |
BELONGSTO | 연관 | — | 없음 | O | X | X | 관계 타입 |
DTO | include | $ref | 없음 | X | O | O | 복합 타입 |
QUERY | literal() | type에 위임 | type에 위임 | X | O | X | 복합 타입 |
ARRAY | — | array | JSON.parse | X | O | O | 복합 타입 |
TypeIs 이중 사용법: 데코레이터 vs. 값
모든 TypeIs.* 함수는 두 가지 방식으로 동작합니다.
프로퍼티 데코레이터로 (엔티티 또는 DTO 클래스에서):
@TypeIs.STRING({ comment: 'Email address' })
email: string;일반 값으로 (라우트 IOptions 또는 복합 타입의 인수로):
// 라우트 응답 옵션
response: TypeIs.BOOLEAN()
// 타입 조합
TypeIs.ARRAY(TypeIs.INT())
TypeIs.PAGING(UserInfoDto)관련 항목
- 데이터베이스 라이프사이클 — 초기화, 동기화, 헬스 체크
- @Table 데코레이터 — 엔티티 정의
- TypeIs 기본 타입 — 숫자, 문자열, 불리언, 날짜
- TypeIs 특수 타입 — ENUM, JSON
- TypeIs 관계 타입 — FOREIGNKEY, BELONGSTO
- TypeIs 복합 타입 — DTO, QUERY, ARRAY
- ExtendableDto — DTO 기본 클래스
- @Dto 데코레이터 — DTO 메타데이터 및 페이지네이션
- Repository — 리포지토리 패턴
- 유틸리티 — 헬퍼 함수
Last updated on