mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-08-03 18:29:14 +02:00
fix:#46 added delete groups
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user