package model import "time" type SharingDB struct { ID string `json:"id" gorm:"type:char(12);primaryKey"` FilesRaw string `json:"-" gorm:"type:text"` Expires *time.Time `json:"expires"` Pwd string `json:"pwd"` Accessed int `json:"accessed"` MaxAccessed int `json:"max_accessed"` CreatorId uint `json:"-"` Disabled bool `json:"disabled"` Remark string `json:"remark"` Readme string `json:"readme" gorm:"type:text"` Header string `json:"header" gorm:"type:text"` Sort } type Sharing struct { *SharingDB Files []string `json:"files"` Creator *User `json:"-"` } func (s *Sharing) Valid() bool { if s.Disabled { return false } if s.MaxAccessed > 0 && s.Accessed >= s.MaxAccessed { return false } if len(s.Files) == 0 { return false } if !s.Creator.CanShare() { return false } if s.Expires != nil && !s.Expires.IsZero() && s.Expires.Before(time.Now()) { return false } return true } func (s *Sharing) Verify(pwd string) bool { return s.Pwd == "" || s.Pwd == pwd }