wrote descriptions and refactored for new module response with information

This commit is contained in:
Elmar Kresse
2023-10-01 13:31:02 +02:00
parent f89416170d
commit 54731c0334
4 changed files with 115 additions and 27 deletions

View File

@@ -100,24 +100,17 @@ func GetPlanForModules(app *pocketbase.PocketBase, modules []model.FeedCollectio
return events
}
func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester string) ([]string, error) {
var events []struct {
Name string `db:"Name" json:"Name"`
}
var eventArray []string
func GetAllModulesForCourse(app *pocketbase.PocketBase, course string, semester string) (model.Events, error) {
var events model.Events
// get all events from event records in the events collection
err := app.Dao().DB().Select("Name").From("events").Where(dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Distinct(true).All(&events)
err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Distinct(true).All(&events)
if err != nil {
print("Error while getting events from database: ", err)
return eventArray, err
return nil, err
}
for _, event := range events {
eventArray = append(eventArray, event.Name)
}
return eventArray, nil
return events, nil
}
func GetAllModulesDistinct(app *pocketbase.PocketBase) (model.Events, error) {
@@ -131,3 +124,26 @@ func GetAllModulesDistinct(app *pocketbase.PocketBase) (model.Events, error) {
return events, nil
}
func DeleteAllEventsForCourse(app *pocketbase.PocketBase, course string, semester string) error {
_, err := app.Dao().DB().Delete("events", dbx.NewExp("course = {:course} AND semester = {:semester}", dbx.Params{"course": course, "semester": semester})).Execute()
if err != nil {
print("Error while deleting events from database: ", err)
return err
}
return nil
}
func FindAllEventsByModule(app *pocketbase.PocketBase, moduleName string) (model.Events, error) {
var events model.Events
err := app.Dao().DB().Select("*").From("events").Where(dbx.NewExp("Name = {:moduleName}", dbx.Params{"moduleName": moduleName})).All(&events)
if err != nil {
print("Error while getting events from database: ", err)
return nil, err
}
return events, nil
}

View File

@@ -1,12 +1,10 @@
package events
import (
"github.com/labstack/echo/v5"
"github.com/pocketbase/pocketbase"
"htwkalender/service/db"
)
func GetAllCourses(app *pocketbase.PocketBase, c echo.Context) error {
courses := db.GetAllCourses(app)
return c.JSON(200, courses)
func GetAllCourses(app *pocketbase.PocketBase) []string {
return db.GetAllCourses(app)
}

View File

@@ -3,21 +3,18 @@ package events
import (
"github.com/labstack/echo/v5"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/apis"
"htwkalender/model"
"htwkalender/service/db"
"htwkalender/service/fetch"
"htwkalender/service/functions"
)
func GetModulesForCourseDistinct(app *pocketbase.PocketBase, c echo.Context, course string, semester string) error {
func GetModulesForCourseDistinct(app *pocketbase.PocketBase, course string, semester string) (model.Events, error) {
modules, err := db.GetAllModulesForCourse(app, course, semester)
replaceEmptyEntryInStringArray(modules, "Sonderveranstaltungen")
if err != nil {
return c.JSON(400, err)
} else {
return c.JSON(200, modules)
}
replaceEmptyEntry(modules, "Sonderveranstaltungen")
return modules, err
}
func replaceEmptyEntryInStringArray(modules []string, replacement string) {
@@ -49,3 +46,80 @@ func GetAllModulesDistinct(app *pocketbase.PocketBase, c echo.Context) error {
return c.JSON(200, modules)
}
}
// GetModuleByName returns a module by its name
// If the module does not exist, an error is returned
// If the module exists, the module is returned
// Module is a struct that exists in database as events
func GetModuleByName(app *pocketbase.PocketBase, name string) (model.Module, error) {
events, err := db.FindAllEventsByModule(app, name)
if err != nil || len(events) == 0 {
return model.Module{}, err
} else {
return model.Module{
Name: name,
Events: events,
Prof: events[0].Prof,
Course: events[0].Course,
Semester: events[0].Semester,
}, nil
}
}
// DeleteAllEventsByCourseAndSemester deletes all events for a course and a semester
// If the deletion was successful, nil is returned
// If the deletion was not successful, an error is returned
func DeleteAllEventsByCourseAndSemester(app *pocketbase.PocketBase, course string, semester string) error {
err := db.DeleteAllEventsForCourse(app, course, semester)
if err != nil {
return err
} else {
return nil
}
}
// UpdateModulesForCourse updates all modules for a course
// Does Updates for ws and ss semester sequentially
// Update runs through the following steps:
// 1. Delete all events for the course and the semester
// 2. Fetch all events for the course and the semester
// 3. Save all events for the course and the semester
// If the update was successful, nil is returned
// If the update was not successful, an error is returned
func UpdateModulesForCourse(app *pocketbase.PocketBase, course string) error {
var err error
err = DeleteAllEventsByCourseAndSemester(app, course, "ws")
if err != nil {
return err
}
err = DeleteAllEventsByCourseAndSemester(app, course, "ss")
if err != nil {
return err
}
//new string array with one element (course)
var courses []string
courses = append(courses, course)
seminarGroups := fetch.GetSeminarGroupsEventsFromHTML(courses)
collection, dbError := db.FindCollection(app, "events")
if dbError != nil {
return apis.NewNotFoundError("Collection not found", dbError)
}
seminarGroups = fetch.ClearEmptySeminarGroups(seminarGroups)
seminarGroups = fetch.ReplaceEmptyEventNames(seminarGroups)
_, dbError = db.SaveEvents(seminarGroups, collection, app)
if dbError != nil {
return apis.NewNotFoundError("Events could not be saved", dbError)
}
return nil
}