userquery.go 985 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package database
  2. import (
  3. log "maunium.net/go/maulogger/v2"
  4. "maunium.net/go/mautrix/id"
  5. )
  6. type UserQuery struct {
  7. db *Database
  8. log log.Logger
  9. }
  10. func (uq *UserQuery) New() *User {
  11. return &User{
  12. db: uq.db,
  13. log: uq.log,
  14. }
  15. }
  16. func (uq *UserQuery) GetByMXID(userID id.UserID) *User {
  17. query := "SELECT mxid, id, management_room, token FROM user WHERE mxid=$1"
  18. row := uq.db.QueryRow(query, userID)
  19. if row == nil {
  20. return nil
  21. }
  22. return uq.New().Scan(row)
  23. }
  24. func (uq *UserQuery) GetByID(id string) *User {
  25. query := "SELECT mxid, id, management_room, token FROM user WHERE id=$1"
  26. row := uq.db.QueryRow(query, id)
  27. if row == nil {
  28. return nil
  29. }
  30. return uq.New().Scan(row)
  31. }
  32. func (uq *UserQuery) GetAll() []*User {
  33. rows, err := uq.db.Query("SELECT mxid, id, management_room, token FROM user")
  34. if err != nil || rows == nil {
  35. return nil
  36. }
  37. defer rows.Close()
  38. users := []*User{}
  39. for rows.Next() {
  40. users = append(users, uq.New().Scan(rows))
  41. }
  42. return users
  43. }