Перейти к содержимому

4. Модели и типы

Модели в Prisma описывают структуру таблиц базы данных. Каждое поле модели имеет имя, тип и опциональные атрибуты, определяющие поведение поля на уровне БД.

Prisma поддерживает богатый набор скалярных типов, которые автоматически маппируются на соответствующие типы TypeScript:

Тип PrismaТип TypeScriptSQL тип
StringstringVARCHAR/TEXT
IntnumberINTEGER
FloatnumberFLOAT/DOUBLE
BooleanbooleanBOOLEAN
DateTimeDateTIMESTAMP
JsonJsonValueJSONB
BytesBufferBYTEA

Добавление ? после типа делает поле опциональным:

model User {
id Int @id
name String? // может быть null
email String // не может быть null
}

Для связей и некоторых БД (PostgreSQL) поддерживаются массивы:

model Post {
tags String[] // массив строк (PostgreSQL)
}

Первичный ключ обязателен для каждой модели. Используйте @id с автоинкрементом или UUID:

model Product {
id Int @id @default(autoincrement())
// или:
uuid String @id @default(uuid())
}

Специальный атрибут @updatedAt автоматически обновляет поле при каждом изменении записи — нет нужды делать это вручную.

model Post {
updatedAt DateTime @updatedAt
}