package infra

import "fmt"

// MetabaseCreateCard crea una nueva card/pregunta en Metabase.
// name: nombre de la pregunta (obligatorio).
// datasetQuery: query de la card (obligatorio). Estructura:
//
//	SQL nativo: {"database": 1, "type": "native", "native": {"query": "SELECT ..."}}
//	MBQL:       {"database": 1, "type": "query", "query": {"source-table": 4, ...}}
//
// display: tipo de visualizacion ("table", "bar", "line", "pie", "scalar", etc.).
// collectionID: ID de la coleccion/carpeta (0 = root).
// description: descripcion opcional (vacio = sin descripcion).
func MetabaseCreateCard(client MetabaseClient, name string, datasetQuery map[string]any, display string, collectionID int, description string) (map[string]any, error) {
	body := map[string]any{
		"name":                   name,
		"dataset_query":          datasetQuery,
		"display":                display,
		"visualization_settings": map[string]any{},
	}
	if collectionID > 0 {
		body["collection_id"] = collectionID
	}
	if description != "" {
		body["description"] = description
	}

	result, err := metabaseRequest("POST", client.BaseURL, client.Token, "/api/card", body)
	if err != nil {
		return nil, fmt.Errorf("metabase create card: %w", err)
	}

	return result, nil
}
