53 lines
1.4 KiB
Go
Executable File
53 lines
1.4 KiB
Go
Executable File
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
|
||
}
|