fix:#46 added delete groups

This commit is contained in:
Elmar Kresse
2024-07-05 12:27:23 +02:00
parent aa7703d926
commit a5a8c2a58d
2 changed files with 47 additions and 65 deletions

View File

@@ -20,7 +20,6 @@ import (
"encoding/xml"
"fmt"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/models"
"htwkalender/data-manager/model"
"htwkalender/data-manager/service/db"
"htwkalender/data-manager/service/functions"
@@ -58,8 +57,8 @@ func getSeminarHTML(semester string) (string, error) {
}
func FetchSeminarGroups(app *pocketbase.PocketBase) ([]*models.Record, error) {
var groups []model.SeminarGroup
func FetchSeminarGroups(app *pocketbase.PocketBase) (db.SeminarGroups, error) {
var groups db.SeminarGroups
semesterString := functions.CalculateSemesterList(time.RealClock{})
var results [2]string
@@ -77,26 +76,23 @@ func FetchSeminarGroups(app *pocketbase.PocketBase) ([]*models.Record, error) {
// filter duplicates
groups = removeDuplicates(groups)
collection, dbError := db.FindCollection(app, "groups")
insertedGroups, dbError := db.SaveGroups(groups, app)
if dbError != nil {
slog.Error("Error while searching collection groups", "error", dbError)
return nil, err
}
var insertedGroups []*models.Record
insertedGroups, dbError = db.SaveGroups(groups, collection, app)
if dbError != nil {
slog.Error("Error while saving groups", "error", dbError)
slog.Error("FetchSeminarGroups", "error", dbError)
return nil, err
}
return insertedGroups, nil
}
func removeDuplicates(groups []model.SeminarGroup) []model.SeminarGroup {
var uniqueGroups []model.SeminarGroup
func removeDuplicates(groups db.SeminarGroups) db.SeminarGroups {
uniqueGroups := make(db.SeminarGroups, 0, len(groups))
seen := make(map[string]struct{}) // Use an empty struct to minimize memory usage
for _, group := range groups {
if !contains(uniqueGroups, group) {
key := group.Course + group.Semester
if _, exists := seen[key]; !exists {
seen[key] = struct{}{}
uniqueGroups = append(uniqueGroups, group)
}
}
@@ -112,7 +108,7 @@ func contains(groups []model.SeminarGroup, group model.SeminarGroup) bool {
return false
}
func parseSeminarGroups(result string, semester string) []model.SeminarGroup {
func parseSeminarGroups(result string, semester string) db.SeminarGroups {
var studium model.Studium
err := xml.Unmarshal([]byte(result), &studium)
@@ -120,11 +116,11 @@ func parseSeminarGroups(result string, semester string) []model.SeminarGroup {
return nil
}
var seminarGroups []model.SeminarGroup
var seminarGroups db.SeminarGroups
for _, faculty := range studium.Faculty {
for _, Studiengang := range faculty.Studiengang {
for _, Studienrichtung := range Studiengang.Semgrp {
seminarGroup := model.SeminarGroup{
seminarGroup := db.SeminarGroup{
University: "HTWK-Leipzig",
GroupShortcut: Studiengang.Name,
GroupId: Studiengang.ID,
@@ -133,7 +129,7 @@ func parseSeminarGroups(result string, semester string) []model.SeminarGroup {
FacultyId: faculty.ID,
Semester: semester,
}
seminarGroups = append(seminarGroups, seminarGroup)
seminarGroups = append(seminarGroups, &seminarGroup)
}
}
}