Skip to content
Snippets Groups Projects
event.go 1.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • package event
    
    import "github.com/google/uuid"
    
    // Event is a event that can be published via the event service as payload.
    type Event struct {
    
    	ID                uuid.UUID         `json:"id,omitempty"`
    	EntityID          uuid.UUID         `json:"entity_id,omitempty"`
    	Type              string            `json:"type,omitempty"`
    	PathsAndValuesMap map[string]string `json:"paths_and_values,omitempty"`
    
    }
    
    const (
    	// TypeAdd is an add event.
    	TypeAdd = "add"
    
    	// TypeUpdate is an update event.
    	TypeUpdate = "update"
    
    	// TypeDelete is a delete event.
    	TypeDelete = "delete"
    
    
    	// TypeSusbcribe is a gNMI subscribe event.
    	TypeSubscribe = "subscribe"
    
    )
    
    // NewAddEvent creates a new add event.
    func NewAddEvent(entityID uuid.UUID) Event {
    	return Event{
    		ID:       uuid.New(),
    		EntityID: entityID,
    		Type:     TypeAdd,
    	}
    }
    
    // NewDeleteEvent creates a new delete event.
    func NewDeleteEvent(entityID uuid.UUID) Event {
    	return Event{
    		ID:       uuid.New(),
    		EntityID: entityID,
    		Type:     TypeDelete,
    	}
    }
    
    // NewUpdateEvent creates a new update event.
    func NewUpdateEvent(entityID uuid.UUID) Event {
    	return Event{
    		ID:       uuid.New(),
    		EntityID: entityID,
    		Type:     TypeUpdate,
    	}
    }
    
    // NewGnmiSubscribeEvent creates a new gNMI subscribe event for managed network elements.
    func NewGnmiSubscribeEvent(entityID uuid.UUID, pathsAndValues map[string]string) Event {
    
    	return Event{
    		ID:                uuid.New(),
    		EntityID:          entityID,