TypeIs 복합 타입
DTO, QUERY, ARRAY는 Sequelize 컬럼 매핑이 없는 복합 타입입니다. DTO 클래스와 라우트 IOptions에서 사용됩니다.
import { TypeIs } from '@asapjs/sequelize';이 페이지에서 찾을 수 있는 것
| 심볼 | Sequelize | Swagger | 엔티티 | DTO | 라우트 |
|---|---|---|---|---|---|
TypeIs.DTO | include 생성 | $ref | X | O | O |
TypeIs.QUERY | Sequelize.literal() | type에 위임 | X | O | X |
TypeIs.ARRAY | — | { type: 'array', items } | X | O | O |
PAGING 관련 안내:
TypeIs.PAGING은 현재 공개 API(TypeIsDecorators)에 포함되지 않습니다.LegacyTypeIs.PAGING으로만 접근 가능하며, 이는index.ts에서 export되지 않습니다. 기존 문서에서TypeIs.PAGING(Dto)사용법이 참조되나, 코드 리팩토링 이후 공식 export에서 제외된 상태입니다.
TypeIs.DTO
TypeIs.DTO(options: {
dto: typeof ExtendableDto;
as: string;
comment?: string;
})| 항목 | 값 |
|---|---|
| Sequelize | middleware() 호출 시 include 항목 생성 |
| Swagger | 중첩된 DTO의 스키마를 가리키는 $ref |
fixValue | 없음 — map()이 중첩 DTO의 자체 map()을 호출하여 DTO 필드를 처리 |
as는 엔티티의 BELONGSTO 선언에서 사용한 Sequelize 연관 별칭과 일치해야 합니다.
@TypeIs.DTO({ dto: UserInfoDto, as: 'user', comment: 'Post author' })
user: UserInfoDto;TypeIs.QUERY
TypeIs.QUERY(options: {
query: (props: { user?: any; association?: string }) => string;
type: () => TypeIsData;
})| 항목 | 값 |
|---|---|
| Sequelize | Sequelize.literal(...) 속성 항목 생성 |
| Swagger | type TypeIs 함수 자체의 Swagger 출력에 위임 |
fixValue | type TypeIs 함수 자체의 fixValue에 위임 |
QueryOptions
interface QueryOptions extends SchemaOptions {
query: (association: string, user?: any) => string;
}원시 SQL 표현식이 필요한 계산 컬럼에 QUERY를 사용합니다. query 함수는 현재 association 경로와 JWT 페이로드의 user 객체를 받습니다.
@TypeIs.QUERY({
query: ({ association }) => `(SELECT COUNT(*) FROM posts WHERE posts.user_id = \`${association}\`.\`id\`)`,
type: () => TypeIs.INT(),
})
post_count: number;TypeIs.ARRAY
TypeIs.ARRAY(options: DtoOrTypeIs)DtoOrTypeIs는 typeof ExtendableDto | (() => TypeIsData)입니다. 자세한 설명은 @Dto 데코레이터 — DtoOrTypeIs를 참조하세요.
| 항목 | 값 |
|---|---|
| Sequelize | 컬럼 매핑 없음 |
| Swagger | { type: 'array', items: ... }로 네임드 스키마 컴포넌트에 등록 |
fixValue | 값이 문자열이면 JSON.parse 시도; 그렇지 않으면 그대로 반환 |
// DTO 클래스 사용
response: TypeIs.ARRAY(UserInfoDto)
// 기본 TypeIs 사용
response: TypeIs.ARRAY(TypeIs.INT())
TypeIs.ARRAY(TypeIs.STRING())관련 항목
- TypeIs 기본 타입 — 숫자, 문자열, 불리언, 날짜
- TypeIs 관계 타입 — FOREIGNKEY, BELONGSTO
- ExtendableDto —
map()과middleware()가 복합 타입을 처리하는 방법 - Repository — 페이지네이션 응답 엔벨로프
- @Dto 데코레이터 —
DtoOrTypeIs유니온 타입
Last updated on