spark-server/internal/module/user/model/list.go
2026-09-23 17:11:56 +08:00

39 lines
844 B
Go

package model
import (
"context"
"spark-server/internal/module/user/entity"
)
// Account is a users row plus its primary login email.
type Account struct {
User *entity.User
Email string
}
// ListAccounts returns every user that still has a user_emails binding.
func (m *Repo) ListAccounts(ctx context.Context) ([]Account, error) {
db, err := m.session(ctx)
if err != nil {
return nil, err
}
var rows []struct {
User
Email string `gorm:"column:email"`
}
err = db.Table("t_users AS u").
Select("u.*, e.email").
Joins("INNER JOIN t_user_emails e ON e.user_id = u.id").
Order("u.id ASC").
Find(&rows).Error
if err != nil {
return nil, mapDBErr(err)
}
out := make([]Account, 0, len(rows))
for i := range rows {
out = append(out, Account{User: rows[i].User.entity(), Email: rows[i].Email})
}
return out, nil
}