userquery.go 749 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. row := uq.db.QueryRow("SELECT mxid, id, management_room, token FROM user where mxid=$1", userID)
  18. if row == nil {
  19. return nil
  20. }
  21. return uq.New().Scan(row)
  22. }
  23. func (uq *UserQuery) GetAll() []*User {
  24. rows, err := uq.db.Query("SELECT mxid, id, management_room, token FROM user")
  25. if err != nil || rows == nil {
  26. return nil
  27. }
  28. defer rows.Close()
  29. users := []*User{}
  30. for rows.Next() {
  31. users = append(users, uq.New().Scan(rows))
  32. }
  33. return users
  34. }