+save surfer
This commit is contained in:
parent
086be8ccc2
commit
317fac17b2
5 changed files with 113 additions and 23 deletions
|
@ -66,3 +66,22 @@ func (db *DB) loadHeats() []Heat {
|
||||||
|
|
||||||
return heats
|
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
|
||||||
|
}
|
||||||
|
|
|
@ -91,4 +91,6 @@ func (app *App) RegisterApiRoutes() {
|
||||||
// api.POST("/deleteheat", app.DeleteHeat)
|
// api.POST("/deleteheat", app.DeleteHeat)
|
||||||
api.GET("/loadheats", app.LoadHeats)
|
api.GET("/loadheats", app.LoadHeats)
|
||||||
// api.GET("/runningheat", app.LoadRunning)
|
// api.GET("/runningheat", app.LoadRunning)
|
||||||
|
api.GET("/loadsurfers", app.LoadSurfers)
|
||||||
|
api.POST("/savesurfer", app.SaveSurfer)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,53 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
type Athlete struct {
|
type Athlete struct {
|
||||||
Firstname string `json:"firstname"`
|
Firstname string `json:"firstname"`
|
||||||
Lastname string `json:"lastname"`
|
Lastname string `json:"lastname"`
|
||||||
Category string `json:"category"`
|
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"})
|
||||||
|
}
|
||||||
|
|
|
@ -176,12 +176,6 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function capitalize(element, elementName) {
|
|
||||||
element[elementName] =
|
|
||||||
element[elementName].charAt(0).toUpperCase() + element[elementName].slice(1);
|
|
||||||
console.log(`element: ${element[elementName]}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
resetHeat();
|
resetHeat();
|
||||||
loadHeats();
|
loadHeats();
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<script>
|
<script>
|
||||||
|
import { onMount } from 'svelte';
|
||||||
import Header from '$lib/header-setup.svelte';
|
import Header from '$lib/header-setup.svelte';
|
||||||
import Button from '$lib/button.svelte';
|
import Button from '$lib/button.svelte';
|
||||||
import Select from '$lib/select.svelte';
|
import Select from '$lib/select.svelte';
|
||||||
|
@ -7,13 +8,17 @@
|
||||||
|
|
||||||
$: surfers = [];
|
$: surfers = [];
|
||||||
|
|
||||||
let surfer = {
|
let surfer = {};
|
||||||
|
|
||||||
|
$: value = '';
|
||||||
|
|
||||||
|
function resetSurfer() {
|
||||||
|
surfer = {
|
||||||
firstname: '',
|
firstname: '',
|
||||||
lastname: '',
|
lastname: '',
|
||||||
category: ''
|
category: ''
|
||||||
};
|
};
|
||||||
|
}
|
||||||
$: value = '';
|
|
||||||
|
|
||||||
async function loadSurfers() {
|
async function loadSurfers() {
|
||||||
const res = await fetch(`/api/loadsurfers`);
|
const res = await fetch(`/api/loadsurfers`);
|
||||||
|
@ -24,17 +29,41 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onclick() {
|
async function save() {
|
||||||
alert('clicked');
|
if (surfer.firstname === '') {
|
||||||
|
alert('Must have a name');
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function reset() {
|
if (surfer.lastname === '') {
|
||||||
surfer = {
|
alert('Must have a name');
|
||||||
firstname: '',
|
return;
|
||||||
lastname: '',
|
|
||||||
category: ''
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (surfer.category === '') {
|
||||||
|
alert('Must have a category');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const res = await fetch(`/api/savesurfer`, {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify(surfer),
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(`retval: ${JSON.stringify(res)}`);
|
||||||
|
console.log(JSON.stringify(surfer));
|
||||||
|
|
||||||
|
resetSurfer();
|
||||||
|
loadSurfers();
|
||||||
|
}
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
resetSurfer();
|
||||||
|
loadSurfers();
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Header title="Surfer Edit" />
|
<Header title="Surfer Edit" />
|
||||||
|
@ -45,8 +74,8 @@
|
||||||
<Select label="category" id="category" options={$categories} bind:value={surfer.category} />
|
<Select label="category" id="category" options={$categories} bind:value={surfer.category} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Button handleClick={onclick} label="SAVE"></Button>
|
<Button handleClick={save} label="SAVE"></Button>
|
||||||
<Button handleClick={reset} label="Reset"></Button>
|
<Button handleClick={resetSurfer} label="Reset"></Button>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
|
@ -55,5 +84,5 @@
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
{#each surfers as s}
|
{#each surfers as s}
|
||||||
<label for={s}>{JSON.stringify(s)}</label>
|
<label for={s}>{s.firstname} {s.lastname} - {s.category}</label><br />
|
||||||
{/each}}
|
{/each}}
|
||||||
|
|
Loading…
Add table
Reference in a new issue