github.com/miguelgrubin/gin-boilerplate@v0.0.0-20231208120009-f8f00c6d4138/pkg/shared/domain/event_registry.go (about)

     1  package domain
     2  
     3  import "time"
     4  
     5  type Event struct {
     6  	Id   string
     7  	Date time.Time
     8  }
     9  
    10  type EventRegistry struct {
    11  	Events map[string]Event
    12  }
    13  
    14  func NewEventRegistry() *EventRegistry {
    15  	return &EventRegistry{
    16  		Events: make(map[string]Event),
    17  	}
    18  }
    19  
    20  func (er *EventRegistry) AddEvent(id string) {
    21  	er.Events[id] = Event{
    22  		Id:   id,
    23  		Date: time.Now(),
    24  	}
    25  }
    26  
    27  func (er *EventRegistry) GetEvent(id string) Event {
    28  	return er.Events[id]
    29  }
    30  
    31  func (er *EventRegistry) GetAllEvents() []Event {
    32  	events := make([]Event, 0, len(er.Events))
    33  	for _, event := range er.Events {
    34  		events = append(events, event)
    35  	}
    36  	return events
    37  }
    38  
    39  func (er *EventRegistry) HasEvent(id string) bool {
    40  	ev := er.GetEvent(id)
    41  	if ev.Id != "" {
    42  		return true
    43  	}
    44  	return false
    45  }