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("users AS u"). Select("u.*, e.email"). Joins("INNER JOIN 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 }