35 lines
568 B
Go
35 lines
568 B
Go
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
|
|
}
|