MCPcopy Create free account
hub / github.com/cloudbase/garm / addEnterpriseEvent

Method addEnterpriseEvent

database/sql/util.go:913–958  ·  view source on GitHub ↗
(ctx context.Context, entID string, event params.EventType, eventLevel params.EventLevel, statusMessage string, maxEvents int)

Source from the content-addressed store, hash-verified

911}
912
913func (s *sqlDatabase) addEnterpriseEvent(ctx context.Context, entID string, event params.EventType, eventLevel params.EventLevel, statusMessage string, maxEvents int) error {
914 ent, err := s.getEnterpriseByID(ctx, s.conn, entID)
915 if err != nil {
916 return fmt.Errorf("error updating instance: %w", err)
917 }
918
919 msg := EnterpriseEvent{
920 Message: statusMessage,
921 EventType: event,
922 EventLevel: eventLevel,
923 EnterpriseID: ent.ID,
924 }
925
926 // Use Create instead of Association.Append to avoid loading all existing events
927 if err := s.conn.Create(&msg).Error; err != nil {
928 return fmt.Errorf("error adding status message: %w", err)
929 }
930
931 if maxEvents > 0 {
932 var count int64
933 if err := s.conn.Model(&EnterpriseEvent{}).Where("enterprise_id = ?", ent.ID).Count(&count).Error; err != nil {
934 return fmt.Errorf("error counting events: %w", err)
935 }
936
937 if count > int64(maxEvents) {
938 // Get the ID of the Nth most recent event
939 var cutoffEvent EnterpriseEvent
940 if err := s.conn.Model(&EnterpriseEvent{}).
941 Select("id").
942 Where("enterprise_id = ?", ent.ID).
943 Order("id desc").
944 Offset(maxEvents - 1).
945 Limit(1).
946 First(&cutoffEvent).Error; err != nil {
947 return fmt.Errorf("error finding cutoff event: %w", err)
948 }
949
950 // Delete all events older than the cutoff
951 if err := s.conn.Where("enterprise_id = ? and id < ?", ent.ID, cutoffEvent.ID).Unscoped().Delete(&EnterpriseEvent{}).Error; err != nil {
952 return fmt.Errorf("error deleting old events: %w", err)
953 }
954 }
955 }
956
957 return nil
958}
959
960func (s *sqlDatabase) AddEntityEvent(ctx context.Context, entity params.ForgeEntity, event params.EventType, eventLevel params.EventLevel, statusMessage string, maxEvents int) error {
961 if maxEvents == 0 {

Callers 1

AddEntityEventMethod · 0.95

Calls 2

getEnterpriseByIDMethod · 0.95
DeleteMethod · 0.65

Tested by

no test coverage detected