diff --git a/db/card.go b/db/card.go index 1685948..9d698ec 100644 --- a/db/card.go +++ b/db/card.go @@ -1,6 +1,10 @@ package db -import "gorm.io/gorm" +import ( + "errors" + + "gorm.io/gorm" +) // Card can be either card or wallet type Card struct { @@ -12,3 +16,25 @@ type Card struct { UserID uint User *User } + +var ( + ERROR_CARD_NAME_EMPTY = errors.New("Card's name can't be empty") + ERROR_CARD_NAME_NOT_UNIQUE = errors.New("Card's name have to be unique for user") +) + +func (c *Card) BeforeSave(tx *gorm.DB) error { + if c.Name == "" { + return ERROR_CARD_NAME_EMPTY + } + + var dup Card + if err := tx.Find(&dup, Card{Name: c.Name}).Error; err != nil { + return err + } + + if dup.ID != 0 { + return ERROR_CARD_NAME_NOT_UNIQUE + } + + return nil +}