users_storage.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package storage
  2. import (
  3. "strings"
  4. "ohurlshortener/core"
  5. "ohurlshortener/utils"
  6. "github.com/btcsuite/btcd/btcutil/base58"
  7. )
  8. // FindAllUsers 获取所有用户
  9. func FindAllUsers() ([]core.User, error) {
  10. var found []core.User
  11. query := `SELECT * FROM public.users u`
  12. return found, DbSelect(query, &found)
  13. }
  14. func FindPagedUsers(page, size int) ([]core.User, error) {
  15. var found []core.User
  16. if page > 0 && size > 0 {
  17. offset := (page - 1) * size
  18. query := `SELECT * FROM public.users u ORDER BY u.id DESC LIMIT $1 OFFSET $2`
  19. return found, DbSelect(query, &found, size, offset)
  20. }
  21. return found, nil
  22. }
  23. // NewUser 新建用户
  24. func NewUser(account string, password string) error {
  25. query := `INSERT INTO public.users (account, "password") VALUES(:account,:password)`
  26. data, err := PasswordBase58Hash(password)
  27. if err != nil {
  28. return err
  29. }
  30. return DbNamedExec(query, core.User{Account: account, Password: data})
  31. }
  32. // UpdateUser 更新用户
  33. func UpdateUser(user core.User) error {
  34. query := `UPDATE public.users SET account = :account , "password" = :password WHERE id = :id`
  35. return DbNamedExec(query, user)
  36. }
  37. // FindUserByAccount 根据账号查找用户
  38. func FindUserByAccount(account string) (core.User, error) {
  39. var user core.User
  40. query := `SELECT * FROM public.users u WHERE lower(u.account) = $1`
  41. return user, DbGet(query, &user, strings.ToLower(account))
  42. }
  43. // PasswordBase58Hash 密码加密
  44. func PasswordBase58Hash(password string) (string, error) {
  45. data, err := utils.Sha256Of(password)
  46. if err != nil {
  47. return "", err
  48. }
  49. return base58.Encode(data), nil
  50. }