61 lines
1.4 KiB
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()
|
|
}
|