github.com/billybanfield/evergreen@v0.0.0-20170525200750-eeee692790f7/model/event/distro_event.go (about)

     1  package event
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/mongodb/grip"
     7  )
     8  
     9  const (
    10  	// resource type
    11  	ResourceTypeDistro = "DISTRO"
    12  
    13  	// event types
    14  	EventDistroAdded    = "DISTRO_ADDED"
    15  	EventDistroModified = "DISTRO_MODIFIED"
    16  	EventDistroRemoved  = "DISTRO_REMOVED"
    17  )
    18  
    19  // DistroEventData implements EventData.
    20  type DistroEventData struct {
    21  	// necessary for IsValid
    22  	ResourceType string      `bson:"r_type" json:"resource_type"`
    23  	DistroId     string      `bson:"d_id,omitempty" json:"d_id,omitempty"`
    24  	UserId       string      `bson:"u_id,omitempty" json:"u_id,omitempty"`
    25  	Data         interface{} `bson:"dstr,omitempty" json:"dstr,omitempty"`
    26  }
    27  
    28  func (d DistroEventData) IsValid() bool {
    29  	return d.ResourceType == ResourceTypeDistro
    30  }
    31  
    32  func LogDistroEvent(distroId string, eventType string, eventData DistroEventData) {
    33  	eventData.ResourceType = ResourceTypeDistro
    34  	event := Event{
    35  		ResourceId: distroId,
    36  		Timestamp:  time.Now(),
    37  		EventType:  eventType,
    38  		Data:       DataWrapper{eventData},
    39  	}
    40  
    41  	if err := NewDBEventLogger(AllLogCollection).LogEvent(event); err != nil {
    42  		grip.Errorf("Error logging distro event: %+v", err)
    43  	}
    44  }
    45  
    46  func LogDistroAdded(distroId, userId string, data interface{}) {
    47  	LogDistroEvent(distroId, EventDistroAdded, DistroEventData{UserId: userId, Data: data})
    48  }
    49  
    50  func LogDistroModified(distroId, userId string, data interface{}) {
    51  	LogDistroEvent(distroId, EventDistroModified, DistroEventData{UserId: userId, Data: data})
    52  }
    53  
    54  func LogDistroRemoved(distroId, userId string, data interface{}) {
    55  	LogDistroEvent(distroId, EventDistroRemoved, DistroEventData{UserId: userId, Data: data})
    56  }