package infra

import "fmt"

// MetabaseListUsers lista usuarios de Metabase con filtros opcionales.
// status: "active", "deactivated" o "all" (vacio = "active").
// query: filtro por nombre o email (vacio = sin filtro).
// limit/offset: paginacion (0 = valores por defecto de Metabase).
func MetabaseListUsers(client MetabaseClient, status, query string, limit, offset int) (map[string]any, error) {
	path := "/api/user?"
	if status != "" {
		path += "status=" + status + "&"
	}
	if query != "" {
		path += "query=" + query + "&"
	}
	if limit > 0 {
		path += fmt.Sprintf("limit=%d&", limit)
	}
	if offset > 0 {
		path += fmt.Sprintf("offset=%d&", offset)
	}

	result, err := metabaseRequest("GET", client.BaseURL, client.Token, path, nil)
	if err != nil {
		return nil, fmt.Errorf("metabase list users: %w", err)
	}

	return result, nil
}
