package db import ( "errors" "gorm.io/gorm" ) type Word struct { gorm.Model Value string } var ( ErrCardValueEmpty = errors.New("the 'Value' field for 'Word' cannot be empty") ErrCardValueNotUnique = errors.New("the 'Value' field for 'Word' have to be unique for user") ) func (c *Word) BeforeSave(tx *gorm.DB) error { if c.Value == "" { return ErrCardValueEmpty } var dup Word if err := tx.Find(&dup, Word{Value: c.Value}).Error; err != nil { return err } if c.ID != dup.ID && dup.ID != 0 { return ErrCardValueNotUnique } return nil }