fix:#16 added delete option and fixed uuid generation

This commit is contained in:
Elmar Kresse
2023-10-25 19:51:25 +02:00
parent 403e73cace
commit caa9415422
5 changed files with 107 additions and 4 deletions

View File

@@ -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,

View File

@@ -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

View File

@@ -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:

View File

@@ -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

View File

@@ -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)
}
})
}
}