diff --git a/db/card.go b/db/card.go index b6791dc..c53f716 100644 --- a/db/card.go +++ b/db/card.go @@ -10,9 +10,12 @@ import ( type Card struct { gorm.Model Name string + LastDigits string Balance uint64 HaveCreditLine bool CreditLine uint64 + CurrencyID uint + Currency *Currency UserID uint User *User } @@ -35,6 +38,7 @@ func (c *Card) SetUserID(id uint) { var ( ERROR_CARD_NAME_EMPTY = errors.New("The 'Name' field for 'Card' cannot be empty") ERROR_CARD_NAME_NOT_UNIQUE = errors.New("The 'Name' field for 'Card' have to be unique for user") + ERROR_CARD_CANT_FIND_CURR = errors.New("The 'CurrencyID' field for 'Card' is invalid") ) func (c *Card) BeforeSave(tx *gorm.DB) error { @@ -50,6 +54,15 @@ func (c *Card) BeforeSave(tx *gorm.DB) error { if c.ID != dup.ID && dup.ID != 0 { return ERROR_CARD_NAME_NOT_UNIQUE } + if c.CurrencyID != 0 { + var currency Currency + if err := tx.Find(¤cy, c.CurrencyID).Error; err != nil { + return err + } + if currency.ID == 0 { + return ERROR_CARD_CANT_FIND_CURR + } + } return nil }