package main // type User struct { // Dbid string `json:"dbid"` // Id string `json:"id"` // Username string `json:"username"` // Password string `json:"password"` // Email string `json:"email"` // Group string `json:"group"` // Enabled bool `json:"enabled"` // } ///////////////// Users // func (w *Webapp) GetUsers(c *gin.Context) { // var cursor uint64 // var users []string // cursor = 0 // log.Printf("start scanning %+v", c.ClientIP()) // for { // var keys []string // var err error // keys, cursor, err = w.DB.Redis.Scan(w.DB.Ctx, cursor, "user:*", 10).Result() // if err != nil { // panic(err) // } // log.Printf("scan: %+v", keys) // users = append(users, keys...) // if cursor == 0 { // break // } // } // var retval []User // for u := range users { // usr := User{} // hmget := w.DB.Redis.HMGet(w.DB.Ctx, users[u], "username", "email", "group", "enabled") // hmget.Scan(&usr) // log.Printf("user: %+v", usr) // retval = append(retval, usr) // } // slices.SortFunc(retval, // func(a, b User) int { // return cmp.Compare(a.Username, b.Username) // }) // c.JSON(http.StatusOK, retval) // } // func (w *Webapp) UpdateUser(c *gin.Context) { // var user User // if err := c.ShouldBind(&user); err != nil { // log.Printf("req error: %+v", err) // c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) // return // } // user.Dbid = CalcId(user.Username, 8) // ret := w.DB.Redis.HExists(w.DB.Ctx, "user:"+user.Dbid, "username").Val() // if !ret { // log.Printf("Exists: %+v", ret) // err := w.DB.Redis.HSet(w.DB.Ctx, "user:"+user.Dbid, user).Err() // if err != nil { // log.Printf("set error: %+v", err) // } // } else { // err := w.DB.Redis.HSet(w.DB.Ctx, "user:"+user.Dbid, "email", user.Email, "group", user.Group, "enabled", user.Enabled).Err() // if err != nil { // log.Printf("set error: %+v", err) // } // } // log.Printf("new: %+v", user) // c.JSON(http.StatusOK, gin.H{"status": "added"}) // } // // func UpdateUser(c *gin.Context) { // // var user common.User // // if err := c.ShouldBind(&user); err != nil { // // c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) // // return // // } // // id := common.Id(user.Username, 8) // // if err := db.Db.Redis.HSet(db.Db.Ctx, "user:"+id, "email", user.Email, "group", user.Group, "enabled", user.Enabled).Err(); err != nil { // // log.Fatalf("set error: %+v", err) // // } // // log.Printf("update: %+v", user) // // c.JSON(http.StatusOK, gin.H{"status": "updated"}) // // } // func (w *Webapp) DeleteUser(c *gin.Context) { // var user User // if err := c.ShouldBind(&user); err != nil { // c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()}) // return // } // id := CalcId(user.Username, 8) // log.Printf("deleting: %+v", "user:"+id) // res, err := w.DB.Redis.HGetAll(w.DB.Ctx, "user:"+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) // if err := w.DB.Redis.Del(w.DB.Ctx, "user:"+id).Err(); err != nil { // log.Printf("del error: %+v", err) // } // log.Printf("del: %+v", user) // c.JSON(http.StatusOK, gin.H{"status": "deleted"}) // }