package model import "time" type Notification struct { ID int `json:"id" gorm:"primaryKey"` ChoreID int `json:"chore_id" gorm:"column:chore_id"` UserID int `json:"user_id" gorm:"column:user_id"` TargetID string `json:"target_id" gorm:"column:target_id"` Text string `json:"text" gorm:"column:text"` IsSent bool `json:"is_sent" gorm:"column:is_sent;index;default:false"` TypeID NotificationType `json:"type" gorm:"column:type"` ScheduledFor time.Time `json:"scheduled_for" gorm:"column:scheduled_for;index"` CreatedAt time.Time `json:"created_at" gorm:"column:created_at"` } func (n *Notification) IsValid() bool { switch n.TypeID { case NotificationTypeTelegram, NotificationTypePushover: if n.TargetID == "" { return false } else if n.Text == "0" { return false } return true default: return false } } type NotificationType int8 const ( NotificationTypeNone NotificationType = iota NotificationTypeTelegram NotificationTypePushover )