47 lines
1.4 KiB
Go
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
|
|
}
|