admin-dashboard-backend/modules/cache/lockedgrouptasksteps.go

61 lines
1.4 KiB
Go

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