|
|
@@ -84,54 +84,50 @@ func NewKubeEventRepository(db *gorm.DB, key *[32]byte) repository.KubeEventRepo
|
|
|
func (repo *KubeEventRepository) CreateEvent(
|
|
|
event *models.KubeEvent,
|
|
|
) (*models.KubeEvent, error) {
|
|
|
- err := repo.db.Transaction(func(tx *gorm.DB) error {
|
|
|
- // read the count of the events in the DB
|
|
|
- query := tx.Debug().Where("project_id = ? AND cluster_id = ?", event.ProjectID, event.ClusterID)
|
|
|
+ // read the count of the events in the DB
|
|
|
+ query := repo.db.Debug().Where("project_id = ? AND cluster_id = ?", event.ProjectID, event.ClusterID)
|
|
|
|
|
|
- var count int64
|
|
|
-
|
|
|
- if err := query.Model([]*models.KubeEvent{}).Count(&count).Error; err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
-
|
|
|
- fmt.Println("COUNT IS", event.Name, count)
|
|
|
-
|
|
|
- // if the count is greater than 500, remove the lowest-order event to implement a
|
|
|
- // basic fixed-length buffer
|
|
|
- if count >= 500 {
|
|
|
- // first, delete the matching sub events
|
|
|
- err := tx.Debug().Exec(`
|
|
|
- DELETE FROM kube_sub_events
|
|
|
- WHERE kube_event_id NOT IN (
|
|
|
- SELECT id FROM kube_events k2 WHERE (k2.project_id = ? AND k2.cluster_id = ?) ORDER BY updated_at desc, id desc LIMIT 499
|
|
|
- )
|
|
|
- `, event.ProjectID, event.ClusterID).Error
|
|
|
-
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+ var count int64
|
|
|
|
|
|
- // then, delete the matching events
|
|
|
- err = tx.Debug().Exec(`
|
|
|
- DELETE FROM kube_events
|
|
|
- WHERE (project_id = ? AND cluster_id = ?) AND id NOT IN (
|
|
|
- SELECT id FROM kube_events k2 WHERE (k2.project_id = ? AND k2.cluster_id = ?) ORDER BY updated_at desc, id desc LIMIT 499
|
|
|
- )
|
|
|
- `, event.ProjectID, event.ClusterID, event.ProjectID, event.ClusterID).Error
|
|
|
+ if err := query.Model([]*models.KubeEvent{}).Count(&count).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+ fmt.Println("COUNT IS", event.Name, count)
|
|
|
+
|
|
|
+ // if the count is greater than 500, remove the lowest-order event to implement a
|
|
|
+ // basic fixed-length buffer
|
|
|
+ if count >= 500 {
|
|
|
+ // first, delete the matching sub events
|
|
|
+ err := repo.db.Debug().Exec(`
|
|
|
+ DELETE FROM kube_sub_events
|
|
|
+ WHERE kube_event_id NOT IN (
|
|
|
+ SELECT id FROM kube_events k2 WHERE (k2.project_id = ? AND k2.cluster_id = ?) ORDER BY updated_at desc, id desc LIMIT 499
|
|
|
+ )
|
|
|
+ `, event.ProjectID, event.ClusterID).Error
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
}
|
|
|
|
|
|
- if err := tx.Debug().Create(event).Error; err != nil {
|
|
|
- return err
|
|
|
+ // then, delete the matching events
|
|
|
+ err = repo.db.Debug().Exec(`
|
|
|
+ DELETE FROM kube_events
|
|
|
+ WHERE (project_id = ? AND cluster_id = ?) AND id NOT IN (
|
|
|
+ SELECT id FROM kube_events k2 WHERE (k2.project_id = ? AND k2.cluster_id = ?) ORDER BY updated_at desc, id desc LIMIT 499
|
|
|
+ )
|
|
|
+ `, event.ProjectID, event.ClusterID, event.ProjectID, event.ClusterID).Error
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- return nil
|
|
|
- })
|
|
|
+ if err := repo.db.Debug().Create(event).Error; err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
|
|
|
- return event, err
|
|
|
+ return event, nil
|
|
|
}
|
|
|
|
|
|
// ReadEvent finds an event by id
|
|
|
@@ -235,21 +231,20 @@ func (repo *KubeEventRepository) ListEventsByProjectID(
|
|
|
func (repo *KubeEventRepository) AppendSubEvent(event *models.KubeEvent, subEvent *models.KubeSubEvent) error {
|
|
|
subEvent.KubeEventID = event.ID
|
|
|
|
|
|
- return repo.db.Debug().Transaction(func(tx *gorm.DB) error {
|
|
|
- var count int64
|
|
|
+ var count int64
|
|
|
|
|
|
- query := tx.Debug().Where("kube_event_id = ?", event.ID)
|
|
|
+ query := repo.db.Debug().Where("kube_event_id = ?", event.ID)
|
|
|
|
|
|
- if err := query.Model([]*models.KubeSubEvent{}).Count(&count).Error; err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
+ if err := query.Model([]*models.KubeSubEvent{}).Count(&count).Error; err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
|
|
|
- fmt.Println("COUNT IS", event.Name, count)
|
|
|
+ fmt.Println("COUNT IS", event.Name, count)
|
|
|
|
|
|
- // if the count is greater than 20, remove the lowest-order events to implement a
|
|
|
- // basic fixed-length buffer
|
|
|
- if count >= 20 {
|
|
|
- err := tx.Debug().Exec(`
|
|
|
+ // if the count is greater than 20, remove the lowest-order events to implement a
|
|
|
+ // basic fixed-length buffer
|
|
|
+ if count >= 20 {
|
|
|
+ err := repo.db.Debug().Exec(`
|
|
|
DELETE FROM kube_sub_events
|
|
|
WHERE kube_event_id = ? AND
|
|
|
id NOT IN (
|
|
|
@@ -257,39 +252,32 @@ func (repo *KubeEventRepository) AppendSubEvent(event *models.KubeEvent, subEven
|
|
|
)
|
|
|
`, event.ID, event.ID).Error
|
|
|
|
|
|
- if err != nil {
|
|
|
- return err
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // if err := tx.Debug().Create(subEvent).Error; err != nil {
|
|
|
- // return err
|
|
|
- // }
|
|
|
-
|
|
|
- if err := tx.Debug().Model(event).Association("SubEvents").Append(subEvent); err != nil {
|
|
|
+ if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ if err := repo.db.Debug().Model(event).Association("SubEvents").Append(subEvent); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
|
|
|
- // only update the updated_at field for the event
|
|
|
- return tx.Debug().Model(event).Update("updated_at", time.Now()).Error
|
|
|
- })
|
|
|
+ // only update the updated_at field for the event
|
|
|
+ return repo.db.Debug().Model(event).Update("updated_at", time.Now()).Error
|
|
|
}
|
|
|
|
|
|
// DeleteEvent deletes an event by ID
|
|
|
func (repo *KubeEventRepository) DeleteEvent(
|
|
|
id uint,
|
|
|
) error {
|
|
|
- return repo.db.Transaction(func(tx *gorm.DB) error {
|
|
|
- return deleteEventPermanently(id, tx)
|
|
|
- })
|
|
|
+ return deleteEventPermanently(id, repo.db)
|
|
|
}
|
|
|
|
|
|
-func deleteEventPermanently(id uint, tx *gorm.DB) error {
|
|
|
+func deleteEventPermanently(id uint, db *gorm.DB) error {
|
|
|
// delete all subevents first
|
|
|
- if err := tx.Debug().Unscoped().Where("kube_event_id = ?", id).Delete(&models.KubeSubEvent{}).Error; err != nil {
|
|
|
+ if err := db.Debug().Unscoped().Where("kube_event_id = ?", id).Delete(&models.KubeSubEvent{}).Error; err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
// delete event
|
|
|
- return tx.Debug().Preload("SubEvents").Unscoped().Where("id = ?", id).Delete(&models.KubeEvent{}).Error
|
|
|
+ return db.Debug().Preload("SubEvents").Unscoped().Where("id = ?", id).Delete(&models.KubeEvent{}).Error
|
|
|
}
|