You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package models
import "time"
type Log struct { ID string `db:"log_id"` UserID string `db:"user_id"` Date time.Time `db:"date"` Description string `db:"description"`
Items []LogItem Tasks []LogTask }
func (log *Log) Copy() *Log { newLog := *log newLog.Items = append(newLog.Items[:0:0], log.Items...) newLog.Tasks = append(newLog.Tasks[:0:0], log.Tasks...)
return &newLog }
func (log *Log) Empty() bool { return len(log.Items) == 0 && len(log.Tasks) == 0 }
func (log *Log) MatchesIssue(issueID string) bool { for _, item := range log.Items { if item.IssueID == issueID { return true } }
for _, task := range log.Tasks { if task.IssueID == issueID { return true } }
return false }
func (log *Log) MatchesIssueTask(issueTaskID string) bool { for _, task := range log.Tasks { if task.IssueTaskID == issueTaskID { return true } }
return false }
func (log *Log) MatchesIssueItem(issueItemID string) bool { for _, item := range log.Items { if item.IssueItemID == issueItemID { return true } }
return false }
func (log *Log) Task(issueTaskID string) *LogTask { for i := range log.Tasks { task := &log.Tasks[i] if task.IssueTaskID == issueTaskID { return task } }
return nil }
func (log *Log) Item(issueItemID string) *LogItem { for i := range log.Items { item := &log.Items[i] if item.IssueItemID == issueItemID { return item } }
return nil }
type LogTask struct { LogID string `db:"log_id"` IssueID string `db:"issue_id"` IssueTaskID string `db:"issue_task_id"` Units *int `db:"units"` Duration time.Duration `db:"duration"` }
type LogItem struct { LogID string `db:"log_id"` IssueID string `db:"issue_id"` IssueItemID string `db:"issue_item_id"` Amount int `db:"amount"` }
type LogFilter struct { LogIDs []string UserIDs []string IssueIDs []string IssueTaskIDs []string IssueItemIDs []string FromDate *time.Time ToDate *time.Time }
|