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 }