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

Method addRepositoryEvent

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

Source from the content-addressed store, hash-verified

819}
820
821func (s *sqlDatabase) addRepositoryEvent(ctx context.Context, repoID string, event params.EventType, eventLevel params.EventLevel, statusMessage string, maxEvents int) error {
822 repo, err := s.getRepoByID(ctx, s.conn, repoID)
823 if err != nil {
824 return fmt.Errorf("error updating instance: %w", err)
825 }
826
827 msg := RepositoryEvent{
828 Message: statusMessage,
829 EventType: event,
830 EventLevel: eventLevel,
831 RepoID: repo.ID,
832 }
833
834 // Use Create instead of Association.Append to avoid loading all existing events
835 if err := s.conn.Create(&msg).Error; err != nil {
836 return fmt.Errorf("error adding status message: %w", err)
837 }
838
839 if maxEvents > 0 {
840 var count int64
841 if err := s.conn.Model(&RepositoryEvent{}).Where("repo_id = ?", repo.ID).Count(&count).Error; err != nil {
842 return fmt.Errorf("error counting events: %w", err)
843 }
844
845 if count > int64(maxEvents) {
846 // Get the ID of the Nth most recent event
847 var cutoffEvent RepositoryEvent
848 if err := s.conn.Model(&RepositoryEvent{}).
849 Select("id").
850 Where("repo_id = ?", repo.ID).
851 Order("id desc").
852 Offset(maxEvents - 1).
853 Limit(1).
854 First(&cutoffEvent).Error; err != nil {
855 return fmt.Errorf("error finding cutoff event: %w", err)
856 }
857
858 // Delete all events older than the cutoff
859 if err := s.conn.Where("repo_id = ? and id < ?", repo.ID, cutoffEvent.ID).Unscoped().Delete(&RepositoryEvent{}).Error; err != nil {
860 return fmt.Errorf("error deleting old events: %w", err)
861 }
862 }
863 }
864 return nil
865}
866
867func (s *sqlDatabase) addOrgEvent(ctx context.Context, orgID string, event params.EventType, eventLevel params.EventLevel, statusMessage string, maxEvents int) error {
868 org, err := s.getOrgByID(ctx, s.conn, orgID)

Callers 1

AddEntityEventMethod · 0.95

Calls 2

getRepoByIDMethod · 0.95
DeleteMethod · 0.65

Tested by

no test coverage detected