pull

package
v1.10.0 Latest Latest
Warning

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

Go to latest
Published: Mar 1, 2022 License: GPL-3.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrMultipleRowInOneToOneRelation = errors.New("multiple rows for one to one relationship")

Functions

func IncFiltersCount added in v1.4.0

func IncFiltersCount()

func IncLinesPerStepCount added in v1.4.0

func IncLinesPerStepCount(step string)

func Reset added in v1.4.0

func Reset()

Types

type Cardinality added in v1.10.0

type Cardinality bool
const (
	Many Cardinality = true
	One  Cardinality = false
)

type Column added in v1.7.0

type Column struct {
	Name   string
	Export string
}

type DataSet added in v1.10.0

type DataSet map[TableName]RowSet

type DataSource

type DataSource interface {
	Open() error
	RowReader(source Table, filter Filter) (RowReader, error)
	Read(source Table, filter Filter) (RowSet, error)
	Close() error
}

DataSource to read in the pull process.

func NewDataSourceInMemory added in v1.10.0

func NewDataSourceInMemory(tables DataSet) DataSource

type DataSourceFactory

type DataSourceFactory interface {
	New(url string, schema string) DataSource
}

DataSourceFactory exposes methods to create new datasources.

type DataSourceInMemory added in v1.10.0

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

func (DataSourceInMemory) Close added in v1.10.0

func (ds DataSourceInMemory) Close() error

func (DataSourceInMemory) Open added in v1.10.0

func (ds DataSourceInMemory) Open() error

func (DataSourceInMemory) Read added in v1.10.0

func (ds DataSourceInMemory) Read(source Table, filter Filter) (RowSet, error)

func (DataSourceInMemory) RowReader added in v1.10.0

func (ds DataSourceInMemory) RowReader(source Table, filter Filter) (RowReader, error)

type ExecutionStats added in v1.4.0

type ExecutionStats interface {
	GetLinesPerStepCount() map[string]int
	GetFiltersCount() int

	ToJSON() []byte
}

func Compute added in v1.4.0

func Compute() ExecutionStats

type ExportedRow added in v1.10.0

type ExportedRow struct {
	jsonline.Row
}

ExportedRow is a row but with keys ordered and values in export format for jsonline.

func (ExportedRow) GetOrNil added in v1.10.0

func (er ExportedRow) GetOrNil(key string) interface{}

type Filter

type Filter struct {
	Limit    uint
	Values   Row
	Where    string
	Distinct bool
}

type Graph added in v1.10.0

type Graph struct {
	Relations  map[TableName]RelationSet
	Components map[TableName]uint
	Cached     map[TableName]bool
}

type NoTraceListener

type NoTraceListener struct{}

NoTraceListener default implementation do nothing.

func (NoTraceListener) TraceStep

func (t NoTraceListener) TraceStep(s Step) TraceListener

TraceStep catch Step event.

type OneEmptyRowReader

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

OneOneEmptyRowReader return one empty row

func NewOneEmptyRowReader

func NewOneEmptyRowReader() *OneEmptyRowReader

func (OneEmptyRowReader) Error

func (r OneEmptyRowReader) Error() error

Error return always nil

func (*OneEmptyRowReader) Next

func (r *OneEmptyRowReader) Next() bool

Next is always false except for the first one

func (OneEmptyRowReader) Value

func (r OneEmptyRowReader) Value() Row

Value is always an empty row

type Plan

type Plan struct {
	Relations  RelationSet
	Components map[TableName]uint // <= could be deduced from relations with tarjan algorithm
}

type Puller added in v1.10.0

type Puller interface {
	Pull(start Table, filter Filter, filterCohort RowReader) error
}

func NewPuller added in v1.10.0

func NewPuller(plan Plan, datasource DataSource, exporter RowExporter, diagnostic TraceListener) Puller

func NewPullerParallel added in v1.10.0

func NewPullerParallel(plan Plan, datasource DataSource, exporter RowExporter, diagnostic TraceListener, nbworkers uint) Puller

type Relation

type Relation struct {
	Name        RelationName
	Cardinality Cardinality
	Local       RelationTip
	Foreign     RelationTip
}

type RelationName added in v1.10.0

type RelationName string

type RelationSet added in v1.10.0

type RelationSet []Relation

type RelationTip added in v1.10.0

type RelationTip struct {
	Table Table
	Keys  []string
}

type Row

type Row map[string]interface{}

type RowExporter

type RowExporter interface {
	Export(ExportedRow) error
}

RowExporter receives pulled rows one by one.

func NewRowExporterWriter added in v1.10.0

func NewRowExporterWriter(out io.Writer) RowExporter

type RowExporterCollector added in v1.10.0

type RowExporterCollector struct {
	Result []ExportedRow
}

func NewRowExporterCollector added in v1.10.0

func NewRowExporterCollector() *RowExporterCollector

func (*RowExporterCollector) Export added in v1.10.0

func (re *RowExporterCollector) Export(row ExportedRow) error

func (*RowExporterCollector) Reset added in v1.10.0

func (re *RowExporterCollector) Reset()

type RowExporterWriter added in v1.10.0

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

func (RowExporterWriter) Export added in v1.10.0

func (re RowExporterWriter) Export(row ExportedRow) error

type RowReader

type RowReader interface {
	Next() bool
	Value() Row
	Error() error
}

RowReader over DataSource.

type RowReaderInMemory added in v1.10.0

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

func (*RowReaderInMemory) Error added in v1.10.0

func (rr *RowReaderInMemory) Error() error

func (*RowReaderInMemory) Next added in v1.10.0

func (rr *RowReaderInMemory) Next() bool

func (*RowReaderInMemory) Value added in v1.10.0

func (rr *RowReaderInMemory) Value() Row

type RowSet added in v1.10.0

type RowSet []Row

type Step

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

func NewStep

func NewStep(puller *puller, out ExportedRow, entry Relation) *Step

func (*Step) Entry

func (s *Step) Entry() Relation

func (*Step) Execute added in v1.10.0

func (s *Step) Execute() error

type Table

type Table struct {
	Name    TableName
	Keys    []string
	Columns []Column
	// contains filtered or unexported fields
}

type TableName added in v1.10.0

type TableName string

type TraceListener

type TraceListener interface {
	TraceStep(Step) TraceListener
}

TraceListener receives diagnostic trace.

Jump to

Keyboard shortcuts

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