package model import ( "errors" "strings" "time" ) // TrainingSet ist eine benannte Zusammenstellung von Übungen. type TrainingSet struct { ID int64 `json:"id"` Name string `json:"name"` Exercises []Exercise `json:"exercises"` CreatedAt time.Time `json:"created_at"` DeletedAt *time.Time `json:"deleted_at,omitempty"` } // CreateSetRequest enthält die Felder zum Anlegen eines Sets. type CreateSetRequest struct { Name string `json:"name"` ExerciseIDs []int64 `json:"exercise_ids"` } // Validate prüft und normalisiert den Request. func (r *CreateSetRequest) Validate() error { r.Name = strings.TrimSpace(r.Name) if len(r.Name) == 0 || len(r.Name) > 100 { return errors.New("Name muss 1–100 Zeichen lang sein") } if len(r.ExerciseIDs) == 0 { return errors.New("Mindestens eine Übung erforderlich") } return nil } // UpdateSetRequest enthält die Felder zum Aktualisieren eines Sets. type UpdateSetRequest struct { Name string `json:"name"` ExerciseIDs []int64 `json:"exercise_ids"` } // Validate prüft und normalisiert den Request. func (r *UpdateSetRequest) Validate() error { r.Name = strings.TrimSpace(r.Name) if len(r.Name) == 0 || len(r.Name) > 100 { return errors.New("Name muss 1–100 Zeichen lang sein") } if len(r.ExerciseIDs) == 0 { return errors.New("Mindestens eine Übung erforderlich") } return nil }