package models import "time" // Log is the header/session for a log file. type Log struct { ID string `bson:"_id"` ShortID string `bson:"shortId"` Date time.Time `bson:"date"` ChannelName string `bson:"channel"` EventName string `bson:"event,omitempty"` Title string `bson:"title,omitempty"` Description string `bson:"description,omitempty"` Open bool `bson:"open"` CharacterIDs []string `bson:"characterIds"` } func (log *Log) ApplyUpdate(update LogUpdate) { if update.Open != nil { log.Open = *update.Open } if update.EventName != nil { log.EventName = *update.EventName } if update.Title != nil { log.Title = *update.Title } if update.Description != nil { log.Description = *update.Description } if update.CharacterIDs != nil { log.CharacterIDs = update.CharacterIDs } } // A LogSuggestion is a suggestion for a log. type LogSuggestion struct { Log *Log Characters []*Character HasChannel bool HasEvent bool } // IsChangeObject is an interface implementation to identify it as a valid // ChangeObject in GQL. func (*Log) IsChangeObject() { panic("this method is a dummy, and so is its caller") } // A LogFilter is a filter that can be used to list logs. type LogFilter struct { Open *bool Characters []string Channels []string Events []string MinDate *time.Time MaxDate *time.Time Search *string Limit int } type LogUpdate struct { Title *string EventName *string Description *string Open *bool CharacterIDs []string }