Documentation
¶
Index ¶
- Constants
- Variables
- func JSONSchemaValidator(jsonSchema string) (*jsonschema.Schema, error)
- func MatchesTable(name string, includeTablesPattern []string, skipTablesPattern []string) bool
- func RecordsDiff(sc *arrow.Schema, have, want []arrow.Record) string
- func TableDiff(have, want arrow.Table) string
- func TestWriterSuiteRunner(t *testing.T, p *Plugin, tests WriterTestSuiteTests, ...)
- func TotalRows(records []arrow.Record) int64
- func UnimplementedTestConnectionFn(context.Context, zerolog.Logger, []byte) error
- func ValidateNoEmptyColumns(t *testing.T, tables schema.Tables, messages message.SyncMessages)
- func WithHomogeneousTypes() func(o *WriterTestSuite)
- func WithRandomSeed(seed int64) func(o *WriterTestSuite)
- func WithTestDataOptions(opts schema.TestSourceOptions) func(o *WriterTestSuite)
- func WithTestIgnoreNullsInLists() func(o *WriterTestSuite)
- func WithTestSourceAllowNull(allowNull func(arrow.DataType) bool) func(o *WriterTestSuite)
- type AllowNullFunc
- type BackendOptions
- type BuildTarget
- type Client
- type ConnectionTester
- type DestinationClient
- type Kind
- type Meta
- type MigrateMode
- type Migrations
- type NewClientFunc
- type NewClientOptions
- type NewPluginFunc
- type NewSourceClientFunc
- type OnBeforeSender
- type OnSyncFinisher
- type Option
- type PackageType
- type Plugin
- func (p *Plugin) Close(ctx context.Context) error
- func (p *Plugin) Init(ctx context.Context, spec []byte, options NewClientOptions) error
- func (p *Plugin) InvocationID() string
- func (p *Plugin) JSONSchema() string
- func (p *Plugin) Kind() Kind
- func (p *Plugin) Meta() Meta
- func (p *Plugin) Name() string
- func (p *Plugin) OnBeforeSend(ctx context.Context, msg message.SyncMessage) (message.SyncMessage, error)
- func (p *Plugin) OnSyncFinish(ctx context.Context) error
- func (p *Plugin) Read(ctx context.Context, table *schema.Table, res chan<- arrow.Record) error
- func (p *Plugin) SetLogger(logger zerolog.Logger)
- func (p *Plugin) SetSkipTableValidation(v bool)
- func (p *Plugin) SetSkipUsageClient(v bool)
- func (p *Plugin) Sync(ctx context.Context, options SyncOptions, res chan<- message.SyncMessage, ...) error
- func (p *Plugin) SyncAll(ctx context.Context, options SyncOptions) (message.SyncMessages, error)
- func (p *Plugin) Tables(ctx context.Context, options TableOptions) (schema.Tables, error)
- func (p *Plugin) Targets() []BuildTarget
- func (p *Plugin) Team() string
- func (p *Plugin) TestConnection(ctx context.Context, logger zerolog.Logger, spec []byte) error
- func (p *Plugin) Version() string
- func (p *Plugin) Write(ctx context.Context, res <-chan message.WriteMessage) error
- func (p *Plugin) WriteAll(ctx context.Context, resources []message.WriteMessage) error
- type SafeMigrations
- type SourceClient
- type SyncOptions
- type TableOptions
- type TestConnError
- type UnimplementedDestination
- type UnimplementedSource
- type WriteTests
- type WriterTestSuite
- type WriterTestSuiteTests
Constants ¶
const ( GoOSLinux = "linux" GoOSWindows = "windows" GoOSDarwin = "darwin" GoArchAmd64 = "amd64" GoArchArm64 = "arm64" )
Variables ¶
var DefaultBuildTargets = []BuildTarget{ {OS: GoOSLinux, Arch: GoArchAmd64}, {OS: GoOSLinux, Arch: GoArchArm64}, {OS: GoOSWindows, Arch: GoArchAmd64}, {OS: GoOSDarwin, Arch: GoArchAmd64}, {OS: GoOSDarwin, Arch: GoArchArm64}, }
var ErrNotImplemented = fmt.Errorf("not implemented")
Functions ¶
func JSONSchemaValidator ¶
func MatchesTable ¶
func TestWriterSuiteRunner ¶
func TestWriterSuiteRunner(t *testing.T, p *Plugin, tests WriterTestSuiteTests, opts ...func(o *WriterTestSuite))
func ValidateNoEmptyColumns ¶
func WithHomogeneousTypes ¶
func WithHomogeneousTypes() func(o *WriterTestSuite)
func WithRandomSeed ¶
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 BackendOptions ¶
type BuildTarget ¶
type BuildTarget struct { OS string `json:"os"` Arch string `json:"arch"` CGO bool `json:"cgo"` Env []string `json:"env"` }
func (BuildTarget) EnvVariables ¶
func (t BuildTarget) EnvVariables() []string
type Client ¶
type Client interface { SourceClient DestinationClient }
type ConnectionTester ¶
type DestinationClient ¶
type Meta ¶
type Meta struct { Team cqapi.PluginTeam Kind cqapi.PluginKind Name cqapi.PluginName SkipUsageClient bool }
type MigrateMode ¶
type MigrateMode int
const ( MigrateModeSafe MigrateMode = iota MigrateModeForce )
func (MigrateMode) String ¶
func (m MigrateMode) String() string
type Migrations ¶
Migrations defines which migrations should be skipped completely
type NewClientFunc ¶
type NewClientOptions ¶
type NewPluginFunc ¶
type NewPluginFunc func() *Plugin
type NewSourceClientFunc ¶
type OnBeforeSender ¶
type OnBeforeSender interface {
OnBeforeSend(context.Context, message.SyncMessage) (message.SyncMessage, error)
}
type OnSyncFinisher ¶
OnSyncFinisher is an interface that can be implemented by a plugin client to be notified when a sync finishes.
type Option ¶
type Option func(*Plugin)
func WithBuildTargets ¶
func WithBuildTargets(targets []BuildTarget) Option
func WithConnectionTester ¶
func WithConnectionTester(tester ConnectionTester) Option
WithConnectionTester can be specified by a plugin to enable explicit connection testing, given a spec.
func WithCustomConfig ¶
func WithJSONSchema ¶
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) InvocationID ¶
InvocationID returns the invocation ID for the current execution
func (*Plugin) JSONSchema ¶
func (*Plugin) OnBeforeSend ¶
func (p *Plugin) OnBeforeSend(ctx context.Context, msg message.SyncMessage) (message.SyncMessage, error)
OnBeforeSend gets called before every message is sent to the destination. A plugin client that implements the OnBeforeSender interface will have this method called.
func (*Plugin) OnSyncFinish ¶
OnSyncFinish gets called after a sync finishes.
func (*Plugin) Read ¶
Read is read data from the requested table to the given channel, returned in the same format as the table
func (*Plugin) SetSkipTableValidation ¶
SetSkipTableValidation sets whether table validation should be skipped
func (*Plugin) SetSkipUsageClient ¶
SetSkipUsageClient sets whether the usage client should be skipped
func (*Plugin) Sync ¶
func (p *Plugin) Sync(ctx context.Context, options SyncOptions, res chan<- message.SyncMessage, resourceCh chan<- *schema.Resource) 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) Targets ¶
func (p *Plugin) Targets() []BuildTarget
func (*Plugin) TestConnection ¶
type SafeMigrations ¶
type SafeMigrations struct { AddColumn bool AddColumnNotNull bool RemoveColumn bool RemoveColumnNotNull bool ChangeColumn bool RemoveUniqueConstraint bool MovePKToCQOnly bool }
SafeMigrations defines which migrations are supported by the plugin in safe migrate mode
type SourceClient ¶
type SyncOptions ¶
type SyncOptions struct { Tables []string SkipTables []string SkipDependentTables bool DeterministicCQID bool BackendOptions *BackendOptions }
type TableOptions ¶
type TestConnError ¶
func NewTestConnError ¶
func NewTestConnError(code string, err error) *TestConnError
func (*TestConnError) Error ¶
func (e *TestConnError) Error() string
func (*TestConnError) Is ¶
func (e *TestConnError) Is(err error) bool
func (*TestConnError) Unwrap ¶
func (e *TestConnError) Unwrap() error
type UnimplementedDestination ¶
type UnimplementedDestination struct{}
func (UnimplementedDestination) Write ¶
func (UnimplementedDestination) Write(context.Context, <-chan message.WriteMessage) error
type UnimplementedSource ¶
type UnimplementedSource struct{}
func (UnimplementedSource) Sync ¶
func (UnimplementedSource) Sync(context.Context, SyncOptions, chan<- message.SyncMessage, chan<- *schema.Resource) error
func (UnimplementedSource) Tables ¶
func (UnimplementedSource) Tables(context.Context, TableOptions) (schema.Tables, error)
type WriteTests ¶
type WriteTests struct {
DuplicatePK bool
}
WriteTests defines which tests should be skipped in the write test suite
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 // SkipDeleteRecord skips testing message.DeleteRecord events. SkipDeleteRecord 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 SkipSpecificMigrations Migrations SkipSpecificWriteTests WriteTests }