// Copyright (C) NHR@FAU, University Erlangen-Nuremberg.
// All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package taskManager

import (
	"time"

	"github.com/ClusterCockpit/cc-backend/pkg/archive"
	"github.com/ClusterCockpit/cc-backend/pkg/log"
	"github.com/ClusterCockpit/cc-backend/pkg/schema"
	"github.com/go-co-op/gocron/v2"
)

func RegisterCompressionService(compressOlderThan int) {
	log.Info("Register compression service")

	s.NewJob(gocron.DailyJob(1, gocron.NewAtTimes(gocron.NewAtTime(05, 0, 0))),
		gocron.NewTask(
			func() {
				var jobs []*schema.Job
				var err error

				ar := archive.GetHandle()
				startTime := time.Now().Unix() - int64(compressOlderThan*24*3600)
				lastTime := ar.CompressLast(startTime)
				if startTime == lastTime {
					log.Info("Compression Service - Complete archive run")
					jobs, err = jobRepo.FindJobsBetween(0, startTime)

				} else {
					jobs, err = jobRepo.FindJobsBetween(lastTime, startTime)
				}

				if err != nil {
					log.Warnf("Error while looking for compression jobs: %v", err)
				}
				ar.Compress(jobs)
			}))
}