برنامه نویسی

تقسیم طرحواره 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 دارای ویژگی ای است که به شما امکان می دهد از چندین پرونده طرحواره استفاده کنید ، اما به طور پیش فرض روشن نیست. ما باید آن را روشن کنیم.

  1. خود را باز کنید schema.prisma پرونده
  2. پیدا کردن generator client قسمت معمولاً اینگونه به نظر می رسد:
generator client {
  provider = "prisma-client-js"
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. یک خط به آن اضافه کنید:
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: یک پوشه جدید برای پرونده های خود بسازید

حال ، بیایید مدل های خود را در پرونده های جداگانه سازماندهی کنیم.

  1. در داخل prisma پوشه ، یک پوشه جدید بنامید schemaبشر
  2. حرکت خود را schema.prisma پرونده به این جدید schema پوشه
  3. برای هر مدل پرونده های جدیدی ایجاد کنید 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 پرونده برای این

  1. خود را باز کنید package.json پرونده
  2. این قسمت را به آن اضافه کنید:
"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 بیش از حد

  1. پیدا کردن "scripts" بخش در package.jsonبشر
  2. اضافه کردن -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 در چندین پرونده ، پروژه شما را مرتب نگه می دارد. هر مدل پرونده خاص خود را دارد ، بنابراین یافتن و رفع چیزها آسان است. امیدوارم این راهنما برای شما ساده و واضح باشد. آن را در پروژه خود امتحان کنید ، و به من اطلاع دهید که چگونه در نظرات زیر می رود!

برنامه نویسی مبارک ، دوستان! 🚀

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا