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.

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
}