feat: extend equipment and workout models with service tracking
This commit is contained in:
@@ -3,6 +3,8 @@ package equipment
|
||||
import (
|
||||
"errors"
|
||||
"rideaware/pkg/database"
|
||||
"time"
|
||||
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
@@ -53,4 +55,29 @@ func (r *Repository) UpdateEquipment(equipment *Equipment) error {
|
||||
func (r *Repository) DeleteEquipment(id, userID uint) error {
|
||||
return database.DB.Where("id = ? AND user_id = ?", id, userID).
|
||||
Delete(&Equipment{}).Error
|
||||
}
|
||||
|
||||
// IncrementMileage atomically adds distance and duration to equipment totals.
|
||||
func (r *Repository) IncrementMileage(id, userID uint, distance float64, duration int) error {
|
||||
return database.DB.Model(&Equipment{}).
|
||||
Where("id = ? AND user_id = ?", id, userID).
|
||||
Updates(map[string]interface{}{
|
||||
"total_distance": gorm.Expr("total_distance + ?", distance),
|
||||
"total_duration": gorm.Expr("total_duration + ?", duration),
|
||||
"total_rides": gorm.Expr("total_rides + 1"),
|
||||
"distance_since_service": gorm.Expr("distance_since_service + ?", distance),
|
||||
"duration_since_service": gorm.Expr("duration_since_service + ?", duration),
|
||||
}).Error
|
||||
}
|
||||
|
||||
// ResetServiceCounters resets the service tracking counters after servicing.
|
||||
func (r *Repository) ResetServiceCounters(id, userID uint) error {
|
||||
now := time.Now()
|
||||
return database.DB.Model(&Equipment{}).
|
||||
Where("id = ? AND user_id = ?", id, userID).
|
||||
Updates(map[string]interface{}{
|
||||
"distance_since_service": 0,
|
||||
"duration_since_service": 0,
|
||||
"last_service_date": now,
|
||||
}).Error
|
||||
}
|
||||
Reference in New Issue
Block a user