hasura

package
v0.0.0-...-c439057 Latest Latest
Warning

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

Go to latest
Published: Dec 26, 2022 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Create

func Create(ctx context.Context, args GenerateArgs) error

Create - creates hasura models

Types

type API

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

API -

func New

func New(baseURL, secret string) *API

New -

func (*API) AddSource

func (api *API) AddSource(ctx context.Context, hasura *config.Hasura, cfg config.Database) error

AddSource -

func (*API) CreateRestEndpoint

func (api *API) CreateRestEndpoint(ctx context.Context, name, url, queryName, collectionName string) error

CreateRestEndpoint -

func (*API) CreateSelectPermissions

func (api *API) CreateSelectPermissions(ctx context.Context, table, source string, role string, perm Permission) error

CreateSelectPermissions - A select permission is used to restrict access to only the specified columns and rows.

func (*API) CustomConfiguration

func (api *API) CustomConfiguration(ctx context.Context, conf interface{}) error

CustomConfiguration

func (*API) DropSelectPermissions

func (api *API) DropSelectPermissions(ctx context.Context, table, source string, role string) error

DropSelectPermissions -

func (*API) ExportMetadata

func (api *API) ExportMetadata(ctx context.Context) (Metadata, error)

ExportMetadata -

func (*API) Health

func (api *API) Health(ctx context.Context) error

Health

func (*API) ReplaceMetadata

func (api *API) ReplaceMetadata(ctx context.Context, data *Metadata) error

ReplaceMetadata -

func (*API) TrackTable

func (api *API) TrackTable(ctx context.Context, name string, source string) error

TrackTable -

type APIError

type APIError struct {
	Path string `json:"path"`
	Text string `json:"error"`
	Code string `json:"code"`
}

APIError -

func (APIError) AlreadyExists

func (e APIError) AlreadyExists() bool

AlreadyExists -

func (APIError) Error

func (e APIError) Error() string

Error -

type Columns

type Columns []string

Columns -

func (Columns) MarshalJSON

func (columns Columns) MarshalJSON() ([]byte, error)

MarshalJSON -

func (*Columns) UnmarshalJSON

func (columns *Columns) UnmarshalJSON(data []byte) error

UnmarshalJSON -

type Configuration

type Configuration struct {
	ConnectionInfo ConnectionInfo `json:"connection_info"`
}

Configuration -

type ConnectionInfo

type ConnectionInfo struct {
	UsePreparedStatements bool        `json:"use_prepared_statements"`
	IsolationLevel        string      `json:"isolation_level"`
	DatabaseUrl           DatabaseUrl `json:"database_url"`
}

ConnectionInfo -

type DatabaseUrl

type DatabaseUrl string

DatabaseUrl -

func (*DatabaseUrl) UnmarshalJSON

func (d *DatabaseUrl) UnmarshalJSON(data []byte) error

UnmarshalJSON -

type DatabaseUrlFromEnv

type DatabaseUrlFromEnv struct {
	FromEnv string `json:"from_env"`
}

DatabaseUrlFromEnv -

type Definition

type Definition struct {
	Queries []Query `json:"queries"`
}

Definition -

type GenerateArgs

type GenerateArgs struct {
	Config               *config.Hasura  `validate:"required"`
	DatabaseConfig       config.Database `validate:"required"`
	Views                []string        `validate:"omitempty"`
	CustomConfigurations []Request       `validate:"omitempty"`
	Models               []any           `validate:"omitempty"`
}

GenerateArgs -

type Metadata

type Metadata struct {
	Version          int               `json:"version"`
	Sources          []Source          `json:"sources"`
	QueryCollections []QueryCollection `json:"query_collections,omitempty"`
	RestEndpoints    []interface{}     `json:"rest_endpoints,omitempty"`
}

Metadata -

func Generate

func Generate(hasura config.Hasura, cfg config.Database, models ...interface{}) (*Metadata, error)

Generate - creates hasura table structure in JSON from `models`. `models` should be pointer to your table models. `cfg` is DB config from YAML.

type Permission

type Permission struct {
	Columns   Columns     `json:"columns"`
	Limit     uint64      `json:"limit"`
	AllowAggs bool        `json:"allow_aggregations"`
	Filter    interface{} `json:"filter,omitempty"`
}

Permission -

type Query

type Query struct {
	Name           string `json:"name"`
	Query          string `json:"query,omitempty"`
	CollectionName string `json:"collection_name,omitempty"`
}

Query -

type QueryCollection

type QueryCollection struct {
	Definition Definition `json:"definition"`
	Name       string     `json:"name"`
}

QueryCollection -

type Request

type Request struct {
	Type string      `json:"type"`
	Args interface{} `json:"args"`
}

func ReadCustomConfigs

func ReadCustomConfigs(ctx context.Context, database config.Database, hasuraConfigDir string) ([]Request, error)

ReadCustomConfigs -

type SelectPermission

type SelectPermission struct {
	Role       string     `json:"role"`
	Permission Permission `json:"permission"`
}

SelectPermission -

type Source

type Source struct {
	Name          string        `json:"name"`
	Kind          string        `json:"kind"`
	Tables        []Table       `json:"tables"`
	Configuration Configuration `json:"configuration"`
}

Source -

type Table

type Table struct {
	ObjectRelationships []interface{}      `json:"object_relationships"`
	ArrayRelationships  []interface{}      `json:"array_relationships"`
	SelectPermissions   []SelectPermission `json:"select_permissions"`
	Configuration       TableConfiguration `json:"configuration"`
	Schema              TableSchema        `json:"table"`
}

Table -

type TableConfiguration

type TableConfiguration struct {
	Comment           *string           `json:"comment"`
	CustomRootFields  map[string]string `json:"custom_root_fields"`
	CustomColumnNames map[string]string `json:"custom_column_names"`
}

TableConfiguration -

type TableSchema

type TableSchema struct {
	Schema string `json:"schema"`
	Name   string `json:"name"`
}

TableSchema -

Jump to

Keyboard shortcuts

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