84 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
	
		
			1.7 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,
 | |
| 	})
 | |
| 	repo.Create(&Training{
 | |
| 		Name: "Terraform",
 | |
| 		Days: 1,
 | |
| 	})
 | |
| 	repo.Create(&Training{
 | |
| 		Name: "RKE2",
 | |
| 		Days: 1,
 | |
| 	})
 | |
| 	repo.Create(&Training{
 | |
| 		Name: "GitHub Actions",
 | |
| 		Days: 1,
 | |
| 	})
 | |
| 	repo.Create(&Training{
 | |
| 		Name: "GitLab CI",
 | |
| 		Days: 1,
 | |
| 	})
 | |
| 	repo.Create(&Training{
 | |
| 		Name: "Prometheus",
 | |
| 		Days: 2,
 | |
| 	})
 | |
| 
 | |
| 	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
 | |
| }
 |