Sequalize 에서 Paranoid Models 은 데이터를 실제로 삭제하는 대신 "소프트 삭제(soft delete)"를 사용하는 접근 방식을 의미합니다.
소프트 삭제(Soft Delete):
데이터를 물리적으로 삭제하지 않고, 삭제된 것처럼 표시만 합니다.
이를 위해 deleted_at 같은 타임스탬프 필드를 추가하여 삭제된 시점을 기록합니다.
이 필드가 NULL이 아닌 값을 가지면, 해당 데이터는 삭제된 것으로 간주합니다.
데이터 복구:
실제 데이터가 삭제되지 않기 때문에, 실수로 삭제한 데이터를 쉽게 복구할 수 있습니다.
deleted_at 필드를 NULL로 업데이트하면 데이터를 다시 활성화할 수 있습니다.
데이터 무결성 유지:
데이터 무결성을 유지하며, 참조 무결성(constraints)을 적용하는데 유리합니다.
데이터가 실제로 삭제되지 않기 때문에, 다른 테이블과의 관계를 유지할 수 있습니다.
@DeletedAt
데코레이션을 사용합니다.
import { InferCreationAttributes, InferAttributes, Model } from '@sequelize/core';
import { DeletedAt } from '@sequelize/core/decorators-legacy';
class User extends Model<InferAttributes<User>, InferCreationAttributes<User>> {
@DeletedAt
declare deletedAt: Date | null;
}