package database import ( log "maunium.net/go/maulogger/v2" "maunium.net/go/mautrix/id" ) type UserQuery struct { db *Database log log.Logger } func (uq *UserQuery) New() *User { return &User{ db: uq.db, log: uq.log, } } func (uq *UserQuery) GetByMXID(userID id.UserID) *User { query := `SELECT mxid, id, management_room, token FROM "user" WHERE mxid=$1` row := uq.db.QueryRow(query, userID) if row == nil { return nil } return uq.New().Scan(row) } func (uq *UserQuery) GetByID(id string) *User { query := `SELECT mxid, id, management_room, token FROM "user" WHERE id=$1` row := uq.db.QueryRow(query, id) if row == nil { return nil } return uq.New().Scan(row) } func (uq *UserQuery) GetAll() []*User { rows, err := uq.db.Query(`SELECT mxid, id, management_room, token FROM "user"`) if err != nil || rows == nil { return nil } defer rows.Close() users := []*User{} for rows.Next() { users = append(users, uq.New().Scan(rows)) } return users }