2024-02-19 18:20:09 +00:00
|
|
|
package privilegewc
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
|
|
|
"github.com/themakers/hlog"
|
|
|
|
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/dal"
|
|
|
|
"penahub.gitlab.yandexcloud.net/backend/quiz/common.git/model"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
type CheckWorkerConfig struct {
|
|
|
|
TickerInterval time.Duration
|
|
|
|
DefaultData model.DefaultData
|
|
|
|
Logger hlog.Logger
|
|
|
|
ErrChan chan<- error
|
|
|
|
}
|
|
|
|
|
|
|
|
type CheckWorker struct {
|
|
|
|
config CheckWorkerConfig
|
|
|
|
privilegeDAL *dal.DAL
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewCheckWorker(config CheckWorkerConfig, privilegeDAL *dal.DAL) *CheckWorker {
|
|
|
|
return &CheckWorker{
|
|
|
|
config: config,
|
|
|
|
privilegeDAL: privilegeDAL,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (w *CheckWorker) Start(ctx context.Context) {
|
|
|
|
ticker := time.NewTicker(w.config.TickerInterval)
|
|
|
|
defer ticker.Stop()
|
|
|
|
|
|
|
|
for {
|
|
|
|
select {
|
|
|
|
case <-ticker.C:
|
|
|
|
fmt.Println("CHECK")
|
|
|
|
w.performScheduledTasks(ctx)
|
|
|
|
case <-ctx.Done():
|
|
|
|
fmt.Println("Check worker terminated")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: Maybe one query?
|
|
|
|
func (w *CheckWorker) performScheduledTasks(ctx context.Context) {
|
|
|
|
fmt.Println("CHEC0")
|
|
|
|
w.deleteExpired(ctx)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (w *CheckWorker) deleteExpired(ctx context.Context) {
|
|
|
|
expiredData, err := w.privilegeDAL.AccountRepo.GetExpired(ctx, w.config.DefaultData.UnlimID)
|
|
|
|
if err != nil {
|
|
|
|
w.config.Logger.Module("Error getting expired quizUnlimTime records")
|
|
|
|
w.config.ErrChan <- err
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, data := range expiredData {
|
2024-06-17 18:05:21 +00:00
|
|
|
err := w.privilegeDAL.AccountRepo.DeletePrivilegeByID(ctx, data.Privilege.ID)
|
2024-02-19 18:20:09 +00:00
|
|
|
if err != nil {
|
|
|
|
w.config.Logger.Module("Error deleting expired quizUnlimTime record")
|
|
|
|
w.config.ErrChan <- err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|