4. Модели и типы
Модели в Prisma описывают структуру таблиц базы данных. Каждое поле модели имеет имя, тип и опциональные атрибуты, определяющие поведение поля на уровне БД.
Скалярные типы
Заголовок раздела «Скалярные типы»Prisma поддерживает богатый набор скалярных типов, которые автоматически маппируются на соответствующие типы TypeScript:
| Тип Prisma | Тип TypeScript | SQL тип |
|---|---|---|
String | string | VARCHAR/TEXT |
Int | number | INTEGER |
Float | number | FLOAT/DOUBLE |
Boolean | boolean | BOOLEAN |
DateTime | Date | TIMESTAMP |
Json | JsonValue | JSONB |
Bytes | Buffer | BYTEA |
Опциональные поля
Заголовок раздела «Опциональные поля»Добавление ? после типа делает поле опциональным:
model User { id Int @id name String? // может быть null email String // не может быть null}Списочные поля
Заголовок раздела «Списочные поля»Для связей и некоторых БД (PostgreSQL) поддерживаются массивы:
model Post { tags String[] // массив строк (PostgreSQL)}Атрибуты @id и @default
Заголовок раздела «Атрибуты @id и @default»Первичный ключ обязателен для каждой модели. Используйте @id с автоинкрементом или UUID:
model Product { id Int @id @default(autoincrement()) // или: uuid String @id @default(uuid())}Атрибут @updatedAt
Заголовок раздела «Атрибут @updatedAt»Специальный атрибут @updatedAt автоматически обновляет поле при каждом изменении записи — нет нужды делать это вручную.
model Post { updatedAt DateTime @updatedAt}