software•

نسخه Prisma v8.0.0-rc.20 منتشر شد: بررسی عمیق معماری

تحلیل انتشار Prisma v8.0.0-rc.20: ارتقاهای موتور CLI، بهبودهای نگاشت نام مستعار نوع PSL، اعتبارسنجی درج SQL و مسیرهای مهاجرت.

OP
OPA Release DeskWIRE
•5 min read
نسخه Prisma v8.0.0-rc.20 منتشر شد: بررسی عمیق معماری

⚠️ Breaking Changes & Migration Caveats

Piped ORM commands require explicit --json flags, stored contracts with legacy type alias references must be rewritten and re-signed, and SQL inserts now throw compile-time type errors for missing required columns.

نمای کلی اجرایی و اهمیت معماری

نسخه Prisma v8.0.0-rc.20 یک نقطه عطف تکاملی مهم برای زنجیره ابزار Prisma ORM است که بهبودهای حیاتی معماری را در موتور CLI، زبان طرح‌واره پریزما (PSL) و زیرسیستم‌های مهاجرت رابطه‌ای معرفی می‌کند. در قلب این انتشار، پذیرش نسخه 0.9.0 از @prisma/cli-engine قرار دارد که خروجی ترمینال قابل خواندن برای انسان را به طور اساسی از جریان‌های JSON قابل تجزیه ماشینی جدا می‌کند. با هدایت دقیق گزارش‌های انسانی به stderr و رزرو کردن stdout برای خطوط داده‌های تمیز و جدا شده با تب (مگر اینکه به صراحت از طریق پرچم --json لغو شود)، این نسخه یک قرارداد قابل پیش‌بینی‌تر و قوی‌تر را برای خطوط لوله خودکار CI، اسکریپت‌های پوسته و عوامل برنامه‌نویسی اعمال می‌کند.

فراتر از ارگونومی خط فرمان، این انتشار به نگرانی‌های ساختاری عمیق در رابطه با پایداری قرارداد، تفکیک نوع و اجرای ایمنی نوع می‌پردازد. با جابجایی نمایش نام‌های مستعار نوع به طور مستقیم در تعاریف ستون‌ها در قرارداد و سازندگان SQL، پریزما تضمین می‌کند که هَش‌های ذخیره‌سازی و قراردادهای طرح‌واره، وفاداری مطلق را با ساختارهای پایگاه داده زیرین حفظ کنند. این تنظیمات سیستماتیک، خرابی‌های پنهان زمان اجرا را با انتقال عدم تطابق‌های احتمالی قرارداد و حذف ستون‌های گمشده به طور مستقیم به خطاهای نوع زمان کامپایل، از بین می‌برند. در نتیجه، معماری‌های سازمانی که به تولید طرح‌واره خودکار، خطوط لوله مهاجرت پیچیده و افزونه‌های چند پایگاه داده متکی هستند، از تضمین‌های قطعی افزایش‌یافته بهره‌مند می‌شوند.

بهبودهای هسته و ارگونومی توسعه‌دهنده

ارگونومی توسعه‌دهنده از طریق بهبودهای در مدل‌سازی طرح‌واره و ایمنی تولید SQL، تقویت بزرگی دریافت می‌کند. در PSL، نام‌های مستعار نوع اکنون می‌توانند به طور یکپارچه هوک‌های @default، @onCreate و @onUpdate را مدیریت کنند و نحوه اعلام خصوصیات ستون‌های تخصصی را ساده‌تر سازند. به جای حفظ اشاره‌گرهای نام مستعار میانی در لایه‌های ذخیره‌سازی، معماری قرارداد اکنون پارامترهای کدک زیرین را مستقیماً سریال‌سازی می‌کند. این امر نحو سازنده طرح‌واره TypeScript را ساده کرده و لغت‌نامه‌های دست‌وپا گیر types و کدهای اضافی field.namedType(...) را با انتساب‌های ثابت مستقیم با استفاده از field.column(...) جایگزین می‌کند.

در بخش عملیات پایگاه داده، سازنده پرس‌وجو SQL با بررسی‌های ایمنی سخت‌گیرانه زمان کامپایل تقویت شده است. به طور مشخص، فراخوانی db.sql.<namespace>.<table>.insert(rows) اکنون به شدت اعتبارسنجی می‌کند که هر ستون غیرقابل تهی که فاقد مقدار پیش‌فرض است، به صراحت پر شود. پیش از این، حذف چنین ویژگی مۆثری با موفقیت کامپایل می‌شد تا تنها هنگام برخورد با درایور پایگاه داده به طور غیرقابل پیش‌بینی با شکست مواجه شود. با کشف این موارد حذف‌شده در طول بررسی نوع ایستا و ارائه نام دقیق ستون‌ها، پریزما چرخه‌های اشکال‌زدایی را به شدت کاهش می‌دهد. سخت‌گیری مشابهی اکنون برای اعضای شمارش (enum) و متمایزکننده‌های MongoDB اعمال می‌شود و تضمین می‌کند که مقادیر بدون تبدیل‌های نوع مبهم، به شدت از کدک‌های داده بومی زیرین خود پیروی می‌کنند.

ماتریس مقایسه معماری

بعد معماری مبنای قبلی (v8.0.0-rc.19) Prisma v8.0.0-rc.20 تأثیر معماری
خروجی موتور CLI JSON خودکار مخلوط با جریان‌های stdout بسته به زمینه جداسازی دقیق: داده‌های ساده جدا شده با تب روی stdout، گزارش‌های انسانی روی stderr خطاهای تجزیه را در خطوط لوله CI/CD و اسکریپت‌های پوسته برنامه‌نویسی از بین می‌برد
تفکیک نوع قرارداد نام‌های مستعار ذخیره‌شده از طریق ارجاعات storage.types و typeRef سریال‌سازی مستقیم پارامترهای کدک و انواع در هر ستون عدم تطابق هَش قرارداد را از بین می‌برد و تعاریف طرح‌واره ذخیره‌شده را ساده می‌کند
اعتبارسنجی درج SQL نقض‌های محدودیت در سطح پایگاه داده معوق بررسی‌های زمان کامپایل که ستون‌های غیرقابل تهی مورد نیاز را اعمال می‌کنند بارهای مفقود را در زمان ساخت به جای اجرای زمان اجرا شناسایی می‌کند
تشخیص‌های مهاجرت اطلاعیه‌های خرابی عمومی در طول بازرسی طرح‌واره به صراحت شیء پایگاه داده هدف را که باعث خرابی شده است نام می‌برد عیب‌یابی را در طول عملیات پیچیده چند فضانامی سرعت می‌بخشد

تغییرات اساسی و هشدارهای مهاجرت

نسخه Prisma v8.0.0-rc.20 چندین تغییر اساسی را معرفی می‌کند که مستلزم جریان‌های کاری مهاجرت عمدی برای برنامه‌ها و افزونه‌ها است. اولاً، تغییر وابستگی به @prisma/cli-engine 0.9.0 به این معنی است که هر اسکریپتی که به خروجی JSON ضمنی از دستوراتی مانند prisma migration status متکی است، باید به‌روزرسانی شود تا به صراحت پرچم --json را شامل شود. ثانیاً، قراردادهای ذخیره‌شده با استفاده از ارجاعات نام مستعار نوع قدیمی به دلیل هَش‌های ذخیره‌سازی تغییر یافته بارگذاری نخواهند شد. توسعه‌دهندگان باید اسکریپت‌های ارتقاء خودکار را برای بازنویسی قراردادهای ذخیره‌شده و اسنپ‌شات‌های مهاجرت قبل از انتشار مجدد قراردادها و امضای پایگاه‌های داده از طریق prisma db sign اجرا کنند.

علاوه بر این، قوانین اعتبارسنجی سخت‌گیرانه اکنون درج‌های SQL و تعاریف طرح‌واره MongoDB را اداره می‌کنند. حذف ستون‌های غیرقابل تهی بدون مقادیر پیش‌فرض منجر به خطاهای کامپایل می‌شود و نحو شمارش قدیمی MongoDB که از مقادیر کسری برای انواع عدد صحیح یا فیلدهای متنی بدون نقل‌قول استفاده می‌کند، با کدهای خطای صریح (PSL_VALUE_TYPE_INCOMPATIBLE یا PSL_VALUE_REFUSED) رد خواهد شد.

راهنمای ارتقاء گام به گام

  1. به‌روزرسانی وابستگی‌ها و اسکریپت‌های CLI: وابستگی‌های موتور CLI پروژه خود را به نسخه 0.9.0 ارتقا دهید و --json را به تمام دستورات برنامه‌نویسی که خروجی ساختاریافته را می‌خوانند، اضافه کنید.
# به‌روزرسانی اسکریپت‌های CI که انتظار خروجی JSON را دارند
prisma migration status --json | jq '.envelope.result'
  1. بازنویسی قراردادها و امضای مجدد پایگاه‌های داده: اسکریپت ارتقاء رسمی برنامه یا افزونه را برای پاکسازی ارجاعات نام مستعار نوع منسوخ از قراردادهای ذخیره‌شده و اسنپ‌شات‌های مهاجرت اجرا کنید، سپس مجدداً منتشر و امضا کنید.
# اجرای انتشار قرارداد و امضای پایگاه داده
prisma contract emit
prisma db sign --all
  1. بازسازی سازندگان طرح‌واره TypeScript: اشیاء لغت‌نامه types قدیمی و پوشش‌های field.namedType را با اعلان‌های ثابت ستون مستقیم جایگزین کنید.
// پس از ارتقاء: تعریف مستقیم ستون‌ها
const Embedding1536 = field.column(type.pgvector.Vector(1536));
const Post = model('Post', {
  fields: { embedding: Embedding1536.optional() },
});
export default { models: { Post } };
#Prisma#v8.0.0-rc.20#software#Release#Changelog
E-E-A-T VerifiedRelease Intelligence & Editorial Methodology

OPA Release analyzes upstream repository commits, official changelogs, and runtime telemetry assisted by automated synthesis pipelines and verified under our Editorial Standards. Review our Affiliate Disclosure and Software Disclaimer before deploying changes to production environments.

OPA NETWORK EXPLORER

Deep Dive Across the Ecosystem

نسخه Prisma v8.0.0-rc.20 منتشر شد: بررسی عمیق معماری