software•

Prisma v8.0.0-rc.20 Yayınlandı: Derinlemesine Mimari İnceleme

Prisma v8.0.0-rc.20 sürüm analizini keşfedin: CLI motoru yükseltmeleri, PSL tür diğer adı (alias) eşleme iyileştirmeleri, SQL ekleme (insert) doğrulaması ve geçiş yolları.

OP
OPA Release DeskWIRE
•6 min read
Prisma v8.0.0-rc.20 Yayınlandı: Derinlemesine Mimari İnceleme

⚠️ 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.

Yönetici Özeti ve Mimari Önem

Prisma v8.0.0-rc.20, CLI motoru, Prisma Şema Dili (PSL) ve ilişkisel migrasyon alt sistemlerinde kritik mimari iyileştirmeler sunarak Prisma ORM araç zinciri için önemli bir evrimsel mil taşını temsil eder. Bu sürümün merkezinde, insan tarafından okunabilir terminal çıktısını makine tarafından ayrıştırılabilir JSON akışlarından kökten ayıran @prisma/cli-engine 0.9.0'ın benimsenmesi yer alır. İnsan günlüklerini (logs) kesin olarak stderr'e yönlendirerek ve --json bayrağı ile açıkça geçersiz kılınmadıkça stdout'u temiz, sekme ayrımıyla ayrılmış veri satırları için ayırarak bu sürüm, otomatik CI boru hatları (pipelines), kabuk (shell) betikleri ve programatik ajanlar için daha öngörülebilir ve sağlam bir sözleşme uygular.

Komut satırı ergonomisinin ötesinde bu sürüm; sözleşme kalıcılığı, tür çözünürlüğü ve tür güvenliği yaptırımı ile ilgili derin yapısal endişeleri ele alır. Tür diğer adlarının (aliases) temsilini doğrudan sözleşme ve SQL oluşturucuları içindeki sütun tanımlarına kaydırarak Prisma, depolama hash'lerinin ve şema sözleşmelerinin alttaki veritabanı yapılarıyla mutlak bir uyum sağlamasını garanti eder. Bu sistemik ayarlamalar, potansiyel sözleşme uyumsuzluklarını ve eksik sütun ihmallerini doğrudan derleme zamanı tür hatalarına iterek gizli çalışma zamanı (runtime) hatalarını ortadan kaldırır. Sonuç olarak; otomatik şema oluşturmaya, karmaşık migrasyon boru hatlarına ve çoklu veritabanı uzantılarına güvenen kurumsal mimariler, artırılmış belirleyici garantilerden yararlanır.

Temel Geliştirmeler ve Geliştirici Ergonomisi

Şema modelleme ve SQL oluşturma güvenliğindeki iyileştirmeler sayesinde geliştirici ergonomisi büyük bir ivme kazanır. PSL'de, tür diğer adları artık @default, @onCreate ve @onUpdate kancalarını sorunsuz bir şekilde yönetebilir ve özelleştirilmiş sütun özelliklerinin nasıl bildirileceğini kolaylaştırır. Depolama katmanlarında ara diğer ad işaretçilerini korumak yerine sözleşme mimarisi artık alttaki codec parametrelerini doğrudan serileştirir. Bu, hantal types sözlüklerini ve field.namedType(...) kalıp kodlarını, field.column(...) kullanarak doğrudan sabit atamalarıyla değiştirerek TypeScript şema oluşturucu sözdizimini basitleştirir.

Veritabanı işlemleri cephesinde, SQL sorgu oluşturucu katı derleme zamanı güvenlik kontrolleriyle güçlendirilmiştir. Özellikle, db.sql.<namespace>.<table>.insert(rows) çağrısı artık varsayılan değeri olmayan her boş bırakılamaz (non-nullable) sütunun açıkça doldurulduğunu titizlikle doğrular. Önceden, böyle zorunlu bir niteliğin ihmal edilmesi yalnızca derlemede başarılı olur ancak veritabanı sürücüsüne çarpıldığında öngörülemez şekilde başarısız olurdu. Bu ihmalleri statik tür denetimi sırasında yakalayarak ve kesin sütun adlarını ortaya çıkararak Prisma, hata ayıklama döngülerini büyük ölçüde azaltır. Benzer bir katılık artık MongoDB enum üyeleri ve ayırt edicileri (discriminators) için de geçerlidir ve değerlerin belirsiz tür zorlamaları olmaksızın kendi temel yerel veri codec'lerine katı bir şekilde uymasını sağlar.

Mimari Karşılaştırma Matrisi

Mimari Boyut Önceki Temel Çizgi (v8.0.0-rc.19) Prisma v8.0.0-rc.20 Mimari Etki
CLI Motoru Çıktısı Bağlama bağlı olarak stdout akışlarıyla karışık otomatik JSON Katı ayrım: stdout üzerinde düz sekme ayrılmış veri, stderr üzerinde insan günlükleri CI/CD boru hatlarında ve programatik kabuk betiklerinde ayrıştırma hatalarını ortadan kaldırır
Sözleşme Türü Çözünürlüğü storage.types ve typeRef referansları aracılığıyla saklanan diğer adlar Sütun başına codec parametrelerinin ve türlerin doğrudan serileştirilmesi Sözleşme hash uyumsuzluklarını ortadan kaldırır ve depolanan şema tanımlarını basitleştirir
SQL Ekleme Doğrulaması Ertelenmiş veritabanı düzeyi kısıtlama ihlalleri Zorunlu, boş bırakılamaz sütunları zorunlu kılan derleme zamanı kontrolleri Eksik yükleri çalışma zamanı yürütmesi yerine derleme zamanında yakalar
Migrasyon Tanıları Şema denetimi sırasında genel hata bildirimleri Hataya neden olan hedef veritabanı nesnesini açıkça adlandırır Karmaşık çoklu ad alanı işlemleri sırasında sorun gidermeyi hızlandırır

Breaking Changes (Uyumsuz Değişiklikler) ve Migrasyon Uyarıları

Prisma v8.0.0-rc.20, hem uygulamalar hem de uzantılar için kasıtlı migrasyon iş akışları gerektiren birkaç uyumsuz değişiklik sunar. İlk olarak, @prisma/cli-engine 0.9.0'a yapılan bağımlılık kayması, prisma migration status gibi komutlardan gelen örtük JSON çıktısına güvenen herhangi bir betiğin --json bayrağını açıkça içerecek şekilde güncellenmesi gerektiği anlamına gelir. İkinci olarak, eski tür diğer adı referanslarını kullanan saklanan sözleşmeler, değiştirilen depolama hash'leri nedeniyle yüklenemeyecektir. Geliştiriciler, sözleşmeleri yeniden yayımlamadan ve prisma db sign aracılığıyla veritabanlarını imzalamadan önce depolanan sözleşmeleri ve migrasyon anlık görüntülerini yeniden yazmak için otomatik yükseltme betikleri çalıştırmalıdır.

Ek olarak, katı doğrulama kuralları artık SQL eklemelerini ve MongoDB şema tanımlarını yönetmektedir. Varsayılanları olmayan boş bırakılamaz sütunların ihmal edilmesi derleme hatalarına neden olur ve tamsayı türleri için kesirli değerler kullanan veya tırnak içine alınmamış metin alanları içeren eski MongoDB enum sözdizimi, açık hata kodlarıyla (PSL_VALUE_TYPE_INCOMPATIBLE veya PSL_VALUE_REFUSED) reddedilecektir.

Adım Adım Yükseltme Kılavuzu

  1. CLI Bağımlılıklarını ve Betikleri Güncelleyin: Projenizin CLI motoru bağımlılıklarını 0.9.0 sürümüne yükseltin ve yapılandırılmış çıktıyı okuyan tüm programatik komutlara --json ekleyin.
# JSON çıktısı bekleyen CI betiklerini güncelleyin
prisma migration status --json | jq '.envelope.result'
  1. Sözleşmeleri Yeniden Yazın ve Veritabanlarını Yeniden İmzalayın: Saklanan sözleşmelerinizden ve migrasyon anlık görüntülerinizden eski tür diğer adı referanslarını temizlemek için resmi uygulama veya uzantı yükseltme betiğini çalıştırın, ardından yeniden yayımlayın ve imzalayın.
# Sözleşme yayımını ve veritabanı imzalama işlemini yürütün
prisma contract emit
prisma db sign --all
  1. TypeScript Şema Oluşturucularını Yeniden Düzenleyin: Eski types sözlük nesnelerini ve field.namedType sarmalayıcılarını doğrudan sütun sabit bildirimleriyle değiştirin.
// Yükseltmeden sonra: sütunları doğrudan tanımlayın
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