schema

package
v0.0.4 Latest Latest
Warning

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

Go to latest
Published: Apr 4, 2021 License: MPL-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GetPgTypeFromType

func GetPgTypeFromType(v ValueType) string

func ParentIdResolver

func ParentIdResolver(_ context.Context, _ ClientMeta, r *Resource, c Column) error

Types

type ClientMeta

type ClientMeta interface {
	Logger() hclog.Logger
}

type Column

type Column struct {
	// Name of column
	Name string
	// Value Type of column i.e String, UUID etc'
	Type ValueType
	// Description about column, this description is added as a comment in the database
	Description string
	// Default value if the resolver/default getting gets a nil value
	Default interface{}
	// Column Resolver allows to set you own data based on resolving this can be an API call or setting multiple embedded values etc'
	Resolver ColumnResolver
	// Creation options allow to modify how column is defined when table is created
	CreationOptions ColumnCreationOptions
}

Column definition for Table

func (Column) ValidateType

func (c Column) ValidateType(v interface{}) error

type ColumnCreationOptions

type ColumnCreationOptions struct {
	Nullable bool
	Unique   bool
}

ColumnCreationOptions allow to modify how column is defined when table is created

type ColumnResolver

type ColumnResolver func(ctx context.Context, meta ClientMeta, resource *Resource, c Column) error

ColumnResolver is called for each row received in TableResolver's data fetch. execution holds all relevant information regarding execution as well as the Column bieng called. resource holds the current row we are resolving the column for.

func PathResolver

func PathResolver(path string) ColumnResolver

type Database

type Database interface {
	Insert(ctx context.Context, t *Table, instance []*Resource) error
	Exec(ctx context.Context, query string, args ...interface{}) error
	Delete(ctx context.Context, t *Table, args []interface{}) error
	Query(ctx context.Context, query string, args ...interface{}) (pgx.Rows, error)
}

type ExecutionData

type ExecutionData struct {
	// The table this execution is associated with
	Table *Table
	// Database connection to insert data into
	Db Database
	// Logger associated with this execution
	Logger hclog.Logger
	// Column is set if execution is passed to ColumnResolver
	Column *Column
}

ExecutionData marks all the related execution info passed to TableResolver and ColumnResolver giving access to the Runner's meta

func NewExecutionData

func NewExecutionData(db Database, logger hclog.Logger, table *Table) ExecutionData

Create a new execution data

func (ExecutionData) ResolveTable

func (e ExecutionData) ResolveTable(ctx context.Context, meta ClientMeta, parent *Resource) error

func (ExecutionData) WithTable

func (e ExecutionData) WithTable(t *Table) ExecutionData

type IgnoreErrorFunc

type IgnoreErrorFunc func(err error) bool

IgnoreErrorFunc checks if returned error from table resolver should be ignored.

type PgDatabase

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

func NewPgDatabase

func NewPgDatabase(dsn string) (*PgDatabase, error)

func (PgDatabase) Delete

func (p PgDatabase) Delete(ctx context.Context, t *Table, args []interface{}) error

func (PgDatabase) Exec

func (p PgDatabase) Exec(ctx context.Context, query string, args ...interface{}) error

Exec allows executions of postgres queries with given args returning error of execution

func (PgDatabase) Insert

func (p PgDatabase) Insert(ctx context.Context, t *Table, resources []*Resource) error

Insert inserts all resources to given table, table and resources are assumed from same table.

func (PgDatabase) Query

func (p PgDatabase) Query(ctx context.Context, query string, args ...interface{}) (pgx.Rows, error)

Query allows execution of postgres queries with given args returning data result

func (PgDatabase) QueryOne

func (p PgDatabase) QueryOne(ctx context.Context, query string, args ...interface{}) pgx.Row

Query allows execution of postgres queries with given args returning data result

type Resource

type Resource struct {
	// Original resource item that wa from prior resolve
	Item interface{}
	// Set if this is an embedded table
	Parent *Resource
	// contains filtered or unexported fields
}

Resource represents a row in it's associated table, it carries a reference to the original item, and automatically generates an Id based on Table's Columns. Resource data can be accessed by the Get and Set methods

func NewResourceData

func NewResourceData(t *Table, parent *Resource, item interface{}) *Resource

func (Resource) Get

func (r Resource) Get(key string) interface{}

func (Resource) Id

func (r Resource) Id() uuid.UUID

func (Resource) Set

func (r Resource) Set(key string, value interface{})

func (Resource) Values

func (r Resource) Values() ([]interface{}, error)

type RowResolver

type RowResolver func(ctx context.Context, meta ClientMeta, resource *Resource) error

type Table

type Table struct {
	// Name of table
	Name string
	// table description
	Description string
	// Columns are the set of fields that are part of this table
	Columns []Column
	// Relations are a set of related tables defines
	Relations []*Table
	// Resolver is the main entry point to fetching table data and
	Resolver TableResolver
	// Ignore errors checks if returned error from table resolver should be ignored.
	IgnoreError IgnoreErrorFunc
	// Multiplex returns re-purposed meta clients. The sdk will execute the table with each of them
	Multiplex func(meta ClientMeta) []ClientMeta
	// DeleteFilter returns a list of key/value pairs to add when truncating this table's data from the database.
	DeleteFilter func(meta ClientMeta) []interface{}
	// Post resource resolver is called after all columns have been resolved, and before resource is inserted to database.
	PostResourceResolver RowResolver
}

func (Table) Column

func (t Table) Column(name string) *Column

func (Table) ColumnNames

func (t Table) ColumnNames() []string

ColumnNames returns all collected columns name of table (including all inner embedded columns)

type TableResolver

type TableResolver func(ctx context.Context, meta ClientMeta, parent *Resource, res chan interface{}) error

TableResolver is the main entry point when a table fetch is called.

Table resolver has 3 main arguments: - meta(ClientMeta): is the client returned by the plugin.Provider Configure call - parent(Resource): resource is the parent resource in case this table is called via parent table (i.e relation) - res(chan interface{}): is a channel to pass results fetched by the TableResolver

type ValueType

type ValueType int
const (
	TypeInvalid ValueType = iota
	TypeBool
	TypeSmallInt
	TypeInt
	TypeBigInt
	TypeFloat
	TypeUUID
	TypeString
	TypeByteArray
	TypeStringArray
	TypeIntArray
	TypeTimestamp
	TypeJSON
)

func ValueTypeFromString

func ValueTypeFromString(s string) ValueType

func (ValueType) String

func (v ValueType) String() string

Jump to

Keyboard shortcuts

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