redac

package module
v0.1.1 Latest Latest
Warning

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

Go to latest
Published: May 27, 2024 License: MIT Imports: 16 Imported by: 0

README

redac

CLI tool for redash

Installation

go install github.com/go-yushi-nakai/redac/cli/redac@v0.1.1
go install github.com/go-yushi-nakai/redac/cli/redac-util@v0.1.1

Setup

$ redac-util config add
context name: <Input context name>
redash URL: <Input endpoint of redash>
API Key: <Input your API Key>
list of data sources from ..:
  id=X: source A
  id=Y: source B
select source ID: <Input source ID>

$ redac-util config list
...

$ redac-util config del <context name>
...

Execute query

Execute query from file

$ cat test.sql
select 1;

$ ./redac test.sql <context name>
  1
-----
  1

Execute query from argument

$ redac -e 'select "OK" as "This is Test"' <context name>
  THIS IS TEST
----------------
  OK

Documentation

Index

Constants

View Source
const (
	RedashJobStatusPending   = 1
	RedashJobStatusStarted   = 2
	RedashJobStatusSuccess   = 3
	RedashJobStatusFailure   = 4
	RedashJobStatusCancelled = 5
)
View Source
const (
	TableType1 tableType = iota
	TableType2
)

Variables

View Source
var (
	ErrQueryOpenParamNotFound    = errors.New("`{{` not found")
	ErrorQueryCloseParamNotFound = errors.New("`}}` not found")
)

Functions

func AddConfigContext

func AddConfigContext(name, endpoint, apiKey string, dsID int) error

func DeleteConfigContext

func DeleteConfigContext(name string) error

func GetVersion

func GetVersion() string

func NewLogger

func NewLogger(levelStr string) (*slog.Logger, error)

func SaveConfig

func SaveConfig(c *ConfigFile) error

Types

type CSVRenderer

type CSVRenderer struct {
	// contains filtered or unexported fields
}

func (*CSVRenderer) Render

func (r *CSVRenderer) Render(w io.Writer, data [][]string) error

func (*CSVRenderer) SetShowHeader

func (r *CSVRenderer) SetShowHeader(showHeader bool)

type ConfigContext

type ConfigContext struct {
	Name         string `json:"name"`
	Endpoint     string `json:"endpoint"`
	APIKey       string `json:"apiKey"`
	DataSourceID int    `json:"dataSourceID"`
}

type ConfigFile

type ConfigFile struct {
	Contexts map[string]*ConfigContext `json:"contexts"`
}

func LoadConfig

func LoadConfig() (*ConfigFile, error)

type JSONRenderer

type JSONRenderer struct {
	// contains filtered or unexported fields
}

func (*JSONRenderer) Render

func (r *JSONRenderer) Render(w io.Writer, data [][]string) error

func (*JSONRenderer) SetShowHeader

func (r *JSONRenderer) SetShowHeader(showHeader bool)

type Query

type Query struct {
	Data       string
	Parameters []string
}

func LoadQueryFromFile

func LoadQueryFromFile(path string) (*Query, error)

func NewQuery

func NewQuery(s string) (*Query, error)

func (*Query) GetParameterStringForUsage

func (q *Query) GetParameterStringForUsage() string

func (*Query) GetTemplateParams

func (q *Query) GetTemplateParams(args []string) (map[string]any, error)

type RedashClient

type RedashClient struct {
	Endpoint string
	APIKey   string
	Logger   *slog.Logger
}

func NewRedashClient

func NewRedashClient(endpoint, apiKey string, logger *slog.Logger) (*RedashClient, error)

func (*RedashClient) DeleteJob

func (rc *RedashClient) DeleteJob(ctx context.Context, id string) error

func (*RedashClient) GetDataSources

func (rc *RedashClient) GetDataSources(ctx context.Context) ([]map[string]any, error)

func (*RedashClient) GetJob

func (rc *RedashClient) GetJob(ctx context.Context, id string) (*RedashGetJobResponse, error)

func (*RedashClient) GetQueryResult

func (rc *RedashClient) GetQueryResult(ctx context.Context, id int) (*RedashGetQueryResultResponse, error)

func (*RedashClient) PostQueryResults

func (*RedashClient) QueryAndWaitResult

type RedashGetJobResponse

type RedashGetJobResponse struct {
	Job struct {
		ID            string `json:"id"`
		UpdatedAt     any    `json:"updated_at"`
		Status        int    `json:"status"`
		Error         string `json:"error"`
		Result        int    `json:"result"`
		QueryResultID int    `json:"query_result_id"`
	} `json:"job"`
}

type RedashGetQueryResultResponse

type RedashGetQueryResultResponse struct {
	QueryResult struct {
		ID        int    `json:"id"`
		QueryHash string `json:"query_hash"`
		Query     string `json:"query"`
		Data      struct {
			Columns []struct {
				Name         string `json:"name"`
				FriendlyName string `json:"friendly_name"`
				Type         string `json:"type"`
			} `json:"columns"`
			Rows []map[string]any `json:"rows"`
		} `json:"data"`
	} `json:"query_result"`
}

func (*RedashGetQueryResultResponse) GetTable

func (r *RedashGetQueryResultResponse) GetTable() [][]string

type RedashPostQueryResultRequest

type RedashPostQueryResultRequest struct {
	ApplyAutoLimit bool           `json:"apply_auto_limit"`
	DataSourceID   int            `json:"data_source_id"`
	MaxAge         int            `json:"max_age"`
	Parameters     map[string]any `json:"parameters"`
	Query          string         `json:"query"`
}

type Renderer

type Renderer interface {
	SetShowHeader(bool)
	Render(io.Writer, [][]string) error
}

type TableRenderer

type TableRenderer struct {
	TableType tableType
	// contains filtered or unexported fields
}

func (*TableRenderer) Render

func (r *TableRenderer) Render(w io.Writer, data [][]string) error

func (*TableRenderer) SetShowHeader

func (r *TableRenderer) SetShowHeader(showHeader bool)

type YAMLRenderer

type YAMLRenderer struct {
	// contains filtered or unexported fields
}

func (*YAMLRenderer) Render

func (r *YAMLRenderer) Render(w io.Writer, data [][]string) error

func (*YAMLRenderer) SetShowHeader

func (r *YAMLRenderer) SetShowHeader(showHeader bool)

Directories

Path Synopsis
cli

Jump to

Keyboard shortcuts

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