package app_user import ( "github.com/vyes-ai/vigo" "github.com/veypi/OneAuth/cfg" "github.com/veypi/OneAuth/models" ) type listOpts struct { AppID string `parse:"path"` Page int `parse:"query" default:"1"` PageSize int `parse:"query" default:"20"` Status string `parse:"query" default:""` } type listResponse struct { Total int64 `json:"total"` Items []*models.AppUser `json:"items"` } var _ = Router.Get("/", listAppUsers) func listAppUsers(x *vigo.X) (any, error) { opts := &listOpts{} if err := x.Parse(opts); err != nil { return nil, err } query := cfg.DB().Model(&models.AppUser{}).Where("app_id = ?", opts.AppID) if opts.Status != "" { query = query.Where("status = ?", opts.Status) } var total int64 if err := query.Count(&total).Error; err != nil { return nil, err } offset := (opts.Page - 1) * opts.PageSize query = query.Offset(offset).Limit(opts.PageSize) var users []*models.AppUser if err := query.Find(&users).Error; err != nil { return nil, err } return &listResponse{ Total: total, Items: users, }, nil }