package main

// type Surfer struct {
// 	Dbid      string `json:"dbid"`
// 	Id        string `json:"id"`
// 	Firstname string `json:"firstname"`
// 	Lastname  string `json:"lastname"`
// }

/////////////  Surfers

// func (w *Webapp) GetSurfers(c *gin.Context) {
// 	var cursor uint64

// 	var surfersKeys []string

// 	cursor = 0

// 	log.Printf("start scanning %+v", c.ClientIP())
// 	for {
// 		var keys []string
// 		var err error
// 		log.Printf("scan: cursor = %d", cursor)
// 		keys, cursor, err = w.DB.Redis.Scan(w.DB.Ctx, cursor, "surfer:*", 10).Result()
// 		if err != nil {
// 			panic(err)
// 		}
// 		log.Printf("ret scan: cursor = %d", cursor)

// 		log.Printf("scan: %+v", keys)

// 		surfersKeys = append(surfersKeys, keys...)

// 		if cursor == 0 {
// 			log.Printf("end scan: cursor = %d", cursor)
// 			break
// 		}
// 	}

// 	var surfers []Surfer

// 	for u := range surfersKeys {
// 		surf := Surfer{}
// 		ret := w.DB.Redis.HMGet(w.DB.Ctx, surfersKeys[u], "firstname", "lastname", "id", "sex", "birthdate", "stance", "hometown")

// 		ret.Scan(&surf)
// 		surf.Dbid = strings.Split(surfersKeys[u], ":")[1]

// 		log.Printf("surfer: %+v", surf)
// 		surfers = append(surfers, surf)
// 	}

// 	slices.SortFunc(surfers,
// 		func(a, b Surfer) int {
// 			return cmp.Compare(a.Id, b.Id)
// 		})

// 	log.Printf("surfers: %+v", surfers)

// 	c.JSON(http.StatusOK, surfers)
// }

// func (w *Webapp) DeleteSurfer(c *gin.Context) {
// 	var surfer Surfer
// 	var err error

// 	err = c.ShouldBind(&surfer)
// 	if err != nil {
// 		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
// 		return
// 	}

// 	id := CalcId(surfer.Firstname+surfer.Lastname, _MaxLen)

// 	log.Printf("deleting: %+v", "surfer:"+id)

// 	res, err := w.DB.Redis.HGetAll(w.DB.Ctx, "surfer:"+id).Result()
// 	if err != nil || len(res) == 0 {
// 		log.Printf("del error: %+v", err)
// 		c.JSON(http.StatusNotFound, gin.H{"status": "Not Found"})
// 		return
// 	}

// 	log.Printf("found: %+v", res)

// 	err = w.DB.Redis.Del(w.DB.Ctx, "surfer:"+id).Err()
// 	if err != nil {
// 		log.Printf("del error: %+v", err)
// 	}

// 	log.Printf("del: %+v", surfer)

// 	c.JSON(http.StatusOK, gin.H{"status": "deleted"})
// }

// func (w *Webapp) UpdateSurfer(c *gin.Context) {
// 	var surfer Surfer
// 	var err error

// 	err = c.ShouldBind(&surfer)
// 	if err != nil {
// 		log.Printf("req error: %+v", err)
// 		c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
// 		return
// 	}

// 	surfer.Dbid = CalcId(surfer.Firstname+surfer.Lastname, _MaxLen)

// 	err = w.DB.Redis.HSet(w.DB.Ctx, "surfer:"+surfer.Dbid, surfer).Err()
// 	if err != nil {
// 		log.Printf("set error: %+v", err)
// 	}

// 	log.Printf("new: %+v", surfer)

// 	c.JSON(http.StatusOK, gin.H{"status": "added"})
// }