Files
tp/serv_nginx/api_bb/internal/service/user_stats_service.go
T
valitovgaziz 910e6f5e49 new file: serv_nginx/api_bb/internal/repository/achievement_repository.go
modified:   serv_nginx/api_bb/internal/repository/personal_best_repository.go
	new file:   serv_nginx/api_bb/internal/service/achievement_service.go
	new file:   serv_nginx/api_bb/internal/service/personal_best_service.go
	new file:   serv_nginx/api_bb/internal/service/user_stats_service.go
add some services
2025-10-17 08:25:32 +05:00

45 lines
1.3 KiB
Go

// services/user_stats_service.go
package service
import (
"time"
"api_bb/internal/models"
"api_bb/internal/repository"
)
type UserStatsService struct {
userStatsRepo repository.UserStatsRepository
}
func NewUserStatsService(userStatsRepo repository.UserStatsRepository) *UserStatsService {
return &UserStatsService{
userStatsRepo: userStatsRepo,
}
}
func (s *UserStatsService) AddWorkout(userID uint, distance float64, duration int, workoutTime time.Time) error {
// Обновляем общую статистику
if err := s.userStatsRepo.IncrementWorkouts(userID, distance, duration); err != nil {
return err
}
// Обновляем серии
if err := s.userStatsRepo.UpdateStreaks(userID, workoutTime); err != nil {
return err
}
// Обновляем недельный и месячный пробег
if err := s.userStatsRepo.UpdateWeeklyDistance(userID, distance); err != nil {
return err
}
return s.userStatsRepo.UpdateMonthlyDistance(userID, distance)
}
func (s *UserStatsService) GetUserStats(userID uint) (*models.UserStatsResponse, error) {
return s.userStatsRepo.GetUserStatsResponse(userID)
}
func (s *UserStatsService) UpdatePersonalBest(userID uint, distanceType string, time string) error {
return s.userStatsRepo.UpdatePersonalBest(userID, distanceType, time)
}