Files
alfred-be/alfred/repositoryAccessLayer/shedlockAccessLayer.go
2026-03-08 16:14:42 +05:30

47 lines
1.4 KiB
Go

package repositoryAccessLayer
import (
"alfred/mapper"
"alfred/model/common"
"alfred/model/es"
"alfred/repository"
)
type ShedlockAccessLayer interface {
InsertShedlockForCronWithOptimisticControl(shedLock *common.ShedLock, primaryTerm *int, seqNo *int) (int, error)
InsertShedlockForCron(shedLock *common.ShedLock) error
GetShedLockStatus(cronName string) (*es.ShedlockResponse, int, error)
}
type ShedLockAccessLayerImpl struct {
shedlockRepository repository.ShedlockRepository
}
func NewShedlockAccessLayer(shedlockRepository repository.ShedlockRepository) ShedlockAccessLayer {
return &ShedLockAccessLayerImpl{
shedlockRepository: shedlockRepository,
}
}
func (sl *ShedLockAccessLayerImpl) InsertShedlockForCron(shedLock *common.ShedLock) error {
err := sl.shedlockRepository.InsertShedlockForCron(shedLock)
return err
}
func (sl *ShedLockAccessLayerImpl) InsertShedlockForCronWithOptimisticControl(shedLock *common.ShedLock, primaryTerm *int, seqNo *int) (int, error) {
status, err := sl.shedlockRepository.InsertShedlockForCronWithOptimisticControl(shedLock, primaryTerm, seqNo)
return status, err
}
func (sl *ShedLockAccessLayerImpl) GetShedLockStatus(cronName string) (*es.ShedlockResponse, int, error) {
result, err := sl.shedlockRepository.GetShedLockStatus(cronName)
if err != nil {
return nil, 0, err
}
mappedResult := mapper.MapEsapiResponseToShedlockResponse(result)
return mappedResult, result.StatusCode, nil
}