feat:#150 added slog for more functions and improved return signature

This commit is contained in:
Elmar Kresse
2024-01-22 12:17:53 +01:00
parent 95a256929d
commit 70170054e8
4 changed files with 48 additions and 19 deletions

View File

@@ -49,7 +49,11 @@ func AddRoutes(app *pocketbase.PocketBase) {
Method: http.MethodGet,
Path: "/api/fetch/groups",
Handler: func(c echo.Context) error {
return v1.SeminarGroups(c, app)
groups, err := v1.FetchSeminarGroups(app)
if err != nil {
return c.JSON(http.StatusInternalServerError, "Failed to fetch seminar groups")
}
return c.JSON(http.StatusOK, groups)
},
Middlewares: []echo.MiddlewareFunc{
apis.ActivityLogger(app),

View File

@@ -8,6 +8,8 @@ import (
"htwkalender/model"
"htwkalender/service/db"
"htwkalender/service/functions"
"io"
"log/slog"
"net/http"
"regexp"
"strconv"
@@ -21,9 +23,14 @@ import (
// FetchAndUpdateSportEvents fetches all sport events from the HTWK sport website
// it deletes them first and then saves them to the database
// It returns all saved events
func FetchAndUpdateSportEvents(app *pocketbase.PocketBase) []model.Event {
func FetchAndUpdateSportEvents(app *pocketbase.PocketBase) ([]model.Event, error) {
sportCourseLinks, err := fetchAllAvailableSportCourses()
if err != nil {
return nil, err
}
var sportCourseLinks = fetchAllAvailableSportCourses()
sportEntries := fetchHTWKSportCourses(sportCourseLinks)
events := formatEntriesToEvents(sportEntries)
@@ -43,7 +50,7 @@ func FetchAndUpdateSportEvents(app *pocketbase.PocketBase) []model.Event {
// get all events from database where name = Feiertage und lehrveranstaltungsfreie Tage
holidays, err := db.GetAllModulesByNameAndDateRange(app, "Feiertage und lehrveranstaltungsfreie Tage", earliestDate, latestDate)
if err != nil {
return nil
return nil, err
}
// remove all events that have same year, month and day as items in holidays
@@ -60,17 +67,17 @@ func FetchAndUpdateSportEvents(app *pocketbase.PocketBase) []model.Event {
// @TODO: delete and save events in one transaction and it only should delete events that are not in the new events list and save events that are not in the database
err = db.DeleteAllEventsForCourse(app, "Sport", functions.GetCurrentSemesterString())
if err != nil {
return nil
return nil, err
}
// save events to database
savedEvents, err := db.SaveEvents(events, app)
if err != nil {
return nil
return nil, err
}
return savedEvents
return savedEvents, nil
}
@@ -305,13 +312,14 @@ func checkSemester(date time.Time) string {
}
// fetch the main page where all sport courses are listed and extract all links to the sport courses
func fetchAllAvailableSportCourses() []string {
func fetchAllAvailableSportCourses() ([]string, error) {
var url = "https://sport.htwk-leipzig.de/sportangebote"
var doc, err = htmlRequest(url)
if err != nil {
return nil
slog.Error("Error while fetching sport courses from webpage", err)
return nil, err
}
// link list of all sport courses
@@ -325,7 +333,7 @@ func fetchAllAvailableSportCourses() []string {
}
})
return links
return links, nil
}
// fetchAllHTWKSportCourses fetches all sport courses from the given links.
@@ -372,7 +380,13 @@ func htmlRequest(url string) (*goquery.Document, error) {
if err != nil {
return nil, err
}
defer resp.Body.Close()
defer func(Body io.ReadCloser) {
readErr := Body.Close()
if readErr != nil {
slog.Error("Error while closing response body from html request", readErr)
return
}
}(resp.Body)
doc, err := goquery.NewDocumentFromReader(resp.Body)
if err != nil {

View File

@@ -3,13 +3,12 @@ package v1
import (
"encoding/xml"
"fmt"
"github.com/labstack/echo/v5"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/apis"
"github.com/pocketbase/pocketbase/models"
"htwkalender/model"
"htwkalender/service/db"
"io"
"log/slog"
"net/http"
)
@@ -41,12 +40,23 @@ func getSeminarHTML(semester string) (string, error) {
}
func SeminarGroups(c echo.Context, app *pocketbase.PocketBase) error {
func FetchSeminarGroups(app *pocketbase.PocketBase) ([]*models.Record, error) {
var groups []model.SeminarGroup
resultSummer, _ := getSeminarHTML("ss")
resultSummer, err := getSeminarHTML("ss")
if err != nil {
slog.Error("Error while fetching seminar groups for winter semester", err)
return nil, err
}
resultWinter, _ := getSeminarHTML("ws")
if err != nil {
slog.Error("Error while fetching seminar groups for summer semester", err)
return nil, err
}
groups = parseSeminarGroups(resultSummer)
groups = append(groups, parseSeminarGroups(resultWinter)...)
@@ -55,16 +65,18 @@ func SeminarGroups(c echo.Context, app *pocketbase.PocketBase) error {
collection, dbError := db.FindCollection(app, "groups")
if dbError != nil {
return apis.NewNotFoundError("Collection not found", dbError)
slog.Error("Error while searching collection groups", dbError)
return nil, err
}
var insertedGroups []*models.Record
insertedGroups, dbError = db.SaveGroups(groups, collection, app)
if dbError != nil {
return apis.NewNotFoundError("Records could not be saved", dbError)
slog.Error("Error while saving groups", dbError)
return nil, err
}
return c.JSON(http.StatusOK, insertedGroups)
return insertedGroups, nil
}
func removeDuplicates(groups []model.SeminarGroup) []model.SeminarGroup {

View File

@@ -1 +0,0 @@
package logger