Дмитрий
![Картинка поста Как организовать схему Prisma в нескольких файлах: новая возможность в версии 5.15](/_next/image?url=https%3A%2F%2Fcdn-bucket.hb.bizmrg.com%2Fpurple-images%2Fprofile-images%2Fb5bc1443-7a86-4557-9c3b-4d78a36eb7b9.png&w=3840&q=75)
С выходом версии 5.15 Prisma ORM представила долгожданную функцию, позволяющую разделить схему базы данных на несколько файлов. Эта новая возможность значительно упрощает работу с крупными проектами и улучшает организацию кода. В этой статье мы подробно рассмотрим, как использовать эту функцию, какие преимущества она дает и как правильно структурировать ваши схемы Prisma.
Что такое многофайловая схема Prisma?
Многофайловая схема Prisma - это новая функция, позволяющая разделить вашу схему базы данных на несколько .prisma
файлов. До этого обновления вся схема должна была находиться в одном файле schema.prisma
, что могло создавать трудности при работе с большими и сложными проектами.
Теперь вы можете организовать вашу схему в отдельные файлы, группируя связанные модели и типы вместе. Это делает код более читаемым, упрощает навигацию и уменьшает вероятность конфликтов при работе в команде.
Как включить поддержку многофайловых схем
Чтобы начать использовать эту новую функцию, вам нужно выполнить несколько простых шагов:
1. Обновите prisma
и @prisma/client
до версии 5.15.0 или выше.
2. Обновите расширение Prisma для Visual Studio Code до версии 5.15.0.
3. Включите превью-функцию prismaSchemaFolder
, добавив ее в поле previewFeatures
внутри generator
.
Давайте рассмотрим последний шаг подробнее. В вашем основном файле схемы (обычно это schema.prisma
) добавьте следующую настройку:
generator client {
provider = "prisma-client-js"
previewFeatures = ["prismaSchemaFolder"]
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
В этом примере:
generator client
определяет настройки для генерации клиента Prisma.provider = "prisma-client-js"
указывает, что мы используем JavaScript/TypeScript клиент.previewFeatures = ["prismaSchemaFolder"]
включает новую функцию многофайловых схем.datasource db
определяет источник данных (в данном случае PostgreSQL).url = env("DATABASE_URL")
указывает на переменную окружения с URL базы данных.
Структура многофайловой схемы
После включения функции prismaSchemaFolder
, вы можете организовать вашу схему следующим образом:
1. Создайте подкаталог schema
в вашем каталоге prisma
.
2. Переместите ваш основной файл schema.prisma
в этот подкаталог.
3. Создайте дополнительные .prisma
файлы в каталоге schema
для различных частей вашей схемы.
Например, вы можете создать следующую структуру:
prisma/
├── schema/
│ ├── main.prisma
│ ├── user.prisma
│ └── post.prisma
В этой структуре:
- main.prisma
содержит основные настройки (generator и datasource).
- user.prisma
может содержать модели, связанные с пользователями.
- post.prisma
может содержать модели, связанные с постами или статьями.
Пример использования многофайловой схемы
Давайте рассмотрим пример, как может выглядеть разделение схемы на несколько файлов:
В файле user.prisma
:
// user.prisma
model User {
id Int @id @default(autoincrement())
name String
posts Post[]
}
В этом примере:
model User
определяет структуру таблицы пользователей.id
- это уникальный идентификатор пользователя.
name
- имя пользователя.
posts Post[]
- связь с моделью Post, указывающая, что у пользователя может быть несколько постов.
В файле post.prisma
:
// post.prisma
model Post {
id Int @id @default(autoincrement())
title String
content String
authorId Int
author User @relation(fields: [authorId], references: [id])
}
В этом примере:
model Post
определяет структуру таблицы постов.id
- уникальный идентификатор поста.
title
иcontent
- заголовок и содержание поста соответственно.
authorId
иauthor
определяют связь с модельюUser
.
Обратите внимание, что вы можете использовать модели из других файлов без необходимости их импорта. Prisma автоматически объединяет все файлы при генерации клиента.
Преимущества использования многофайловых схем
Разделение схемы Prisma на несколько файлов предоставляет ряд существенных преимуществ:
- Улучшенная организация: вы можете группировать связанные модели в отдельные файлы, что упрощает навигацию по проекту.
- Облегчение командной работы: уменьшается вероятность конфликтов при одновременной работе нескольких разработчиков над разными частями схемы.
- Повышение читаемости: меньшие по размеру файлы легче читать и понимать, особенно для новых членов команды.
- Упрощение поддержки: изменения в одной части схемы не затрагивают другие части, что упрощает поддержку и развитие проекта.
- Лучшая масштабируемость: по мере роста проекта вы можете легко добавлять новые файлы для новых доменов или функциональностей.
Лучшие практики организации многофайловых схем
При использовании многофайловых схем Prisma рекомендуется придерживаться следующих принципов:
- Организация по доменам: группируйте связанные модели в одном файле. Например, все модели, связанные с пользователями, могут находиться в
user.prisma
, а модели, связанные с заказами - вorder.prisma
. - Четкие соглашения об именовании: используйте понятные и краткие имена для файлов схемы. Например,
user.prisma
,post.prisma
,product.prisma
. - Основной файл схемы: сохраните один "главный" файл схемы (например,
main.prisma
илиschema.prisma
).
Обновление рабочего процесса с Prisma CLI
С введением многофайловых схем, некоторые команды Prisma CLI были обновлены для поддержки этой функциональности:
prisma generate
: эта команда теперь объединяет все файлы схемы перед генерацией клиента.prisma validate
: проверяет правильность всех файлов схемы.prisma format
: форматирует все файлы схемы в каталогеschema
.
Важно отметить, что ваш рабочий процесс в целом остается прежним. Вы по-прежнему используете эти команды так же, как и раньше, просто теперь они работают со всеми файлами в каталоге schema
.
Заключение
Новая возможность организации схемы Prisma в нескольких файлах, представленная в версии 5.15, значительно улучшает работу с крупными проектами. Она позволяет лучше структурировать код, упрощает командную работу и делает схему более понятной и управляемой.
Карта развития разработчика
Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile
25.07.2024
Комментарии
1