mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-08-02 17:59:14 +02:00
fix:#16 added delete option and fixed uuid generation
This commit is contained in:
@@ -33,6 +33,24 @@ func AddRoutes(app *pocketbase.PocketBase) {
|
|||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
|
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
|
||||||
|
_, err := e.Router.AddRoute(echo.Route{
|
||||||
|
Method: http.MethodDelete,
|
||||||
|
Path: "/api/modules",
|
||||||
|
Handler: func(c echo.Context) error {
|
||||||
|
return events.DeleteAllEvents(app)
|
||||||
|
},
|
||||||
|
Middlewares: []echo.MiddlewareFunc{
|
||||||
|
apis.ActivityLogger(app),
|
||||||
|
apis.RequireAdminAuth(),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
|
app.OnBeforeServe().Add(func(e *core.ServeEvent) error {
|
||||||
_, err := e.Router.AddRoute(echo.Route{
|
_, err := e.Router.AddRoute(echo.Route{
|
||||||
Method: http.MethodGet,
|
Method: http.MethodGet,
|
||||||
|
@@ -179,6 +179,17 @@ func DeleteAllEventsForCourse(app *pocketbase.PocketBase, course string, semeste
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteAllEvents(app *pocketbase.PocketBase) error {
|
||||||
|
|
||||||
|
_, err := app.Dao().DB().Delete("events", dbx.NewExp("1=1")).Execute()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func FindAllEventsByModule(app *pocketbase.PocketBase, moduleName string) (model.Events, error) {
|
func FindAllEventsByModule(app *pocketbase.PocketBase, moduleName string) (model.Events, error) {
|
||||||
var events model.Events
|
var events model.Events
|
||||||
|
|
||||||
|
@@ -75,6 +75,15 @@ func DeleteAllEventsByCourseAndSemester(app *pocketbase.PocketBase, course strin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteAllEvents(app *pocketbase.PocketBase) error {
|
||||||
|
err := db.DeleteAllEvents(app)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// UpdateModulesForCourse updates all modules for a course
|
// UpdateModulesForCourse updates all modules for a course
|
||||||
// Does Updates for ws and ss semester sequentially
|
// Does Updates for ws and ss semester sequentially
|
||||||
// Update runs through the following steps:
|
// Update runs through the following steps:
|
||||||
|
@@ -96,21 +96,22 @@ func parseSeminarGroup(result string) model.SeminarGroup {
|
|||||||
splitEventsByWeekVal := splitEventsByWeek(eventsWithCombinedWeeks)
|
splitEventsByWeekVal := splitEventsByWeek(eventsWithCombinedWeeks)
|
||||||
events := splitEventsBySingleWeek(splitEventsByWeekVal)
|
events := splitEventsBySingleWeek(splitEventsByWeekVal)
|
||||||
semesterString := findFirstSpanWithClass(table, "header-0-2-0").FirstChild.Data
|
semesterString := findFirstSpanWithClass(table, "header-0-2-0").FirstChild.Data
|
||||||
|
course := findFirstSpanWithClass(table, "header-2-0-1").FirstChild.Data
|
||||||
semester, year := extractSemesterAndYear(semesterString)
|
semester, year := extractSemesterAndYear(semesterString)
|
||||||
events = convertWeeksToDates(events, semester, year)
|
events = convertWeeksToDates(events, semester, year)
|
||||||
events = generateUUIDs(events)
|
events = generateUUIDs(events, course)
|
||||||
var seminarGroup = model.SeminarGroup{
|
var seminarGroup = model.SeminarGroup{
|
||||||
University: findFirstSpanWithClass(table, "header-1-0-0").FirstChild.Data,
|
University: findFirstSpanWithClass(table, "header-1-0-0").FirstChild.Data,
|
||||||
Course: findFirstSpanWithClass(table, "header-2-0-1").FirstChild.Data,
|
Course: course,
|
||||||
Events: events,
|
Events: events,
|
||||||
}
|
}
|
||||||
return seminarGroup
|
return seminarGroup
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateUUIDs(events []model.Event) []model.Event {
|
func generateUUIDs(events []model.Event, course string) []model.Event {
|
||||||
for i, event := range events {
|
for i, event := range events {
|
||||||
// generate a hash value from the event name, course and semester
|
// generate a hash value from the event name, course and semester
|
||||||
hash := uuid.NewSHA1(uuid.NameSpaceOID, []byte(event.Name+event.Course+event.Semester))
|
hash := uuid.NewSHA1(uuid.NameSpaceOID, []byte(event.Name+course))
|
||||||
events[i].UUID = hash.String()
|
events[i].UUID = hash.String()
|
||||||
}
|
}
|
||||||
return events
|
return events
|
||||||
|
@@ -118,3 +118,67 @@ func Test_replaceEmptyEventNames(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_generateUUIDs(t *testing.T) {
|
||||||
|
type args struct {
|
||||||
|
events []model.Event
|
||||||
|
}
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
args args
|
||||||
|
want []model.Event
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "Test 1",
|
||||||
|
args: args{
|
||||||
|
events: []model.Event{
|
||||||
|
{
|
||||||
|
Name: " Arbeitssicherheit / Rechtsformen von Unternehmen B435 SBB (wpf) & B348 BIB (pf) 5. FS",
|
||||||
|
Course: "21BIB-2b",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: []model.Event{
|
||||||
|
{
|
||||||
|
Name: " Arbeitssicherheit / Rechtsformen von Unternehmen B435 SBB (wpf) & B348 BIB (pf) 5. FS",
|
||||||
|
Course: "21BIB-2b",
|
||||||
|
UUID: "81083480-bcf1-5452-af84-bb27d79282d8",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Test 2",
|
||||||
|
args: args{
|
||||||
|
events: []model.Event{
|
||||||
|
{
|
||||||
|
Name: " Arbeitssicherheit / Rechtsformen von Unternehmen B435 SBB (wpf) & B348 BIB (pf) 5. FS",
|
||||||
|
Course: "21BIB-3a",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: " Arbeitssicherheit / Rechtsformen von Unternehmen B435 SBB (wpf) & B348 BIB (pf) 5. FS",
|
||||||
|
Course: "21BIB-2b",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
want: []model.Event{
|
||||||
|
{
|
||||||
|
Name: " Arbeitssicherheit / Rechtsformen von Unternehmen B435 SBB (wpf) & B348 BIB (pf) 5. FS",
|
||||||
|
Course: "21BIB-3a",
|
||||||
|
UUID: "9f90d86b-a948-53b9-bbbc-5163acc1cf33",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: " Arbeitssicherheit / Rechtsformen von Unternehmen B435 SBB (wpf) & B348 BIB (pf) 5. FS",
|
||||||
|
Course: "21BIB-2b",
|
||||||
|
UUID: "81083480-bcf1-5452-af84-bb27d79282d8",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
if got := generateUUIDs(tt.args.events); !reflect.DeepEqual(got, tt.want) {
|
||||||
|
t.Errorf("generateUUIDs() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user