plugin

package
v4.5.1 Latest Latest
Warning

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

Go to latest
Published: Aug 18, 2023 License: MPL-2.0 Imports: 19 Imported by: 143

Documentation

Index

Constants

View Source
const (
	GoOslinux   = "linux"
	GoOswindows = "windows"
	GoOsDarwin  = "darwin"

	GoArchAmd64 = "amd64"
	GoArchArm64 = "arm64"
)

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 BuildTarget added in v4.5.0

type BuildTarget struct {
	OS   string `json:"os"`
	Arch string `json:"arch"`
}

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)

func WithDescription added in v4.5.0

func WithDescription(description string) Option

func WithShortDescription added in v4.5.0

func WithShortDescription(shortDescription string) Option

func WithTitle added in v4.5.0

func WithTitle(title string) Option

type PackageType added in v4.5.0

type PackageType string
const (
	PackageTypeNative PackageType = "native"
	PackageTypeDocker PackageType = "docker"
)

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) Categories added in v4.5.0

func (p *Plugin) Categories() []string

func (*Plugin) Close

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

func (*Plugin) Description added in v4.5.0

func (p *Plugin) Description() string

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) ShortDescription added in v4.5.0

func (p *Plugin) ShortDescription() string

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) Targets added in v4.5.0

func (p *Plugin) Targets() []BuildTarget

func (*Plugin) Title added in v4.5.0

func (p *Plugin) Title() string

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