diff --git a/database.go b/database.go index 9472b5c52b536d2e9fb5e821270b1f2a21583dc1..7863b086f970b20e26bc629905f4145db08bfc09 100644 --- a/database.go +++ b/database.go @@ -240,3 +240,47 @@ func (s *DBSaver) DeleteJob(job GenericJob) error { }) } + +func (s *DBSaver) DeleteLogs(job GenericJob) error { + s.mu.Lock() + defer s.mu.Unlock() + var db *gorm.DB + var err error + + if db, err = checkRunningSaver(s); err != nil { + return err + } + + return db.Transaction(func(tx *gorm.DB) error { + permJob := job.GetPersistence() + + dbErr := tx.Where("job_id = ?", permJob.GetID()).Delete(&JobLog{}).Error + if dbErr != nil { + return dbErr + } + + return nil + }) +} + +func (s *DBSaver) DeleteStats(job GenericJob) error { + s.mu.Lock() + defer s.mu.Unlock() + var db *gorm.DB + var err error + + if db, err = checkRunningSaver(s); err != nil { + return err + } + + return db.Transaction(func(tx *gorm.DB) error { + permJob := job.GetPersistence() + + dbErr := tx.Where("job_id = ?", permJob.GetID()).Delete(&JobStats{}).Error + if dbErr != nil { + return dbErr + } + + return nil + }) +} diff --git a/database_test.go b/database_test.go index 37f4c7d5f6309ec22e3b42d1fe1fdc1f5ae4eea4..c2b80e08558817a059c23d60b433d1153ca42014 100644 --- a/database_test.go +++ b/database_test.go @@ -324,6 +324,38 @@ func TestWriteToDB(t *testing.T) { }) + wg.Add(1) + t.Run("TestDeleteJob", func(t *testing.T) { + defer wg.Done() + + mgr := NewManager() + mgr.SetDB(db) + worker := NewLocalWorker(1) + err := mgr.AddWorker(worker) + assert.Nil(t, err) + + err = mgr.Start() + assert.Nil(t, err) + + runner := &CounterRunnable{} + job := NewJob[CounterResult]("job1", runner) + + scheduler := &InstantScheduler{} + err = mgr.ScheduleJob(job, scheduler) + assert.Nil(t, err) + + time.Sleep(1 * time.Second) + err = mgr.DeleteJob(job.GetID()) + assert.Nil(t, err) + + // test is job in database + var tmpJob JobPersistence + if err := db.First(&tmpJob, "id = ?", "job1").Error; err == nil { + t.Error("job1 is still in database") + } + + }) + wg.Wait() var jobPersistence JobPersistence