internal/clients/kibana_oapi/data_views.go (72 lines of code) (raw):
package kibana_oapi
import (
"context"
"net/http"
"github.com/elastic/terraform-provider-elasticstack/generated/kbapi"
"github.com/elastic/terraform-provider-elasticstack/internal/utils"
"github.com/hashicorp/terraform-plugin-framework/diag"
)
// GetDataViews reads all data views from the API.
func GetDataViews(ctx context.Context, client *Client, spaceID string) ([]kbapi.GetDataViewsResponseItem, diag.Diagnostics) {
resp, err := client.API.GetAllDataViewsDefaultWithResponse(ctx, spaceID)
if err != nil {
return nil, utils.FrameworkDiagFromError(err)
}
switch resp.StatusCode() {
case http.StatusOK:
return *resp.JSON200.DataView, nil
default:
return nil, reportUnknownError(resp.StatusCode(), resp.Body)
}
}
// GetDataView reads a specific data view from the API.
func GetDataView(ctx context.Context, client *Client, spaceID string, viewID string) (*kbapi.DataViewsDataViewResponseObject, diag.Diagnostics) {
resp, err := client.API.GetDataViewDefaultWithResponse(ctx, spaceID, viewID)
if err != nil {
return nil, utils.FrameworkDiagFromError(err)
}
switch resp.StatusCode() {
case http.StatusOK:
return resp.JSON200, nil
case http.StatusNotFound:
return nil, nil
default:
return nil, reportUnknownError(resp.StatusCode(), resp.Body)
}
}
// CreateDataView creates a new data view.
func CreateDataView(ctx context.Context, client *Client, spaceID string, req kbapi.DataViewsCreateDataViewRequestObject) (*kbapi.DataViewsDataViewResponseObject, diag.Diagnostics) {
resp, err := client.API.CreateDataViewDefaultwWithResponse(ctx, spaceID, req)
if err != nil {
return nil, utils.FrameworkDiagFromError(err)
}
switch resp.StatusCode() {
case http.StatusOK:
return resp.JSON200, nil
default:
return nil, reportUnknownError(resp.StatusCode(), resp.Body)
}
}
// UpdateDataView updates an existing data view.
func UpdateDataView(ctx context.Context, client *Client, spaceID string, viewID string, req kbapi.DataViewsUpdateDataViewRequestObject) (*kbapi.DataViewsDataViewResponseObject, diag.Diagnostics) {
resp, err := client.API.UpdateDataViewDefaultWithResponse(ctx, spaceID, viewID, req)
if err != nil {
return nil, utils.FrameworkDiagFromError(err)
}
switch resp.StatusCode() {
case http.StatusOK:
return resp.JSON200, nil
default:
return nil, reportUnknownError(resp.StatusCode(), resp.Body)
}
}
// DeleteDataView deletes an existing data view.
func DeleteDataView(ctx context.Context, client *Client, spaceID string, viewID string) diag.Diagnostics {
resp, err := client.API.DeleteDataViewDefaultWithResponse(ctx, spaceID, viewID)
if err != nil {
return utils.FrameworkDiagFromError(err)
}
switch resp.StatusCode() {
case http.StatusOK:
return nil
case http.StatusNotFound:
return nil
default:
return reportUnknownError(resp.StatusCode(), resp.Body)
}
}