package models import ( "context" "time" ) type Log struct { ID string `json:"id" db:"log_id"` UserID string `json:"-" db:"user_id"` TaskID string `json:"taskId" db:"task_id"` ItemID string `json:"itemId" db:"item_id"` LoggedTime time.Time `json:"loggedTime" db:"logged_time"` Description string `json:"description" db:"description"` } func (log *Log) Update(update LogUpdate) { if update.LoggedTime != nil { log.LoggedTime = update.LoggedTime.UTC() } if update.Description != nil { log.Description = *update.Description } } type LogUpdate struct { LoggedTime *time.Time `json:"loggedTime"` Description *string `json:"description"` } type LogResult struct { Log Task *Task `json:"task"` } type LogFilter struct { UserID string IDs []string ItemIDs []string MinTime *time.Time MaxTime *time.Time } type LogRepository interface { Find(ctx context.Context, id string) (*Log, error) List(ctx context.Context, filter LogFilter) ([]*Log, error) Insert(ctx context.Context, log Log) error Update(ctx context.Context, log Log) error Delete(ctx context.Context, log Log) error }