90 lines
1.9 KiB
Go
90 lines
1.9 KiB
Go
package training
|
|
|
|
type TrainingRepository interface {
|
|
Create(training *Training) error
|
|
FindByID(id TrainingID) (*Training, error)
|
|
FindAll() ([]Training, error)
|
|
Update(training *Training) error
|
|
Delete(id TrainingID) error
|
|
}
|
|
|
|
type InMemoryTrainingRepository struct {
|
|
trainings map[TrainingID]Training
|
|
}
|
|
|
|
func NewInMemoryTrainingRepository() *InMemoryTrainingRepository {
|
|
repo := &InMemoryTrainingRepository{
|
|
trainings: make(map[TrainingID]Training),
|
|
}
|
|
|
|
repo.Create(&Training{
|
|
Name: "Kubernetes",
|
|
Days: 2,
|
|
Description: "",
|
|
})
|
|
repo.Create(&Training{
|
|
Name: "Terraform",
|
|
Days: 1,
|
|
Description: "",
|
|
})
|
|
repo.Create(&Training{
|
|
Name: "RKE2",
|
|
Days: 1,
|
|
Description: "",
|
|
})
|
|
repo.Create(&Training{
|
|
Name: "GitHub Actions",
|
|
Days: 1,
|
|
Description: "",
|
|
})
|
|
repo.Create(&Training{
|
|
Name: "GitLab CI",
|
|
Days: 1,
|
|
Description: "",
|
|
})
|
|
repo.Create(&Training{
|
|
Name: "Prometheus",
|
|
Days: 2,
|
|
Description: "",
|
|
})
|
|
|
|
return repo
|
|
}
|
|
|
|
func (r *InMemoryTrainingRepository) Create(training *Training) error {
|
|
training.ID = NewTrainingID()
|
|
r.trainings[training.ID] = *training
|
|
return nil
|
|
}
|
|
|
|
func (r *InMemoryTrainingRepository) FindByID(id TrainingID) (*Training, error) {
|
|
training, ok := r.trainings[id]
|
|
if !ok {
|
|
return nil, ErrTrainingNotFound
|
|
}
|
|
return &training, nil
|
|
}
|
|
|
|
func (r *InMemoryTrainingRepository) FindAll() ([]Training, error) {
|
|
|
|
trainings := make([]Training, 0, len(r.trainings))
|
|
for _, training := range r.trainings {
|
|
trainings = append(trainings, training)
|
|
}
|
|
return trainings, nil
|
|
}
|
|
|
|
func (r *InMemoryTrainingRepository) Update(training *Training) error {
|
|
r.trainings[training.ID] = *training
|
|
return nil
|
|
}
|
|
|
|
func (r *InMemoryTrainingRepository) Delete(id TrainingID) error {
|
|
_, ok := r.trainings[id]
|
|
if !ok {
|
|
return ErrTrainingNotFound
|
|
}
|
|
|
|
delete(r.trainings, id)
|
|
return nil
|
|
}
|