package domain import ( "fmt" "strings" "time" "gitlab.com/unboundsoftware/eventsourced/eventsourced" ) type SubGraph struct { eventsourced.BaseAggregate Ref string Service string Url *string WSUrl *string Sdl string CreatedBy string CreatedAt time.Time ChangedBy string ChangedAt time.Time } func (s *SubGraph) Apply(event eventsourced.Event) error { switch e := event.(type) { case *SubGraphUpdated: if s.Ref == "" { s.CreatedBy = e.Initiator s.CreatedAt = e.When() } s.ChangedBy = e.Initiator s.ChangedAt = e.When() s.Ref = e.Ref s.Service = e.Service if e.Url != nil { url := strings.TrimSpace(*e.Url) s.Url = &url } if e.WSUrl != nil { url := strings.TrimSpace(*e.WSUrl) s.WSUrl = &url } s.Sdl = e.Sdl default: return fmt.Errorf("unexpected event type: %+v", event) } return nil } var _ eventsourced.Aggregate = &SubGraph{}