How to Implement Soft Deletes in Go
Implement soft deletes by adding a DeletedAt field to your struct and filtering queries to exclude records where this field is set.
package main
import (
"gorm.io/gorm"
)
type User struct {
ID uint
Name string
DeletedAt gorm.DeletedAt // GORM's soft delete field
}
// Soft delete
func (u *User) SoftDelete(db *gorm.DB) error {
return db.Delete(u).Error
}
// Query active users only
func FindActiveUsers(db *gorm.DB) ([]User, error) {
var users []User
if err := db.Where("deleted_at IS NULL").Find(&users).Error; err != nil {
return nil, err
}
return users, nil
}