feat(training): TrainingDateRepository: add FindUpcomingByTrainingID() and FindAllUpcoming() methods
This commit is contained in:
parent
2dcaa4c646
commit
606854d1d5
1 changed files with 34 additions and 0 deletions
|
|
@ -2,6 +2,7 @@ package training
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/shopspring/decimal"
|
"github.com/shopspring/decimal"
|
||||||
"gitlab.mareshq.com/hq/yggdrasil/internal/currency"
|
"gitlab.mareshq.com/hq/yggdrasil/internal/currency"
|
||||||
|
|
@ -248,6 +249,8 @@ type TrainingDateRepository interface {
|
||||||
FindByID(id TrainingDateID) (*TrainingDate, error)
|
FindByID(id TrainingDateID) (*TrainingDate, error)
|
||||||
FindAll() ([]TrainingDate, error)
|
FindAll() ([]TrainingDate, error)
|
||||||
FindAllByTrainingID(trainingID TrainingID) ([]TrainingDate, error)
|
FindAllByTrainingID(trainingID TrainingID) ([]TrainingDate, error)
|
||||||
|
FindUpcomingByTrainingID(trainingID TrainingID) ([]TrainingDate, error)
|
||||||
|
FindAllUpcoming() ([]TrainingDate, error)
|
||||||
Update(trainingDate *TrainingDate) error
|
Update(trainingDate *TrainingDate) error
|
||||||
Delete(id TrainingDateID) error
|
Delete(id TrainingDateID) error
|
||||||
}
|
}
|
||||||
|
|
@ -313,6 +316,37 @@ func (r *InMemoryTrainingDateRepository) FindAllByTrainingID(trainingID Training
|
||||||
return dates, nil
|
return dates, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *InMemoryTrainingDateRepository) FindUpcomingByTrainingID(trainingID TrainingID) ([]TrainingDate, error) {
|
||||||
|
r.lock.RLock()
|
||||||
|
defer r.lock.RUnlock()
|
||||||
|
|
||||||
|
now := time.Now()
|
||||||
|
var dates []TrainingDate
|
||||||
|
for _, id := range r.trainingToDates[trainingID] {
|
||||||
|
date := r.trainingDates[id]
|
||||||
|
if date.Date.After(now) {
|
||||||
|
dates = append(dates, date)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dates, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *InMemoryTrainingDateRepository) FindAllUpcoming() ([]TrainingDate, error) {
|
||||||
|
r.lock.RLock()
|
||||||
|
defer r.lock.RUnlock()
|
||||||
|
|
||||||
|
now := time.Now()
|
||||||
|
var dates []TrainingDate
|
||||||
|
for _, date := range r.trainingDates {
|
||||||
|
if date.Date.After(now) {
|
||||||
|
dates = append(dates, date)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dates, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (r *InMemoryTrainingDateRepository) Update(trainingDate *TrainingDate) error {
|
func (r *InMemoryTrainingDateRepository) Update(trainingDate *TrainingDate) error {
|
||||||
r.lock.Lock()
|
r.lock.Lock()
|
||||||
defer r.lock.Unlock()
|
defer r.lock.Unlock()
|
||||||
|
|
|
||||||
Reference in a new issue