package infra

import "fmt"

// MetabaseExecuteCard ejecuta la query de una card/pregunta guardada.
// parameters: parametros de la query (nil si no tiene parametros).
// Retorna los resultados con columnas y filas.
func MetabaseExecuteCard(client MetabaseClient, cardID int, parameters []map[string]any) (map[string]any, error) {
	path := fmt.Sprintf("/api/card/%d/query", cardID)

	var body map[string]any
	if len(parameters) > 0 {
		body = map[string]any{"parameters": parameters}
	}

	result, err := metabaseRequest("POST", client.BaseURL, client.Token, path, body)
	if err != nil {
		return nil, fmt.Errorf("metabase execute card %d: %w", cardID, err)
	}

	return result, nil
}
