redash

package
v0.6.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 17, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package redash is a simple redash client library

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	Config *Config
}

Client contains an active Redash API client

func NewClient

func NewClient(config *Config) (*Client, error)

NewClient returns a *Client from a valid *Config

func (*Client) ArchiveDashboard

func (c *Client) ArchiveDashboard(slug string) error

func (*Client) ArchiveQuery

func (c *Client) ArchiveQuery(id int) error

ArchiveQuery archives an existing Redash query

func (*Client) CreateDashboard

func (c *Client) CreateDashboard(dashboard *DashboardCreatePayload) (*Dashboard, error)

func (*Client) CreateDataSource

func (c *Client) CreateDataSource(dataSourcePayload *DataSource) (*DataSource, error)

CreateDataSource creates a new DataSource

func (*Client) CreateGroup

func (c *Client) CreateGroup(groupPayload *GroupCreatePayload) (*Group, error)

CreateGroup creates a new Redash group

func (*Client) CreateQuery

func (c *Client) CreateQuery(query *QueryCreatePayload) (*Query, error)

CreateQuery creates a new Redash query

func (*Client) CreateUser

func (c *Client) CreateUser(userCreatePayload *UserCreatePayload) (*User, error)

CreateUser creates a new Redash user

func (*Client) CreateVisualization

func (c *Client) CreateVisualization(visualizationCreatePayload *VisualizationCreatePayload) (*Visualization, error)

CreateVisualization creates a new Redash visualization

func (*Client) CreateWidget

func (c *Client) CreateWidget(widgetCreatePayload *WidgetCreatePayload) (*Widget, error)

func (*Client) DeleteDataSource

func (c *Client) DeleteDataSource(id int) error

DeleteDataSource deletes a specific DataSource

func (*Client) DeleteGroup

func (c *Client) DeleteGroup(id int) error

DeleteGroup deletes a Redash group

func (*Client) DeleteVisualization

func (c *Client) DeleteVisualization(id int) error

DeleteVisualization deletes a visualization

func (*Client) DeleteWidget

func (c *Client) DeleteWidget(id int) error

func (*Client) DisableUser

func (c *Client) DisableUser(id int) error

DisableUser disables an active user.

func (*Client) GetDashboard

func (c *Client) GetDashboard(slug string) (*Dashboard, error)

GetDashboard gets a specific dashboard

func (*Client) GetDataSource

func (c *Client) GetDataSource(id int) (*DataSource, error)

GetDataSource gets a specific DataSource

func (*Client) GetDataSourceTypes

func (c *Client) GetDataSourceTypes() ([]DataSourceType, error)

GetDataSourceTypes gets all available types with configuration details

func (*Client) GetDataSources

func (c *Client) GetDataSources() (*[]DataSource, error)

GetDataSources gets an array of all DataSources available

func (*Client) GetGroup

func (c *Client) GetGroup(id int) (*Group, error)

GetGroup returns an individual Redash group

func (*Client) GetGroups

func (c *Client) GetGroups() (*[]Group, error)

GetGroups returns a list of Redash groups

func (*Client) GetQueries

func (c *Client) GetQueries() (*QueriesList, error)

GetQueries returns a paginated list of queries

func (*Client) GetQuery

func (c *Client) GetQuery(id int) (*Query, error)

GetQuery gets a specific query

func (*Client) GetUser

func (c *Client) GetUser(id int) (*User, error)

GetUser gets a specific User

func (*Client) GetUserByEmail

func (c *Client) GetUserByEmail(email string) (*User, error)

GetUserByEmail returns a single user from their email address

func (*Client) GetUsers

func (c *Client) GetUsers(page, pageSize int) (*UserList, error)

GetUsers returns a paginated list of users

func (*Client) GetVisualization

func (c *Client) GetVisualization(queryId, visualizationId int) (*Visualization, error)

GetVisualization gets a specific visualization

func (*Client) GetWidget

func (c *Client) GetWidget(dashboardSlug string, widgetId int) (*Widget, error)

GetWidget returns a specific Widget

func (*Client) GroupAddDataSource

func (c *Client) GroupAddDataSource(groupID int, dataSourceID int) error

GroupAddDataSource adds a Data Source to a Redash group

func (*Client) GroupAddUser

func (c *Client) GroupAddUser(groupID int, userID int) error

GroupAddUser adds a user to a Redash group

func (*Client) GroupRemoveDataSource

func (c *Client) GroupRemoveDataSource(groupID int, dataSourceID int) error

GroupRemoveDataSource removes a Data Source from a Redash group

func (*Client) GroupRemoveUser

func (c *Client) GroupRemoveUser(groupID int, userID int) error

GroupRemoveUser removes a user from a Redash group

func (*Client) IsStrict

func (c *Client) IsStrict() bool

IsStrict returns true if StrictMode is set. This currently causes data_source creates/updates to fail if extraneous properties are present in the payload.

func (*Client) SanitizeDataSourceOptions

func (c *Client) SanitizeDataSourceOptions(dataSource *DataSource) (*DataSource, error)

SanitizeDataSourceOptions checks the validity of the options field in a DataSource.Option against Redash's API and cleans up when possible

func (*Client) SearchUsers

func (c *Client) SearchUsers(term string) (*UserList, error)

SearchUsers finds a list of users matching a string (searches `name` and `email` fields)

func (*Client) UpdateDashboard

func (c *Client) UpdateDashboard(id int, dashboard *DashboardUpdatePayload) (*Dashboard, error)

func (*Client) UpdateDataSource

func (c *Client) UpdateDataSource(id int, dataSourcePayload *DataSource) (*DataSource, error)

UpdateDataSource Updates an existing DataSource

func (*Client) UpdateGroup

func (c *Client) UpdateGroup(id int, group *Group) (*Group, error)

UpdateGroup updates an existing Redash group

func (*Client) UpdateQuery

func (c *Client) UpdateQuery(id int, query *QueryUpdatePayload) (*Query, error)

UpdateQuery updates an existing Redash query

func (*Client) UpdateUser

func (c *Client) UpdateUser(id int, userUpdatePayload *UserUpdatePayload) (*User, error)

UpdateUser updates an existing Redash user

func (*Client) UpdateVisualization

func (c *Client) UpdateVisualization(id int, visualizationUpdatePayload *VisualizationUpdatePayload) (*Visualization, error)

UpdateVisualization updates an existing Redash visualization

func (*Client) UpdateWidget

func (c *Client) UpdateWidget(id int, widgetUpdatePayload *WidgetUpdatePayload) (*Widget, error)

type Config

type Config struct {
	RedashURI  string
	APIKey     string
	StrictMode bool
}

Config holds the necessary setup vars

type Dashboard

type Dashboard struct {
	ID                      int           `json:"id"`
	Slug                    string        `json:"slug"`
	Name                    string        `json:"name"`
	UserID                  int           `json:"user_id"`
	User                    User          `json:"user"`
	Layout                  []interface{} `json:"layout"`
	DashboardFiltersEnabled bool          `json:"dashboard_filters_enabled"`
	Widgets                 []Widget      `json:"widgets"`
	IsArchived              bool          `json:"is_archived"`
	IsDraft                 bool          `json:"is_draft"`
	Tags                    []string      `json:"tags"`
	UpdatedAt               time.Time     `json:"updated_at"`
	CreatedAt               time.Time     `json:"created_at"`
	Version                 int           `json:"version"`
	IsFavorite              bool          `json:"is_favorite"`
	CanEdit                 bool          `json:"can_edit"`
}

type DashboardCreatePayload

type DashboardCreatePayload struct {
	Name string `json:"name"`
}

type DashboardUpdatePayload

type DashboardUpdatePayload struct {
	Name string `json:"name"`
}

type DashboardVisualization

type DashboardVisualization struct {
	ID          int                  `json:"id"`
	Type        string               `json:"type"`
	Name        string               `json:"name"`
	Description string               `json:"description"`
	Options     VisualizationOptions `json:"options"`
	Query       Query                `json:"query"`
}

type DataSource

type DataSource struct {
	ID                 int                    `json:"id,omitempty"`
	Name               string                 `json:"name,omitempty"`
	ScheduledQueueName string                 `json:"scheduled_queue_name,omitempty"`
	QueueName          string                 `json:"queue_name,omitempty"`
	Options            map[string]interface{} `json:"options,omitempty"`
	Paused             int                    `json:"paused,omitempty"`
	PauseReason        string                 `json:"pause_reason,omitempty"`
	Type               string                 `json:"type,omitempty"`
	Syntax             string                 `json:"syntax,omitempty"`
	Groups             map[int]bool           `json:"groups,omitempty"`
}

DataSource struct

type DataSourceType

type DataSourceType struct {
	Type                string `json:"type"`
	Name                string `json:"name,omitempty"`
	ConfigurationSchema struct {
		Secret     []string                               `json:"secret,omitempty"`
		Required   []string                               `json:"required,omitempty"`
		Type       string                                 `json:"type,omitempty"`
		Order      []string                               `json:"order,omitempty"`
		Properties map[string]DataSourceTypePropertyField `json:"properties,omitempty"`
	} `json:"configuration_schema,omitempty"`
}

DataSourceType struct

type DataSourceTypePropertyField

type DataSourceTypePropertyField struct {
	Type    string
	Title   string
	Default interface{}
}

DataSourceTypePropertyField struct

type Group

type Group struct {
	CreatedAt   time.Time `json:"created_at,omitempty"`
	Permissions []string  `json:"permissions,omitempty"`
	Type        string    `json:"type,omitempty"`
	ID          int       `json:"id,omitempty"`
	Name        string    `json:"name,omitempty"`
}

Group struct

type GroupCreatePayload

type GroupCreatePayload struct {
	Name string `json:"name"`
}

GroupCreatePayload struct

type GroupDataSource

type GroupDataSource struct {
	DataSourceID int `json:"data_source_id"`
}

GroupDataSource struct

type GroupUser

type GroupUser struct {
	MemberID int `json:"user_id"`
}

GroupUser struct

type QueriesList

type QueriesList struct {
	Count    int `json:"count"`
	Page     int `json:"page"`
	PageSize int `json:"page_size"`
	Results  []struct {
		ID                int           `json:"id"`
		IsArchived        bool          `json:"is_archived"`
		CreatedAt         time.Time     `json:"created_at"`
		RetrievedAt       time.Time     `json:"retrieved_at"`
		UpdatedAt         time.Time     `json:"updated_at"`
		Name              string        `json:"name"`
		Description       string        `json:"description"`
		Query             string        `json:"query"`
		QueryHash         string        `json:"query_hash"`
		Version           int           `json:"version"`
		LastModifiedByID  int           `json:"last_modified_by_id"`
		Tags              []string      `json:"tags"`
		APIKey            string        `json:"api_key"`
		DataSourceID      int           `json:"data_source_id"`
		LatestQueryDataID int           `json:"latest_query_data_id"`
		Schedule          QuerySchedule `json:"schedule"`
		User              User          `json:"user"`
		IsFavorite        bool          `json:"is_favorite"`
		IsDraft           bool          `json:"is_draft"`
		IsSafe            bool          `json:"is_safe"`
		Runtime           float32       `json:"runtime"`
		Options           QueryOptions  `json:"options"`
	}
}

QueriesList models the response from Redash's /api/queries endpoint

type Query

type Query struct {
	ID                int             `json:"id"`
	Name              string          `json:"name"`
	Description       string          `json:"description"`
	Query             string          `json:"query"`
	QueryHash         string          `json:"query_hash"`
	Version           int             `json:"version"`
	Schedule          QuerySchedule   `json:"schedule"`
	APIKey            string          `json:"api_key"`
	IsArchived        bool            `json:"is_archived"`
	IsDraft           bool            `json:"is_draft"`
	UpdatedAt         time.Time       `json:"updated_at"`
	CreatedAt         time.Time       `json:"created_at"`
	DataSourceID      int             `json:"data_source_id"`
	LatestQueryDataID int             `json:"latest_query_data_id"`
	Tags              []string        `json:"tags"`
	IsSafe            bool            `json:"is_safe"`
	User              User            `json:"user"`
	LastModifiedBy    User            `json:"last_modified_by"`
	IsFavorite        bool            `json:"is_favorite"`
	CanEdit           bool            `json:"can_edit"`
	Options           QueryOptions    `json:"options"`
	Visualizations    []Visualization `json:"visualizations"`
}

Query models the response from Redash's /api/queries endpoint

type QueryCreatePayload

type QueryCreatePayload struct {
	Name         string `json:"name,omitempty"`
	Query        string `json:"query,omitempty"`
	DataSourceID int    `json:"data_source_id,omitempty"`
	Description  string `json:"description,omitempty"`
}

QueryCreatePayload defines the schema for creating a new Redash query

type QueryOptions

type QueryOptions struct {
	Parameters []QueryOptionsParameter `json:"parameters"`
}

QueryOptions struct

type QueryOptionsParameter

type QueryOptionsParameter struct {
	Title       string        `json:"title"`
	Name        string        `json:"name"`
	Type        string        `json:"type"`
	EnumOptions string        `json:"enum_options"`
	Locals      []interface{} `json:"locals"`
	Value       interface{}   `json:"value"`
}

QueryOptionsParameter struct

type QuerySchedule

type QuerySchedule struct {
	Interval  int         `json:"interval"`
	Time      string      `json:"time"`
	DayOfWeek string      `json:"day_of_week"`
	Until     interface{} `json:"until"`
}

QuerySchedule struct

type QueryUpdatePayload

type QueryUpdatePayload struct {
	Name         string `json:"name,omitempty"`
	Description  string `json:"description,omitempty"`
	Query        string `json:"query,omitempty"`
	DataSourceID int    `json:"data_source_id,omitempty"`
	IsDraft      bool   `json:"is_draft,omitempty"`
	Options      bool   `json:"options,omitempty"`
	Version      bool   `json:"version,omitempty"`
}

QueryUpdatePayload defines the schema for updating a Redash query

type SeriesOptions

type SeriesOptions struct {
	ZIndex int    `json:"zIndex"`
	Index  int    `json:"index"`
	Type   string `json:"type"`
	YAxis  int    `json:"yAxis"`
}

type User

type User struct {
	AuthType            string      `json:"auth_type,omitempty"`
	IsDisabled          bool        `json:"is_disabled,omitempty"`
	UpdatedAt           time.Time   `json:"updated_at,omitempty"`
	ProfileImageURL     string      `json:"profile_image_url,omitempty"`
	IsInvitationPending bool        `json:"is_invitation_pending,omitempty"`
	Groups              []int       `json:"groups,omitempty"`
	ID                  int         `json:"id,omitempty"`
	Name                string      `json:"name,omitempty"`
	CreatedAt           time.Time   `json:"created_at,omitempty"`
	DisabledAt          interface{} `json:"disabled_at,omitempty"`
	IsEmailVerified     bool        `json:"is_email_verified,omitempty"`
	ActiveAt            time.Time   `json:"active_at,omitempty"`
	Email               string      `json:"email,omitempty"`
}

User representation

type UserCreatePayload

type UserCreatePayload struct {
	Name  string `json:"name"`
	Email string `json:"email"`
}

UserCreatePayload struct for mutating users.

type UserList

type UserList struct {
	Count    int `json:"count"`
	Page     int `json:"page"`
	PageSize int `json:"page_size"`
	Results  []struct {
		AuthType            string    `json:"auth_type,omitempty"`
		IsDisabled          bool      `json:"is_disabled,omitempty"`
		UpdatedAt           time.Time `json:"updated_at,omitempty"`
		ProfileImageURL     string    `json:"profile_image_url,omitempty"`
		IsInvitationPending bool      `json:"is_invitation_pending,omitempty"`
		Groups              []struct {
			ID   int    `json:"id,omitempty"`
			Name string `json:"name,omitempty"`
		} `json:"groups,omitempty"`
		ID              int         `json:"id,omitempty"`
		Name            string      `json:"name,omitempty"`
		CreatedAt       time.Time   `json:"created_at,omitempty"`
		DisabledAt      interface{} `json:"disabled_at,omitempty"`
		IsEmailVerified bool        `json:"is_email_verified,omitempty"`
		ActiveAt        time.Time   `json:"active_at,omitempty"`
		Email           string      `json:"email,omitempty"`
	} `json:"results,omitempty"`
}

UserList struct

type UserUpdatePayload

type UserUpdatePayload struct {
	Name   string `json:"name"`
	Email  string `json:"email"`
	Groups []int  `json:"group_ids"`
}

UserUpdatePayload struct for mutating users.

type Visualization

type Visualization struct {
	ID          int                  `json:"id"`
	Type        string               `json:"type"`
	Name        string               `json:"name"`
	Description string               `json:"description"`
	Options     VisualizationOptions `json:"options"`
	UpdatedAt   time.Time            `json:"updated_at"`
	CreatedAt   time.Time            `json:"created_at"`
}

Visualization struct

type VisualizationAxisOptions

type VisualizationAxisOptions struct {
	Type     string                    `json:"type"`
	Opposite bool                      `json:"opposite"`
	Labels   VisualizationLabelOptions `json:"labels"`
}

VisualizationAxisOptions struct

type VisualizationCreatePayload

type VisualizationCreatePayload struct {
	Name        string               `json:"name,omitempty"`
	Type        string               `json:"type,omitempty"`
	QueryId     int                  `json:"query_id,omitempty"`
	Description string               `json:"description,omitempty"`
	Options     VisualizationOptions `json:"options,omitempty"`
}

type VisualizationLabelOptions

type VisualizationLabelOptions struct {
	Enabled bool `json:"enabled"`
}

VisualizationLabelOptions struct

type VisualizationLegendOptions

type VisualizationLegendOptions struct {
	Enabled   bool   `json:"enabled"`
	Placement string `json:"placement"`
}

VisualizationLegendOptions struct

type VisualizationOptions

type VisualizationOptions struct {
	XAxis            VisualizationAxisOptions   `json:"xAxis,omitempty"`
	YAxis            []VisualizationAxisOptions `json:"yAxis,omitempty"`
	Series           map[string]interface{}     `json:"series,omitempty"`
	GlobalSeriesType string                     `json:"globalSeriesType,omitempty"`
	SortX            bool                       `json:"sortX"`
	SeriesOptions    map[string]SeriesOptions   `json:"seriesOptions,omitempty"`
	ColumnMapping    map[string]string          `json:"columnMapping,omitempty"`
	Legend           VisualizationLegendOptions `json:"legend,omitempty"`
}

VisualizationOptions struct

type VisualizationUpdatePayload

type VisualizationUpdatePayload struct {
	Name        string               `json:"name,omitempty"`
	Type        string               `json:"type,omitempty"`
	Description string               `json:"description,omitempty"`
	Options     VisualizationOptions `json:"options,omitempty"`
}

type Widget

type Widget struct {
	ID            int                    `json:"id"`
	Width         int                    `json:"width"`
	Options       WidgetOptions          `json:"options"`
	DashboardID   int                    `json:"dashboard_id"`
	Text          string                 `json:"text"`
	UpdatedAt     time.Time              `json:"updated_at"`
	CreatedAt     time.Time              `json:"created_at"`
	Visualization DashboardVisualization `json:"visualization"`
}

type WidgetCreatePayload

type WidgetCreatePayload struct {
	DashboardID     int           `json:"dashboard_id"`
	Text            string        `json:"text"`
	VisualizationID int           `json:"visualization_id"`
	Width           int           `json:"width"`
	WidgetOptions   WidgetOptions `json:"options"`
}

type WidgetOptions

type WidgetOptions struct {
	IsHidden          bool                              `json:"is_hidden"`
	Position          WidgetPosition                    `json:"position"`
	ParameterMappings map[string]WidgetParameterMapping `json:"parameterMappings"`
}

type WidgetParameterMapping

type WidgetParameterMapping struct {
	Name  string `json:"name"`
	Type  string `json:"type"`
	MapTo string `json:"mapTo"`
	Value string `json:"value"`
	Title string `json:"title"`
}

type WidgetPosition

type WidgetPosition struct {
	AutoHeight bool `json:"autoHeight"`
	SizeX      int  `json:"sizeX"`
	SizeY      int  `json:"sizeY"`
	MaxSizeY   int  `json:"maxSizeY"`
	MaxSizeX   int  `json:"maxSizeX"`
	MinSizeY   int  `json:"minSizeY"`
	MinSizeX   int  `json:"minSizeX"`
	Col        int  `json:"col"`
	Row        int  `json:"row"`
}

type WidgetUpdatePayload

type WidgetUpdatePayload struct {
	Text          string        `json:"text"`
	Width         int           `json:"width"`
	WidgetOptions WidgetOptions `json:"options"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL