package models import "time" // Change represents a change in the rpdata history through the API. type Change struct { ID string `bson:"_id"` Model string `bson:"model"` Op string `bson:"op"` Author string `bson:"author"` Listed bool `bson:"listed"` Keys []ChangeKey `bson:"keys"` Date time.Time `bson:"date"` Logs []Log `bson:"logs"` Characters []Character `bson:"characters"` Posts []Post `bson:"posts"` } // ChangeKey is a key for a change that can be used when subscribing to them. type ChangeKey struct { Model string `bson:"model"` ID string `bson:"id"` } // Data makes a combined, mixed array of all the models stored in this change. func (change *Change) Data() []interface{} { data := make([]interface{}, 0, len(change.Logs)+len(change.Characters)+len(change.Posts)) for _, log := range change.Logs { data = append(data, log) } for _, character := range change.Characters { data = append(data, character) } for _, post := range change.Posts { data = append(data, post) } return data }