plugin

package
v4.2.3 Latest Latest
Warning

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

Go to latest
Published: Jul 18, 2023 License: MPL-2.0 Imports: 18 Imported by: 85

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNotImplemented = fmt.Errorf("not implemented")

Functions

func MatchesTable

func MatchesTable(name string, includeTablesPattern []string, skipTablesPattern []string) bool

func RecordDiff

func RecordDiff(l, r arrow.Record) string

func TestWriterSuiteRunner

func TestWriterSuiteRunner(t *testing.T, p *Plugin, tests WriterTestSuiteTests, opts ...func(o *WriterTestSuite))

func TotalRows

func TotalRows(records []arrow.Record) int64

func ValidateNoEmptyColumns added in v4.1.0

func ValidateNoEmptyColumns(t *testing.T, tables schema.Tables, messages message.SyncMessages)

func WithRandomSeed added in v4.1.0

func WithRandomSeed(seed int64) func(o *WriterTestSuite)

func WithTestDataOptions

func WithTestDataOptions(opts schema.TestSourceOptions) func(o *WriterTestSuite)

func WithTestIgnoreNullsInLists

func WithTestIgnoreNullsInLists() func(o *WriterTestSuite)

func WithTestSourceAllowNull

func WithTestSourceAllowNull(allowNull func(arrow.DataType) bool) func(o *WriterTestSuite)

Types

type AllowNullFunc

type AllowNullFunc func(arrow.DataType) bool

type BackendOptions

type BackendOptions struct {
	TableName  string
	Connection string
}

type Client

type Client interface {
	SourceClient
	DestinationClient
}

type DestinationClient

type DestinationClient interface {
	Close(ctx context.Context) error
	Read(ctx context.Context, table *schema.Table, res chan<- arrow.Record) error
	Write(ctx context.Context, res <-chan message.WriteMessage) error
}

type MigrateMode

type MigrateMode int
const (
	MigrateModeSafe MigrateMode = iota
	MigrateModeForce
)

func (MigrateMode) String

func (m MigrateMode) String() string

type NewClientFunc

type NewClientFunc func(context.Context, zerolog.Logger, []byte, NewClientOptions) (Client, error)

type NewClientOptions

type NewClientOptions struct {
	NoConnection bool
}

type NewPluginFunc

type NewPluginFunc func() *Plugin

type NewSourceClientFunc

type NewSourceClientFunc func(context.Context, zerolog.Logger, any) (SourceClient, error)

type Option

type Option func(*Plugin)

type Plugin

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

Plugin is the base structure required to pass to sdk.serve We take a declarative approach to API here similar to Cobra

func NewPlugin

func NewPlugin(name string, version string, newClient NewClientFunc, options ...Option) *Plugin

NewPlugin returns a new CloudQuery Plugin with the given name, version and implementation. Depending on the options, it can be a write-only plugin, read-only plugin, or both.

func NewSourcePlugin

func NewSourcePlugin(name string, version string, newClient NewSourceClientFunc, options ...Option) *Plugin

NewSourcePlugin returns a new CloudQuery Plugin with the given name, version and implementation. Source plugins only support read operations. For Read & Write plugin use NewPlugin.

func (*Plugin) Close

func (p *Plugin) Close(ctx context.Context) error

func (*Plugin) Init

func (p *Plugin) Init(ctx context.Context, spec []byte, options NewClientOptions) error

Init initializes the plugin with the given spec.

func (*Plugin) Name

func (p *Plugin) Name() string

Name return the name of this plugin

func (*Plugin) Read

func (p *Plugin) Read(ctx context.Context, table *schema.Table, res chan<- arrow.Record) error

Read is read data from the requested table to the given channel, returned in the same format as the table

func (*Plugin) SetLogger

func (p *Plugin) SetLogger(logger zerolog.Logger)

func (*Plugin) Sync

func (p *Plugin) Sync(ctx context.Context, options SyncOptions, res chan<- message.SyncMessage) error

Sync is syncing data from the requested tables in spec to the given channel

func (*Plugin) SyncAll

func (p *Plugin) SyncAll(ctx context.Context, options SyncOptions) (message.SyncMessages, error)

func (*Plugin) Tables

func (p *Plugin) Tables(ctx context.Context, options TableOptions) (schema.Tables, error)

func (*Plugin) Version

func (p *Plugin) Version() string

Version returns the version of this plugin

func (*Plugin) Write

func (p *Plugin) Write(ctx context.Context, res <-chan message.WriteMessage) error

func (*Plugin) WriteAll

func (p *Plugin) WriteAll(ctx context.Context, resources []message.WriteMessage) error

WriteAll is currently used mostly for testing, so it's not a public api

type SafeMigrations

type SafeMigrations struct {
	AddColumn           bool
	AddColumnNotNull    bool
	RemoveColumn        bool
	RemoveColumnNotNull bool
	ChangeColumn        bool
}

SafeMigrations defines which migrations are supported by the plugin in safe migrate mode

type SourceClient

type SourceClient interface {
	Close(ctx context.Context) error
	Tables(ctx context.Context, options TableOptions) (schema.Tables, error)
	Sync(ctx context.Context, options SyncOptions, res chan<- message.SyncMessage) error
}

type SyncOptions

type SyncOptions struct {
	Tables              []string
	SkipTables          []string
	SkipDependentTables bool
	DeterministicCQID   bool
	BackendOptions      *BackendOptions
}

type TableOptions

type TableOptions struct {
	Tables              []string
	SkipTables          []string
	SkipDependentTables bool
}

type UnimplementedDestination

type UnimplementedDestination struct{}

func (UnimplementedDestination) Read

func (UnimplementedDestination) Write

type UnimplementedSource

type UnimplementedSource struct{}

func (UnimplementedSource) Sync

func (UnimplementedSource) Tables

type WriterTestSuite

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

type WriterTestSuiteTests

type WriterTestSuiteTests struct {
	// SkipUpsert skips testing with message.Insert and Upsert=true.
	// Usually when a destination is not supporting primary keys
	SkipUpsert bool

	// SkipDeleteStale skips testing message.Delete events.
	SkipDeleteStale bool

	// SkipAppend skips testing message.Insert and Upsert=false.
	SkipInsert bool

	// SkipMigrate skips testing migration
	SkipMigrate bool

	// SafeMigrations defines which tests should work with force migration
	// and which should pass with safe migration
	SafeMigrations SafeMigrations
}

Jump to

Keyboard shortcuts

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