diff --git a/backend/db.go b/backend/db.go
index f207084..353d75d 100644
--- a/backend/db.go
+++ b/backend/db.go
@@ -66,3 +66,22 @@ func (db *DB) loadHeats() []Heat {
return heats
}
+
+func (db *DB) loadSurfers() []Athlete {
+ records, err := db.Db.ReadAll("Surfers")
+ if err != nil {
+ fmt.Printf("read error: %+v", err)
+ }
+
+ athletes := make([]Athlete, 0)
+ for _, record := range records {
+ var athlete Athlete
+ err = json.Unmarshal([]byte(record), &athlete)
+ if err != nil {
+ fmt.Printf("decode error: %+v", err)
+ }
+ athletes = append(athletes, athlete)
+ }
+
+ return athletes
+}
diff --git a/backend/http.go b/backend/http.go
index 20effca..0c9d107 100644
--- a/backend/http.go
+++ b/backend/http.go
@@ -91,4 +91,6 @@ func (app *App) RegisterApiRoutes() {
// api.POST("/deleteheat", app.DeleteHeat)
api.GET("/loadheats", app.LoadHeats)
// api.GET("/runningheat", app.LoadRunning)
+ api.GET("/loadsurfers", app.LoadSurfers)
+ api.POST("/savesurfer", app.SaveSurfer)
}
diff --git a/backend/surfers.go b/backend/surfers.go
index e04def4..5aceb07 100644
--- a/backend/surfers.go
+++ b/backend/surfers.go
@@ -1,7 +1,53 @@
package main
+import (
+ "fmt"
+ "log"
+ "net/http"
+ "strings"
+
+ "github.com/gin-gonic/gin"
+)
+
type Athlete struct {
Firstname string `json:"firstname"`
Lastname string `json:"lastname"`
Category string `json:"category"`
}
+
+func surferName(athlete Athlete) string {
+ str := fmt.Sprintf("%s.%s.%s", athlete.Firstname, athlete.Lastname, athlete.Category)
+ str = strings.ReplaceAll(str, " ", "_")
+ return str
+}
+
+func (app *App) LoadSurfers(c *gin.Context) {
+ surfers := app.DB.loadSurfers()
+
+ c.JSON(http.StatusOK, surfers)
+
+ log.Printf("surfers: %+v", surfers)
+}
+
+func (app *App) SaveSurfer(c *gin.Context) {
+ var athlete Athlete
+
+ err := c.ShouldBind(&athlete)
+
+ if err != nil {
+ log.Printf("req error: %+v", err)
+ c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
+ return
+ }
+
+ log.Printf("heat: %+v", athlete)
+
+ err = app.DB.Write("Surfers", surferName(athlete), athlete)
+ if err != nil {
+ log.Printf("set error: %+v", err)
+ c.JSON(http.StatusInternalServerError, gin.H{"status": fmt.Sprintf("Error: %+v", err)})
+ return
+ }
+
+ c.JSON(http.StatusOK, gin.H{"status": "saved"})
+}
diff --git a/frontend/src/routes/setup/+page.svelte b/frontend/src/routes/setup/+page.svelte
index a66453b..8e003ea 100644
--- a/frontend/src/routes/setup/+page.svelte
+++ b/frontend/src/routes/setup/+page.svelte
@@ -176,12 +176,6 @@
return false;
}
- function capitalize(element, elementName) {
- element[elementName] =
- element[elementName].charAt(0).toUpperCase() + element[elementName].slice(1);
- console.log(`element: ${element[elementName]}`);
- }
-
onMount(() => {
resetHeat();
loadHeats();
diff --git a/frontend/src/routes/surfers/+page.svelte b/frontend/src/routes/surfers/+page.svelte
index a189b6d..b52def9 100644
--- a/frontend/src/routes/surfers/+page.svelte
+++ b/frontend/src/routes/surfers/+page.svelte
@@ -1,4 +1,5 @@