This commit is contained in:
Christoph K.
2026-04-07 09:49:17 +02:00
parent 063aa67615
commit 4db170b467
37 changed files with 269 additions and 48 deletions

View File

@@ -157,6 +157,8 @@ func (s *Store) CreateLog(sessionID int64, req *model.CreateLogRequest) (*model.
return nil, err
}
// exercise_name wird denormalisiert gespeichert, damit historische Logs
// erhalten bleiben wenn die Übung später gelöscht wird.
var exerciseName string
err := s.db.QueryRow(`SELECT name FROM exercises WHERE id = ? AND deleted_at IS NULL`, req.ExerciseID).Scan(&exerciseName)
if err == sql.ErrNoRows {
@@ -197,6 +199,7 @@ func (s *Store) UpdateLog(sessionID, logID int64, req *model.UpdateLogRequest) (
return nil, nil
}
// Dynamisches UPDATE: nur explizit übergebene Felder werden geändert (Partial Update).
updates := []string{}
args := []any{}
if req.WeightKg != nil {
@@ -293,7 +296,8 @@ func (s *Store) DeleteSession(id, userID int64) error {
return nil
}
// checkSessionOpen prüft ob eine Session offen ist.
// checkSessionOpen prüft ob eine Session existiert und noch nicht beendet wurde.
// Gibt einen Fehler mit "SESSION_CLOSED" zurück wenn ended_at bereits gesetzt ist.
func (s *Store) checkSessionOpen(sessionID int64) error {
var endedAt *string
err := s.db.QueryRow(`SELECT ended_at FROM sessions WHERE id = ?`, sessionID).Scan(&endedAt)
@@ -309,7 +313,7 @@ func (s *Store) checkSessionOpen(sessionID int64) error {
return nil
}
// getLog gibt einen einzelnen Log-Eintrag zurück.
// getLog lädt einen einzelnen Session-Log-Eintrag anhand seiner ID.
func (s *Store) getLog(id int64) (*model.SessionLog, error) {
var log model.SessionLog
err := s.db.QueryRow(`
@@ -325,7 +329,7 @@ func (s *Store) getLog(id int64) (*model.SessionLog, error) {
return &log, nil
}
// getSessionLogs gibt alle Logs einer Session zurück.
// getSessionLogs lädt alle Logs einer Session, sortiert nach Übung und Satznummer.
func (s *Store) getSessionLogs(sessionID int64) ([]model.SessionLog, error) {
rows, err := s.db.Query(`
SELECT id, session_id, exercise_id, exercise_name, set_number, weight_kg, reps, note, logged_at