Prisma ORM Soft Delete ve Flag Kullanımı


Prisma ORM Soft Delete ve Flag Kullanımı

Prisma ORM, modern Node.js projelerinde veri yönetimi ve modelleme konusunda popüler bir tercih haline gelmiştir. Özellikle veritabanında kayıtların silinmesi işlemleri söz konusu olduğunda "soft delete" ve "flag" kullanımı, veri bütünlüğünü korumak için kritik öneme sahiptir. Bu teknik, kaydı tamamen silmeden, onun silinmiş olarak işaretlenmesini ve gerektiğinde geri getirilmesini sağlar. Bu makalede Prisma ORM kullanarak soft delete mimarisi ve flag mantığının nasıl kurgulanacağını örneklerle ele alacağız.

Soft Delete ve Flag Kavramı Nedir?

Soft delete, bir veritabanı kaydını fiziksel olarak silmeden, belirli bir sütun (genellikle deletedAt veya isDeleted) üzerinden "silindi" olarak işaretlemek anlamına gelir. Flag kullanımı ise veri üzerinde belirli bir durumu (örneğin aktif/pasif, silindi/silinmedi) belirtmek için özel alanlar eklemek anlamına gelir. Bu yöntemler sayesinde uygulamanızdaki kayıtları istemeden kaybetme riskini azaltır, ayrıca denetim ve geri yükleme işlemlerini kolaylaştırırsınız.

Prisma ORM ile Soft Delete Nasıl Uygulanır?

Prisma ORM ile soft delete uygulamak için modelinizde "flag" olarak kullanılacak ekstra bir alan tanımlamanız gerekir. Aşağıda örnek bir kullanıcı modeli görebilirsiniz:

model User {
  id         Int      @id @default(autoincrement())
  email      String   @unique
  name       String?
  deletedAt  DateTime?
  // Alternatif olarak: isDeleted Boolean @default(false)
  createdAt  DateTime @default(now())
  updatedAt  DateTime @updatedAt
}

Burada deletedAt alanı null ise kullanıcı aktif, bir değer taşıyorsa soft deleted (yani silinmiş) kabul edilir.

Silinme İşlemi ve Güncelleme

Aşağıdaki örnekte bir kullanıcının soft delete ile silinmesi gösterilmiştir:

// User'ı soft delete ile sil
await prisma.user.update({
  where: { id: 1 },
  data: { deletedAt: new Date() }
});

Burada, doğrudan delete yerine update kullandık ve deletedAt kısmına tarih atadık. Böylece veri halen veritabanında saklanmaya devam eder.

Flag ile Kayıtları Filtreleme

Aktif kullanıcıları çekerken soft deleted olanları hariç tutmak için şöyle bir sorgu yazılır:

// Silinmemiş kullanıcıları getir
const users = await prisma.user.findMany({
  where: {
    deletedAt: null
  }
});

Alternatif olarak isDeleted: false şeklinde Boolean flag ile de filtreleme yapılabilir.

Sonuç: Neden Soft Delete Kullanmalısınız?

Prisma ORM Soft Delete ve Flag Kullanımı, veri kayıplarının önüne geçmek, geri dönüş ve denetim imkanı sağlamak açısından son derece faydalıdır. Özellikle kurumsal projelerde yasal sorumluluklar ve kullanıcı deneyimi için önemli bir avantaj sunar. Etkin bir soft delete stratejisiyle yazılımınız daha güvenli, esnek ve sürdürülebilir hale gelir.