9e6bea681f
Añade funciones Go stub para la API de Metabase en dominio infra: auth, CRUD de cards, dashboards y users, execute_query y execute_card. Incluye tipo MetabaseClient y helper HTTP compartido. Todas las funciones son impuras con stubs not-implemented.
36 lines
1.2 KiB
Go
36 lines
1.2 KiB
Go
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
|
|
}
|