package cache import ( "janex/admin-dashboard-backend/modules/structs" "janex/admin-dashboard-backend/modules/utils" "sync" "time" "github.com/rs/zerolog/log" ) var lockedGroupTaskSteps []*structs.LockedGroupTaskSteps var lgtMu sync.RWMutex func AddLockedGroupTaskStep(lockedGroupTaskStep structs.LockedGroupTaskSteps) (IsAlreadyInList bool) { lgtMu.Lock() var isAlreadyInList = false for _, step := range lockedGroupTaskSteps { if step.GroupTaskId == lockedGroupTaskStep.GroupTaskId && step.LockedByUserId == lockedGroupTaskStep.LockedByUserId { isAlreadyInList = true step.LockedAt = time.Now() break } } if !isAlreadyInList { lockedGroupTaskSteps = append(lockedGroupTaskSteps, &lockedGroupTaskStep) } lgtMu.Unlock() return isAlreadyInList } func RemoveLockedGroupTaskStep(i int) { lockedGroupTaskSteps = append(lockedGroupTaskSteps[:i], lockedGroupTaskSteps[i+1:]...) } func GetLockedGroupTaskSteps() []*structs.LockedGroupTaskSteps { lgtMu.RLock() defer lgtMu.RUnlock() return lockedGroupTaskSteps } func ExtendLockedGroupTaskStepLockedAtTime(lockedGroupTaskStep structs.LockedGroupTaskSteps) { lgtMu.Lock() log.Debug().Msg("start extending") for i, step := range lockedGroupTaskSteps { if step.GroupTaskId == lockedGroupTaskStep.GroupTaskId { step.LockedAt = time.Now().Add(utils.GroupTaskLockedTime * time.Second) lockedGroupTaskSteps[i] = step log.Debug().Msg("time extended") break } } lgtMu.Unlock() }