Merge branch 'refs/heads/41-bug-all-events-vanish-if-the-official-endpoint-is-offline' into 46-event-update-issue-with-old-courses-in-group-table

# Conflicts:
#	services/data-manager/service/addRoute.go
#	services/data-manager/service/course/courseFunctions.go
#	services/data-manager/service/events/courseService.go
#	services/data-manager/service/events/eventService.go
This commit is contained in:
Elmar Kresse
2024-07-06 15:42:19 +02:00
13 changed files with 350 additions and 125 deletions

View File

@@ -23,32 +23,51 @@ import (
"htwkalender/data-manager/service/functions"
)
func GetAllCourses(app *pocketbase.PocketBase) []string {
return db.GetAllCourses(app)
// CourseService defines the methods to be implemented
type CourseService interface {
GetAllCourses() []string
GetAllCoursesForSemester(semester string) []string
GetAllCoursesForSemesterWithEvents(semester string) ([]string, error)
}
func GetAllCoursesForSemester(app *pocketbase.PocketBase, semester string) []model.SeminarGroup {
return db.GetAllCoursesForSemester(app, semester)
// PocketBaseCourseService is a struct that implements the CourseService interface
type PocketBaseCourseService struct {
app *pocketbase.PocketBase
}
func GetAllCoursesForSemesterWithEvents(app *pocketbase.PocketBase, semester string) ([]string, error) {
courses, err := db.GetAllCoursesForSemesterWithEvents(app, semester)
// NewPocketBaseCourseService creates a new PocketBaseCourseService
func NewPocketBaseCourseService(app *pocketbase.PocketBase) *PocketBaseCourseService {
return &PocketBaseCourseService{app: app}
}
// GetAllCourses returns all courses
func (s *PocketBaseCourseService) GetAllCourses() []string {
return db.GetAllCourses(s.app)
}
// GetAllCoursesForSemester returns all courses for a specific semester
func (s *PocketBaseCourseService) GetAllCoursesForSemester(semester string) []model.SeminarGroup {
return db.GetAllCoursesForSemester(s.app, semester)
}
// GetAllCoursesForSemesterWithEvents returns all courses for a specific semester with events
func (s *PocketBaseCourseService) GetAllCoursesForSemesterWithEvents(semester string) ([]string, error) {
courses, err := db.GetAllCoursesForSemesterWithEvents(s.app, semester)
if err != nil {
return nil, err
} else {
// remove empty courses like " " or ""
courses = removeEmptyCourses(courses)
return courses, nil
}
// remove empty courses like " " or ""
courses = removeEmptyCourses(courses)
return courses, nil
}
// removeEmptyCourses removes empty courses from the list of courses
func removeEmptyCourses(courses []string) []string {
var filteredCourses []string
for index, course := range courses {
for _, course := range courses {
if !functions.OnlyWhitespace(course) || len(course) != 0 {
filteredCourses = append(filteredCourses, courses[index])
filteredCourses = append(filteredCourses, course)
}
}
return filteredCourses