package services import ( "log" "time" "whimsoc/vindn-backend/models" "whimsoc/vindn-backend/repositories" "whimsoc/vindn-backend/utils" ) // Events older than this are pure housekeeping — the frontend's display // queries already hide anything past its own end_date immediately, so this // buffer is just how long a soft-deleted event's detail page (e.g. a // bookmarked or shared link) keeps resolving before it's cleaned up too. const cleanupAfterDays = 90 func FetchEvents() ([]models.Event, error) { return utils.FetchDataFromAPI() } type EventService struct { repo repositories.EventRepository } func NewEventService(repo repositories.EventRepository) *EventService { return &EventService{repo} } func (s *EventService) ImportEvents() error { events, err := utils.FetchDataFromAPI() if err != nil { return err } log.Println("Data will be saved.") for _, event := range events { if err := s.repo.Save(&event); err != nil { log.Println("Fehler beim Speichern:", err) } } log.Println("Data is saved.") return nil } // CleanupOldEvents soft-deletes events that ended more than // cleanupAfterDays ago, so the events table doesn't grow forever — the ODH // import only ever upserts and never removes rows on its own. func (s *EventService) CleanupOldEvents() error { cutoff := time.Now().AddDate(0, 0, -cleanupAfterDays).Format("2006-01-02") affected, err := s.repo.SoftDeleteEndedBefore(cutoff) if err != nil { return err } log.Printf("Cleanup: soft-deleted %d event(s) that ended before %s", affected, cutoff) return nil }