Auditing (Created At, Updated At, Deleted At)

Soft Deletes এবং Auditing - টাইপওআরএম (TypeORM) - Web Development

276

Soft Deletes কি?

Soft Delete একটি কৌশল যেখানে ডেটা ডিলিট করা হয় না, বরং ডেটাবেসে তার অবস্থান বা স্টেট পরিবর্তন করা হয়, যেন তা পরে পুনরুদ্ধারযোগ্য হয়। এটি এমন সময় ব্যবহৃত হয় যখন আপনি ডেটা হারানোর ঝুঁকি এড়াতে চান, কিন্তু আপনি আর সেই ডেটা ব্যবহার করতে চান না। সাধারণত, একটি deletedAt বা isDeleted কলাম ব্যবহার করে Soft Delete পরিচালিত হয়, যেখানে deletedAt কলামটি ডেটার ডিলিট হওয়া সময়ের স্ট্যাম্প হিসেবে কাজ করে বা isDeleted কলামটি true হয়ে থাকে।

TypeORM-এ Soft Delete একটি জনপ্রিয় ফিচার এবং এটি ব্যবহার করা খুবই সহজ। এটি আপনাকে ডেটা ডিলিট করার পরেও সেই ডেটাকে পুনরুদ্ধার করতে এবং প্রয়োজন হলে ফিরে পেতে সাহায্য করে। Soft Delete ব্যবহার করার জন্য TypeORM @DeleteDateColumn() এবং softDelete() মেথড ব্যবহার করে।


TypeORM-এ Soft Delete ব্যবহারের উপায়

TypeORM-এ Soft Delete কার্যকর করার জন্য আপনাকে কিছু সহজ ধাপ অনুসরণ করতে হবে।

১. @DeleteDateColumn() ডেকোরেটর ব্যবহার করা

TypeORM-এ Soft Delete কার্যকর করার জন্য আপনাকে প্রথমে Entity ক্লাসে একটি @DeleteDateColumn() ডেকোরেটর যোগ করতে হবে। এটি deletedAt নামক একটি কলাম তৈরি করবে, যা ডেটা ডিলিট হওয়ার সময়ের স্ট্যাম্প সংরক্ষণ করবে।

উদাহরণ:

ধরা যাক, আমাদের একটি User Entity রয়েছে এবং আমরা Soft Delete ফিচার যুক্ত করতে চাই।

import { Entity, PrimaryGeneratedColumn, Column, DeleteDateColumn } from "typeorm";

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;

  @DeleteDateColumn()
  deletedAt: Date | null;
}

এখানে, @DeleteDateColumn() ডেকোরেটর ব্যবহার করা হয়েছে, যা deletedAt নামক একটি কলাম তৈরি করবে। যখন একটি User ডিলিট হবে, তখন deletedAt কলামে ডিলিট হওয়ার সময়ের স্ট্যাম্প সংরক্ষিত হবে এবং এটি ডেটাবেসে বাস্তবিকভাবে মুছে যাবে না।


২. Soft Delete করার পদ্ধতি

TypeORM-এ Soft Delete করার জন্য softDelete() মেথড ব্যবহার করা হয়। এটি ডেটাকে সরাসরি মুছে না ফেলে, deletedAt কলামে বর্তমান সময়ের স্ট্যাম্প যোগ করে।

উদাহরণ:

import { createConnection, getRepository } from "typeorm";
import { User } from "./entity/User";

createConnection().then(async connection => {
  const userRepository = getRepository(User);

  // একটি User তৈরি করা
  const user = new User();
  user.name = "John Doe";
  user.email = "john.doe@example.com";
  await userRepository.save(user);

  console.log("User created:", user);

  // User কে Soft Delete করা
  await userRepository.softDelete(user.id);

  console.log("User soft deleted");
}).catch(error => console.log(error));

এখানে, softDelete() মেথড ব্যবহার করা হয়েছে, যা User কে ডিলিট না করে deletedAt কলামে ডিলিট হওয়ার সময় স্ট্যাম্প সংরক্ষণ করবে। এই ফিচারটি মূলত অ্যাপ্লিকেশন ব্যবহারকারীকে ডেটা হারানোর ঝুঁকি থেকে বাঁচায়।


৩. Soft Delete করা ডেটা ফেরত পাওয়া

যেহেতু ডেটা সরাসরি মুছে ফেলা হয় না, আপনি Soft Deleted ডেটা পুনরুদ্ধার করতে পারেন। TypeORM-এ withDeleted() মেথড ব্যবহার করে আপনি Soft Deleted ডেটাও ফিরে পেতে পারেন।

উদাহরণ:

createConnection().then(async connection => {
  const userRepository = getRepository(User);

  // Soft Deleted ডেটা ফিরে পাওয়া
  const deletedUser = await userRepository.findOne({ where: { id: 1 }, withDeleted: true });
  console.log("Deleted User:", deletedUser);
}).catch(error => console.log(error));

এখানে, withDeleted: true ব্যবহার করে আপনি Soft Deleted ডেটা খুঁজে পেতে পারেন। এটি আপনাকে ডেটাবেসে মুছে যাওয়া বা ডিলিট হওয়া ডেটার উপর কাজ করতে সহায়তা করে।


৪. Soft Deleted ডেটা পার্মানেন্টলি মুছে ফেলা

যদি আপনি চান যে, Soft Deleted ডেটা একেবারে ডিলিট হয়ে যাক, তাহলে remove() মেথড ব্যবহার করতে পারেন। এটি সরাসরি ডেটাবেস থেকে ডেটাকে মুছে ফেলবে।

উদাহরণ:

createConnection().then(async connection => {
  const userRepository = getRepository(User);

  // User কে পার্মানেন্টলি ডিলিট করা
  await userRepository.remove(user);
  console.log("User permanently deleted");
}).catch(error => console.log(error));

এখানে, remove() মেথড ব্যবহার করা হয়েছে যা Soft Deleted ডেটাকে ডেটাবেস থেকে পুরোপুরি মুছে ফেলবে।


Soft Delete এর সুবিধা

  1. ডেটা হারানো রোধ: Soft Delete ডেটাকে ডিলিট না করে, পরে পুনরুদ্ধার করার সুযোগ দেয়।
  2. ডেটার ইতিহাস রাখা: আপনি ডেটা কখন ডিলিট হয়েছিল তা দেখতে পারেন, কারণ deletedAt কলামটি ডিলিট হওয়া সময়ের স্ট্যাম্প সংরক্ষণ করে।
  3. ডেটা পুনরুদ্ধার: ডিলিট করা ডেটা সহজে ফিরে পাওয়া যায়।
  4. ডেটা অডিটিং: অনেক সময় সফট ডিলিট ব্যবহৃত হয় ডেটার পরিবর্তন ট্র্যাক করতে, যেমন রেকর্ডের জীবনের প্রতিটি স্টেজ ধারণ করা।

সারাংশ

Soft Delete হল একটি শক্তিশালী কৌশল যা ডেটাকে সরাসরি মুছে না ফেলে, তাকে ডেটাবেসে রেখে তার অবস্থান পরিবর্তন করে রাখে। TypeORM-এ Soft Delete করার জন্য @DeleteDateColumn() এবং softDelete() মেথড ব্যবহৃত হয়। এতে deletedAt কলাম ব্যবহার করে ডেটার ডিলিট হওয়া সময়ের স্ট্যাম্প সংরক্ষণ করা হয়। আপনি যদি কখনও ডেটা ফিরে পেতে চান, তবে withDeleted() মেথড ব্যবহার করতে পারেন। এই ফিচারটি ডেটার ইতিহাস ট্র্যাক করা, পুনরুদ্ধার করা এবং সুরক্ষিতভাবে ডেটা পরিচালনা করার জন্য খুবই কার্যকর।

Content added By
Promotion

Are you sure to start over?

Loading...