تقسیم طرحواره Prisma به چندین پرونده: یک راهنمای ساده

سلام رفیق! امروز ، من می خواهم راه حلی را که برای یک مشکل مشترک با PRISMA پیدا کردم به اشتراک بگذارم. به طور پیش فرض ، Prisma فقط از یک پرونده به نام استفاده می کند schema.prisma
برای ذخیره تمام مدلهای پایگاه داده خود. با رشد پروژه شما می تواند کثیف شود. فهمیدم که چگونه آن را به چندین پرونده تقسیم کنم ، و به شما نشان خواهم داد که چگونه این کار را به مرحله به مرحله انجام دهید.
مشکل چیست؟
وقتی شروع به استفاده از Prisma می کنید ، پوشه شما به این شکل است:
prisma
┗ schema.prisma
همه چیز – مدل ها ، تنظیمات ، همه آن – در آن یکی است schema.prisma
پرونده برای پروژه های کوچک ، اشکالی ندارد. اما وقتی مدل های بیشتری مانند کاربران ، آدرس ها یا تست ها اضافه می کنید ، به یک پرونده بزرگ و گیج کننده تبدیل می شود. من می خواستم آن را تقسیم کنم:
prisma
┗ 📂 schema
┣ 📜 user.prisma
┣ 📜 address.prisma
┣ 📜 schema.prisma
┗ 📜 test.prisma
به این ترتیب ، هر مدل پرونده خاص خود را دریافت می کند و پروژه تمیز و آسان می ماند. در اینجا نحوه انجام این کار آورده شده است.
آنچه شما قبل از شروع به آن نیاز دارید
- PRISMA نصب شده است: شما باید قبلاً PRISMA را در پروژه خود تنظیم کنید. اگر اینطور نیست ، راهنمای رسمی Prisma را برای نصب آن بررسی کنید.
-
دانش اساسی Prisma: باید بدانید چه چیزی
schema.prisma
آیا مانند نحوه تعریف مدل های پایگاه داده شما.
راهنمای گام به گام
مرحله 1: ویژگی خاص را روشن کنید
Prisma دارای ویژگی ای است که به شما امکان می دهد از چندین پرونده طرحواره استفاده کنید ، اما به طور پیش فرض روشن نیست. ما باید آن را روشن کنیم.
- خود را باز کنید
schema.prisma
پرونده - پیدا کردن
generator client
قسمت معمولاً اینگونه به نظر می رسد:
generator client {
provider = "prisma-client-js"
}
- یک خط به آن اضافه کنید:
generator client {
provider = "prisma-client-js"
previewFeatures = ["prismaSchemaFolder"]
}
در previewFeatures = ["prismaSchemaFolder"]
Line به Prisma می گوید ، “سلام ، بگذارید از چندین پرونده استفاده کنم!” این چیزی است که من کامل است schema.prisma
پس از این به نظر می رسد:
generator client {
provider = "prisma-client-js"
previewFeatures = ["prismaSchemaFolder"]
}
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}
یادداشت: این ویژگی در “پیش نمایش” است ، بنابراین ممکن است بعداً تغییر کند. برای به روزرسانی به اسناد Prisma توجه داشته باشید.
مرحله 2: یک پوشه جدید برای پرونده های خود بسازید
حال ، بیایید مدل های خود را در پرونده های جداگانه سازماندهی کنیم.
- در داخل
prisma
پوشه ، یک پوشه جدید بنامیدschema
بشر - حرکت خود را
schema.prisma
پرونده به این جدیدschema
پوشه - برای هر مدل پرونده های جدیدی ایجاد کنید
user.prisma
باaddress.prisma
، یاtest.prisma
– در کنارschema
پوشه
پس از این ، پوشه شما باید شبیه باشد:
prisma
┗ 📂 schema
┣ 📜 user.prisma
┣ 📜 address.prisma
┣ 📜 schema.prisma
┗ 📜 test.prisma
در schema.prisma
پرونده هنوز هم generator
وت datasource
قطعات ، در حالی که سایر پرونده ها می توانند مدل های شما را نگه دارند (مانند user
یا address
).
مرحله 3: به Prisma بگویید که پرونده های شما کجا هستند
PRISMA باید بداند که پرونده های طرحواره خود را از کجا قرار داده اید. ما package.json
پرونده برای این
- خود را باز کنید
package.json
پرونده - این قسمت را به آن اضافه کنید:
"prisma": {
"schema": "./prisma/schema/"
}
این چیزی است که من است package.json
به نظر می رسد پس از اضافه کردن آن:
{
"name": "@repo/database",
"version": "0.0.1",
"dependencies": {
"@prisma/client": "5.15.0"
},
"devDependencies": {
"prisma": "5.15.0"
},
"prisma": {
"schema": "./prisma/schema/"
}
}
این خط می گوید ، “Prisma ، نگاه کنید ./prisma/schema/
برای پرونده های من. “مسیر را دو بار بررسی کنید تا مطمئن شوید که با تنظیم پوشه شما مطابقت دارد.
مرحله 4: اسکریپت های خود را به روز کنید
آخرین مرحله به روزرسانی دستوراتی است که برای Prisma اجرا می کنید ، بنابراین آنها می دانند که پرونده های شما کجاست. ما این کار را در package.json
بیش از حد
- پیدا کردن
"scripts"
بخش درpackage.json
بشر - اضافه کردن
-schema=./prisma/schema/
پرچم به هر دستور prisma. در اینجا مثالی برای MongoDB آورده شده است:
"scripts": {
"db:generate": "prisma generate -schema=./prisma/schema/",
"db:push": "prisma db push -schema=./prisma/schema/",
"db:pull": "prisma db pull -schema=./prisma/schema/",
"db:studio": "prisma studio -schema=./prisma/schema/"
}
کامل من package.json
اکنون به این شکل است:
{
"name": "@repo/database",
"version": "0.0.1",
"private": true,
"scripts": {
"db:generate": "prisma generate -schema=./prisma/schema/",
"db:push": "prisma db push -schema=./prisma/schema/",
"db:pull": "prisma db pull -schema=./prisma/schema/",
"db:studio": "prisma studio -schema=./prisma/schema/"
},
"dependencies": {
"@prisma/client": "5.15.0"
},
"devDependencies": {
"prisma": "5.15.0"
},
"prisma": {
"schema": "./prisma/schema/"
}
}
یادداشت: من از MongoDB استفاده می کنم ، بنابراین دستورات من متناسب با آن است. اگر از یک پایگاه داده متفاوت (مانند PostgreSQL یا MySQL) استفاده می کنید ، تغییر دهید db:*
دستورات مطابق با تنظیمات شما. فقط نگه داشتن -schema
قسمت همان.
بررسی کنید که آیا کار می کند
برای اطمینان از همه چیز خوب ، یک دستور مانند:
npx prisma generate
یا اگر از PNPM استفاده می کنید:
pnpm run db:generate
اگر بدون خطا اجرا شود ، همه شما تنظیم شده اید! PRISMA اکنون از پرونده های تقسیم شده شما استفاده می کند.
چرا این عالی است
تقسیم طرحواره Prisma در چندین پرونده ، پروژه شما را مرتب نگه می دارد. هر مدل پرونده خاص خود را دارد ، بنابراین یافتن و رفع چیزها آسان است. امیدوارم این راهنما برای شما ساده و واضح باشد. آن را در پروژه خود امتحان کنید ، و به من اطلاع دهید که چگونه در نظرات زیر می رود!
برنامه نویسی مبارک ، دوستان! 🚀