appidea-restapi/routers/api/v1/user/user.go

89 lines
1.8 KiB
Go

package user
import (
"fmt"
"git.umbach.dev/app-idea/rest-api/routers/database"
"github.com/gofiber/fiber/v2"
"golang.org/x/crypto/bcrypt"
)
// ABCDEFGHIJKLMNOPQRSTUVWXYZ
// 0123456789
func NewUser(c *fiber.Ctx) error {
db, err := database.GetDatabase()
if db == nil || err != nil {
return c.SendString(err.Error())
}
type LoginInput struct {
Username string `json:"username"`
Email string `json:"email"`
Password string `json:"password"`
}
var input LoginInput
if err := c.BodyParser(&input); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"status": "error", "message": "Error on login request", "data": err})
}
fmt.Println(input, input.Password)
password := []byte(input.Password)
hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
if err != nil {
panic(err)
}
fmt.Println(string(hashedPassword))
err = bcrypt.CompareHashAndPassword(hashedPassword, []byte("hello wolrd"))
fmt.Println(err)
/*sqlStatement, err := db.Prepare("INSERT INTO users (name) VALUES (?);")
res, err := sqlStatement.Exec(uuid.New().String())
rowCount, err := res.RowsAffected()
fmt.Printf("inserted %d row(s) of data. %s \n", rowCount, err)
fmt.Println("finish") */
return c.JSON(fiber.Map{"status": "error", "message": "invalid"})
}
func GetUser(c *fiber.Ctx) error {
return c.SendString("user")
}
func GetUsers(c *fiber.Ctx) error {
db, err := database.GetDatabase()
// c.Params("id")
if db == nil || err != nil {
return c.SendString("db error")
}
list := []string{}
var (
name string
)
rows, err := db.Query("SELECT username FROM users;")
defer rows.Close()
fmt.Println("reading data:")
for rows.Next() {
err := rows.Scan(&name)
fmt.Printf("Data row = (%s, %s)\n", name, err)
list = append(list, name)
}
err = rows.Err()
fmt.Println("Done")
return c.JSON(list)
}