Blob 타입 추론을 위해 .$type<..>()을 지정할 수 있습니다.
이것은 런타임 값을 검사하지 않습니다.
기본값, 삽입 및 선택 스키마에 대한 컴파일 타임 보호를 제공합니다.
Boolean 타입
SQLite는 기본적으로 boolean 데이터 타입을 지원하지 않습니다. 하지만 integer 컬럼을 boolean 모드로 지정할 수 있습니다. 이렇게 하면 코드에서 불리언 값을 다룰 수 있고, Drizzle은 이를 데이터베이스에 0과 1의 정수 값으로 저장합니다.
이 예제에서는 id 컬럼을 boolean 모드로 설정하여, 불리언 값을 저장할 수 있도록 합니다. 데이터베이스에는 이 값이 0 또는 1로 저장됩니다.
Bigint
SQLite에는 bigint 데이터 타입이 없기 때문에, Drizzle은 blob 컬럼을 위한 특별한 bigint 모드를 제공합니다. 이 모드를 사용하면 코드에서 BigInt 인스턴스를 다룰 수 있으며, Drizzle은 이를 데이터베이스에 blob 값으로 저장합니다.
위의 코드에서 blob 컬럼은 bigint 모드로 설정되어 있으며, 이는 데이터베이스에 blob 값으로 저장됩니다. 이를 통해 BigInt 값을 효율적으로 다룰 수 있습니다.
---
데이터 타입 커스터마이징
모든 컬럼 빌더는 .$type() 메서드를 제공합니다. 이 메서드를 사용하면 컬럼의 데이터 타입을 커스터마이징할 수 있습니다. 이 기능은 알려지지 않은 타입이나 브랜드 타입을 다룰 때 유용합니다.
위 예제에서 UserId는 브랜드 타입으로 정의되었고, Data는 일반 객체 타입입니다. .$type() 메서드를 사용해 각 컬럼에 맞는 타입을 지정할 수 있습니다.
NOT NULL 제약 조건
NOT NULL 제약 조건은 해당 컬럼이 NULL 값을 포함할 수 없음을 의미합니다.
기본값 설정
DEFAULT 절은 사용자가 INSERT를 수행할 때 명시적으로 값을 제공하지 않았을 경우, 컬럼에 사용할 기본값을 지정합니다. 컬럼 정의에 명시적인 DEFAULT 절이 없으면, 해당 컬럼의 기본값은 NULL이 됩니다.
명시적인 DEFAULT 절은 기본값을 NULL, 문자열 상수, 블롭 상수, 부호 있는 숫자, 또는 괄호로 둘러싸인 상수 표현식으로 지정할 수 있습니다.
기본값은 대소문자를 구분하지 않는 특수 키워드인 CURRENT_TIME, CURRENT_DATE, 또는 CURRENT_TIMESTAMP 중 하나일 수도 있습니다.
$default() 또는 $defaultFn()을 사용하면 런타임에 기본값을 생성하고, 이 값을 모든 삽입 쿼리에서 사용할 수 있습니다. 이 함수들은 uuid, cuid, cuid2 등 다양한 구현을 활용하는 데 도움을 줄 수 있습니다.
참고: 이 값은 drizzle-kit 동작에 영향을 미치지 않으며, drizzle-orm에서만 런타임에 사용됩니다.
$onUpdate() 또는 $onUpdateFn()을 사용하면 런타임에 기본값을 생성하고, 이 값을 모든 업데이트 쿼리에서 사용할 수 있습니다. 이 함수는 행이 업데이트될 때 호출되며, 반환된 값이 컬럼 값으로 사용됩니다. 만약 기본값(또는 $defaultFn)이 제공되지 않으면, 행이 삽입될 때도 이 함수가 호출되고, 반환된 값이 컬럼 값으로 사용됩니다.
참고: 이 값은 drizzle-kit 동작에 영향을 미치지 않으며, drizzle-orm에서만 런타임에 사용됩니다.