user.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package model
  2. type User struct {
  3. ID uint64 `json:"id"`
  4. Email string `json:"email"`
  5. Password string `json:"password"`
  6. Name string `json:"name"`
  7. }
  8. type UserDetails struct {
  9. ID uint64 `json:"id"`
  10. Email string `json:"email"`
  11. Name string `json:"name"`
  12. }
  13. func CreateUser(user *User, db *Db) error {
  14. statement := "INSERT INTO users (email, password, name) values ($1, $2, $3)"
  15. _, err := db.conn.Exec(statement, user.Email, user.Password, user.Name)
  16. return err
  17. }
  18. func CheckEmail(email string, user *User, db *Db) bool {
  19. statement := "SELECT id, name, email, password FROM users WHERE email=$1 LIMIT 1"
  20. rows, err := db.conn.Query(statement, email)
  21. if err != nil {
  22. return false
  23. }
  24. for rows.Next() {
  25. err = rows.Scan(&user.ID, &user.Name, &user.Email, &user.Password)
  26. if err != nil {
  27. return false
  28. }
  29. }
  30. return true
  31. }
  32. func GetUser(email string, db *Db) (*User, error) {
  33. statement := "SELECT id, name, email FROM users WHERE email=$1 LIMIT 1"
  34. var user User
  35. rows, err := db.conn.Query(statement, email)
  36. for rows.Next() {
  37. err = rows.Scan(&user.ID, &user.Name, &user.Email)
  38. if err != nil {
  39. return nil, err
  40. }
  41. }
  42. return &user, nil
  43. }
  44. func GetUserById(id uint64, db *Db) (*UserDetails, error) {
  45. stmt := "SELECT id, name, email FROM users WHERE id=$1 LIMIT 1"
  46. var user UserDetails
  47. rows, err := db.conn.Query(stmt, id)
  48. for rows.Next() {
  49. err = rows.Scan(&user.ID, &user.Name, &user.Email)
  50. if err != nil {
  51. return nil, err
  52. }
  53. }
  54. return &user, nil
  55. }