schema

package
v1.45.0 Latest Latest
Warning

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

Go to latest
Published: Apr 12, 2023 License: MPL-2.0, MIT Imports: 21 Imported by: 189

README

CloudQuery Type System

This directory is heavily based on jackc/pgtype and modified per CQ needs and thus fall under the original MIT license and copyright.

Documentation

Overview

Package schema defines types supported by tables in source plugins

nolint:gocritic

Index

Constants

This section is empty.

Variables

View Source
var CqIDColumn = Column{
	Name:        "_cq_id",
	Type:        TypeUUID,
	Description: "Internal CQ ID of the row",
	CreationOptions: ColumnCreationOptions{
		NotNull: true,
		Unique:  true,
	},
}

These columns are managed and populated by the source plugins

View Source
var CqParentIDColumn = Column{
	Name:          "_cq_parent_id",
	Type:          TypeUUID,
	Description:   "Internal CQ ID of the parent row",
	Resolver:      parentCqUUIDResolver(),
	IgnoreInTests: true,
}
View Source
var CqSourceNameColumn = Column{
	Name:        "_cq_source_name",
	Type:        TypeString,
	Description: "Internal CQ row that references the source plugin name data was retrieved",
}
View Source
var CqSyncTimeColumn = Column{
	Name:        "_cq_sync_time",
	Type:        TypeTimestamp,
	Description: "Internal CQ row of when sync was started (this will be the same for all rows in a single fetch)",
}

These columns are managed and populated by the destination plugin.

Functions

func TransformWithTransformer added in v0.13.23

func TransformWithTransformer(transformer CQTypeTransformer, values CQTypes) []any

func ValidateTable

func ValidateTable(t *Table) error

Types

type ArrayDimension added in v0.13.23

type ArrayDimension struct {
	Length     int32
	LowerBound int32
}

type Bool added in v0.13.23

type Bool struct {
	Bool   bool
	Status Status
}

func (*Bool) Equal added in v0.13.23

func (dst *Bool) Equal(src CQType) bool

func (Bool) Get added in v0.13.23

func (dst Bool) Get() any

func (*Bool) GetStatus added in v1.17.0

func (dst *Bool) GetStatus() Status

func (*Bool) Set added in v0.13.23

func (dst *Bool) Set(src any) error

func (*Bool) Size added in v1.22.0

func (*Bool) Size() int

func (*Bool) String added in v0.13.23

func (dst *Bool) String() string

func (*Bool) Type added in v0.13.23

func (*Bool) Type() ValueType

type BoolTransformer added in v0.13.23

type BoolTransformer interface {
	TransformBool(*Bool) any
}

type Bytea added in v0.13.23

type Bytea struct {
	Bytes  []byte
	Status Status
}

func (*Bytea) Equal added in v0.13.23

func (dst *Bytea) Equal(src CQType) bool

func (Bytea) Get added in v0.13.23

func (dst Bytea) Get() any

func (*Bytea) GetStatus added in v1.17.0

func (dst *Bytea) GetStatus() Status

func (*Bytea) Set added in v0.13.23

func (dst *Bytea) Set(src any) error

func (*Bytea) Size added in v1.22.0

func (dst *Bytea) Size() int

func (*Bytea) String added in v0.13.23

func (dst *Bytea) String() string

func (*Bytea) Type added in v0.13.23

func (*Bytea) Type() ValueType

type ByteaTransformer added in v0.13.23

type ByteaTransformer interface {
	TransformBytea(*Bytea) any
}

type CIDR added in v0.13.23

type CIDR Inet

func (*CIDR) Equal added in v0.13.23

func (dst *CIDR) Equal(src CQType) bool

func (CIDR) Get added in v0.13.23

func (dst CIDR) Get() any

func (*CIDR) GetStatus added in v1.17.0

func (dst *CIDR) GetStatus() Status

func (*CIDR) Set added in v0.13.23

func (dst *CIDR) Set(src any) error

func (*CIDR) Size added in v1.22.0

func (dst *CIDR) Size() int

func (*CIDR) String added in v0.13.23

func (dst *CIDR) String() string

func (*CIDR) Type added in v0.13.23

func (*CIDR) Type() ValueType

func (*CIDR) UnmarshalJSON added in v1.5.3

func (dst *CIDR) UnmarshalJSON(b []byte) error

type CIDRArray added in v0.13.23

type CIDRArray struct {
	Elements   []CIDR
	Dimensions []ArrayDimension
	Status     Status
}

func (*CIDRArray) Equal added in v0.13.23

func (dst *CIDRArray) Equal(src CQType) bool

func (CIDRArray) Get added in v0.13.23

func (dst CIDRArray) Get() any

func (*CIDRArray) GetStatus added in v1.17.0

func (dst *CIDRArray) GetStatus() Status

func (*CIDRArray) Set added in v0.13.23

func (dst *CIDRArray) Set(src any) error

func (*CIDRArray) Size added in v1.22.0

func (dst *CIDRArray) Size() int

func (*CIDRArray) String added in v0.13.23

func (dst *CIDRArray) String() string

func (*CIDRArray) Type added in v0.13.23

func (*CIDRArray) Type() ValueType

type CIDRArrayTransformer added in v0.13.23

type CIDRArrayTransformer interface {
	TransformCIDRArray(*CIDRArray) any
}

type CIDRTransformer added in v0.13.23

type CIDRTransformer interface {
	TransformCIDR(*CIDR) any
}

type CQType added in v0.13.23

type CQType interface {
	Set(v any) error
	Get() any
	String() string
	// Used only in testing
	Equal(CQType) bool
	Type() ValueType
	Size() int
	GetStatus() Status
}

func NewCqTypeFromValueType added in v0.13.23

func NewCqTypeFromValueType(typ ValueType) CQType

type CQTypes added in v0.13.23

type CQTypes []CQType

func (CQTypes) Diff added in v1.13.0

func (c CQTypes) Diff(other CQTypes) string

Used in testing only.

func (CQTypes) Equal added in v0.13.23

func (c CQTypes) Equal(other CQTypes) bool

func (CQTypes) Len added in v0.13.23

func (c CQTypes) Len() int

func (CQTypes) MarshalJSON added in v0.13.23

func (c CQTypes) MarshalJSON() ([]byte, error)

func (CQTypes) Size added in v1.22.0

func (c CQTypes) Size() int

Size returns total number of bytes occupied by all values this useful to understand how much data is being transferred, rather than just number of resources.

func (CQTypes) String added in v0.13.23

func (c CQTypes) String() string

func (*CQTypes) UnmarshalJSON added in v0.13.23

func (c *CQTypes) UnmarshalJSON(b []byte) error

type ClientMeta

type ClientMeta interface {
	ID() string
}

type Column

type Column struct {
	// Name of column
	Name string `json:"name,omitempty"`
	// Value Type of column i.e String, UUID etc'
	Type ValueType `json:"type,omitempty"`
	// Description about column, this description is added as a comment in the database
	Description string `json:"-"`
	// Column Resolver allows to set your own data for a column; this can be an API call, setting multiple embedded values, etc
	Resolver ColumnResolver `json:"-"`
	// Creation options allow modifying how column is defined when table is created
	CreationOptions ColumnCreationOptions `json:"creation_options,omitempty"`
	// IgnoreInTests is used to skip verifying the column is non-nil in integration tests.
	// By default, integration tests perform a fetch for all resources in cloudquery's test account, and
	// verify all columns are non-nil.
	// If IgnoreInTests is true, verification is skipped for this column.
	// Used when it is hard to create a reproducible environment with this column being non-nil (e.g. various error columns).
	IgnoreInTests bool `json:"-"`
}

Column definition for Table

func (Column) String added in v1.36.1

func (c Column) String() string

type ColumnCreationOptions

type ColumnCreationOptions struct {
	PrimaryKey bool `json:"primary_key,omitempty"`
	NotNull    bool `json:"not_null,omitempty"`
	// IncrementalKey is a flag that indicates if the column is used as part of an incremental key.
	// It is mainly used for documentation purposes, but may also be used as part of ensuring that
	// migrations are done correctly.
	IncrementalKey bool `json:"incremental_key"`
	Unique         bool `json:"unique,omitempty"`
}

ColumnCreationOptions allow modification of how column is defined when table is created

type ColumnList

type ColumnList []Column

func (ColumnList) Get

func (c ColumnList) Get(name string) *Column

func (ColumnList) Index added in v0.13.16

func (c ColumnList) Index(col string) int

func (ColumnList) Names

func (c ColumnList) Names() []string

func (ColumnList) String added in v1.36.1

func (c ColumnList) String() string

func (*ColumnList) UnmarshalJSON added in v0.13.23

func (c *ColumnList) UnmarshalJSON(data []byte) (err error)

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 called. resource holds the current row we are resolving the column for.

func ParentColumnResolver added in v0.11.0

func ParentColumnResolver(name string) ColumnResolver

ParentColumnResolver resolves a column from the parent's table data, if name isn't set the column will be set to null

func PathResolver

func PathResolver(path string) ColumnResolver

PathResolver resolves a field in the Resource.Item

Examples: PathResolver("Field") PathResolver("InnerStruct.Field") PathResolver("InnerStruct.InnerInnerStruct.Field")

type DefaultTransformer added in v0.13.23

type DefaultTransformer struct {
}

func (*DefaultTransformer) TransformBool added in v0.13.23

func (*DefaultTransformer) TransformBool(v *Bool) any

func (*DefaultTransformer) TransformBytea added in v0.13.23

func (*DefaultTransformer) TransformBytea(v *Bytea) any

func (*DefaultTransformer) TransformCIDR added in v0.13.23

func (*DefaultTransformer) TransformCIDR(v *CIDR) any

func (*DefaultTransformer) TransformCIDRArray added in v0.13.23

func (*DefaultTransformer) TransformCIDRArray(v *CIDRArray) any

func (*DefaultTransformer) TransformFloat8 added in v0.13.23

func (*DefaultTransformer) TransformFloat8(v *Float8) any

func (*DefaultTransformer) TransformInet added in v0.13.23

func (*DefaultTransformer) TransformInet(v *Inet) any

func (*DefaultTransformer) TransformInetArray added in v0.13.23

func (*DefaultTransformer) TransformInetArray(v *InetArray) any

func (*DefaultTransformer) TransformInt8 added in v0.13.23

func (*DefaultTransformer) TransformInt8(v *Int8) any

func (*DefaultTransformer) TransformInt8Array added in v0.13.23

func (*DefaultTransformer) TransformInt8Array(v *Int8Array) any

func (*DefaultTransformer) TransformJSON added in v0.13.23

func (*DefaultTransformer) TransformJSON(v *JSON) any

func (*DefaultTransformer) TransformMacaddr added in v0.13.23

func (*DefaultTransformer) TransformMacaddr(v *Macaddr) any

func (*DefaultTransformer) TransformMacaddrArray added in v0.13.23

func (*DefaultTransformer) TransformMacaddrArray(v *MacaddrArray) any

func (*DefaultTransformer) TransformText added in v0.13.23

func (*DefaultTransformer) TransformText(v *Text) any

func (*DefaultTransformer) TransformTextArray added in v0.13.23

func (*DefaultTransformer) TransformTextArray(v *TextArray) any

func (*DefaultTransformer) TransformTimestamptz added in v0.13.23

func (*DefaultTransformer) TransformTimestamptz(v *Timestamptz) any

func (*DefaultTransformer) TransformUUID added in v0.13.23

func (*DefaultTransformer) TransformUUID(v *UUID) any

func (*DefaultTransformer) TransformUUIDArray added in v0.13.23

func (*DefaultTransformer) TransformUUIDArray(v *UUIDArray) any

type DestinationResource added in v0.13.16

type DestinationResource struct {
	TableName string  `json:"table_name"`
	Data      CQTypes `json:"data"`
}

This struct is what we send over the wire to destination. We dont want to reuse the same struct as otherwise we will have to comment on fields which don't get sent over the wire but still accessible code wise

type Float8 added in v0.13.23

type Float8 struct {
	Float  float64
	Status Status
}

func (*Float8) Equal added in v0.13.23

func (dst *Float8) Equal(src CQType) bool

func (Float8) Get added in v0.13.23

func (dst Float8) Get() any

func (*Float8) GetStatus added in v1.17.0

func (dst *Float8) GetStatus() Status

func (*Float8) Set added in v0.13.23

func (dst *Float8) Set(src any) error

func (*Float8) Size added in v1.22.0

func (dst *Float8) Size() int

func (*Float8) String added in v0.13.23

func (dst *Float8) String() string

func (*Float8) Type added in v0.13.23

func (*Float8) Type() ValueType

type Float8Transformer added in v0.13.23

type Float8Transformer interface {
	TransformFloat8(*Float8) any
}

type Inet added in v0.13.23

type Inet struct {
	IPNet  *net.IPNet
	Status Status
}

Inet represents both inet and cidr PostgreSQL types.

func (*Inet) Equal added in v0.13.23

func (dst *Inet) Equal(src CQType) bool

func (Inet) Get added in v0.13.23

func (dst Inet) Get() any

func (*Inet) GetStatus added in v1.17.0

func (dst *Inet) GetStatus() Status

func (*Inet) Set added in v0.13.23

func (dst *Inet) Set(src any) error

func (*Inet) Size added in v1.22.0

func (dst *Inet) Size() int

func (*Inet) String added in v0.13.23

func (dst *Inet) String() string

func (*Inet) Type added in v0.13.23

func (*Inet) Type() ValueType

func (*Inet) UnmarshalJSON added in v1.5.3

func (dst *Inet) UnmarshalJSON(b []byte) error

workaround this Golang bug: https://github.com/golang/go/issues/35727

type InetArray added in v0.13.23

type InetArray struct {
	Elements   []Inet
	Dimensions []ArrayDimension
	Status     Status
}

func (*InetArray) Equal added in v0.13.23

func (dst *InetArray) Equal(src CQType) bool

func (InetArray) Get added in v0.13.23

func (dst InetArray) Get() any

func (*InetArray) GetStatus added in v1.17.0

func (dst *InetArray) GetStatus() Status

func (*InetArray) Set added in v0.13.23

func (dst *InetArray) Set(src any) error

func (*InetArray) Size added in v1.22.0

func (dst *InetArray) Size() int

func (*InetArray) String added in v0.13.23

func (dst *InetArray) String() string

func (*InetArray) Type added in v0.13.23

func (*InetArray) Type() ValueType

type InetArrayTransformer added in v0.13.23

type InetArrayTransformer interface {
	TransformInetArray(*InetArray) any
}

type InetTransformer added in v0.13.23

type InetTransformer interface {
	TransformInet(*Inet) any
}

type InfinityModifier added in v0.13.23

type InfinityModifier int8
const (
	Infinity         InfinityModifier = 1
	None             InfinityModifier = 0
	NegativeInfinity InfinityModifier = -Infinity
)

type Int8 added in v0.13.23

type Int8 struct {
	Int    int64
	Status Status
}

func (*Int8) Equal added in v0.13.23

func (dst *Int8) Equal(src CQType) bool

func (Int8) Get added in v0.13.23

func (dst Int8) Get() any

func (*Int8) GetStatus added in v1.17.0

func (dst *Int8) GetStatus() Status

func (*Int8) Set added in v0.13.23

func (dst *Int8) Set(src any) error

func (*Int8) Size added in v1.22.0

func (*Int8) Size() int

func (*Int8) String added in v0.13.23

func (dst *Int8) String() string

func (*Int8) Type added in v0.13.23

func (*Int8) Type() ValueType

type Int8Array added in v0.13.23

type Int8Array struct {
	Elements   []Int8
	Dimensions []ArrayDimension
	Status     Status
}

func (*Int8Array) Equal added in v0.13.23

func (dst *Int8Array) Equal(src CQType) bool

func (Int8Array) Get added in v0.13.23

func (dst Int8Array) Get() any

func (*Int8Array) GetStatus added in v1.17.0

func (dst *Int8Array) GetStatus() Status

func (*Int8Array) Set added in v0.13.23

func (dst *Int8Array) Set(src any) error

func (*Int8Array) Size added in v1.22.0

func (dst *Int8Array) Size() int

func (*Int8Array) String added in v0.13.23

func (dst *Int8Array) String() string

func (*Int8Array) Type added in v0.13.23

func (*Int8Array) Type() ValueType

type Int8ArrayTransformer added in v0.13.23

type Int8ArrayTransformer interface {
	TransformInt8Array(*Int8Array) any
}

type Int8Transformer added in v0.13.23

type Int8Transformer interface {
	TransformInt8(*Int8) any
}

type JSON added in v0.13.23

type JSON struct {
	Bytes  []byte
	Status Status
}

func (*JSON) Equal added in v0.13.23

func (dst *JSON) Equal(src CQType) bool

func (JSON) Get added in v0.13.23

func (dst JSON) Get() any

func (*JSON) GetStatus added in v1.17.0

func (dst *JSON) GetStatus() Status

func (*JSON) Set added in v0.13.23

func (dst *JSON) Set(src any) error

func (*JSON) Size added in v1.22.0

func (dst *JSON) Size() int

func (*JSON) String added in v0.13.23

func (dst *JSON) String() string

func (*JSON) Type added in v0.13.23

func (*JSON) Type() ValueType

type JSONTransformer added in v0.13.23

type JSONTransformer interface {
	TransformJSON(*JSON) any
}

type LengthTableValidator

type LengthTableValidator struct{}

func (LengthTableValidator) Validate

func (LengthTableValidator) Validate(t *Table) error

type Macaddr added in v0.13.23

type Macaddr struct {
	Addr   net.HardwareAddr
	Status Status
}

func (*Macaddr) Equal added in v0.13.23

func (dst *Macaddr) Equal(src CQType) bool

func (Macaddr) Get added in v0.13.23

func (dst Macaddr) Get() any

func (*Macaddr) GetStatus added in v1.17.0

func (dst *Macaddr) GetStatus() Status

func (*Macaddr) Set added in v0.13.23

func (dst *Macaddr) Set(src any) error

func (*Macaddr) Size added in v1.22.0

func (dst *Macaddr) Size() int

func (*Macaddr) String added in v0.13.23

func (dst *Macaddr) String() string

func (*Macaddr) Type added in v0.13.23

func (*Macaddr) Type() ValueType

type MacaddrArray added in v0.13.23

type MacaddrArray struct {
	Elements   []Macaddr
	Dimensions []ArrayDimension
	Status     Status
}

func (*MacaddrArray) Equal added in v0.13.23

func (dst *MacaddrArray) Equal(src CQType) bool

func (MacaddrArray) Get added in v0.13.23

func (dst MacaddrArray) Get() any

func (*MacaddrArray) GetStatus added in v1.17.0

func (dst *MacaddrArray) GetStatus() Status

func (*MacaddrArray) Set added in v0.13.23

func (dst *MacaddrArray) Set(src any) error

func (*MacaddrArray) Size added in v1.22.0

func (dst *MacaddrArray) Size() int

func (*MacaddrArray) String added in v0.13.23

func (dst *MacaddrArray) String() string

func (*MacaddrArray) Type added in v0.13.23

func (*MacaddrArray) Type() ValueType

type MacaddrArrayTransformer added in v0.13.23

type MacaddrArrayTransformer interface {
	TransformMacaddrArray(*MacaddrArray) any
}

type MacaddrTransformer added in v0.13.23

type MacaddrTransformer interface {
	TransformMacaddr(*Macaddr) any
}

type Multiplexer added in v0.7.1

type Multiplexer func(meta ClientMeta) []ClientMeta

type Resource

type Resource struct {
	// Original resource item that wa from prior resolve
	Item any
	// Set if this is an embedded table
	Parent *Resource
	// internal fields
	Table *Table
	// 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 any) *Resource

func (*Resource) CalculateCQID added in v1.41.0

func (r *Resource) CalculateCQID(deterministicCQID bool) error

func (*Resource) Columns

func (r *Resource) Columns() []string

func (*Resource) Get

func (r *Resource) Get(columnName string) CQType

func (*Resource) GetItem added in v0.13.15

func (r *Resource) GetItem() any

func (*Resource) GetValues added in v0.13.16

func (r *Resource) GetValues() CQTypes

func (*Resource) Set

func (r *Resource) Set(columnName string, value any) error

Set sets a column with value. This does validation and conversion to one of concrete it returns an error just for backward compatibility and panics in case it fails

func (*Resource) SetItem added in v0.0.11

func (r *Resource) SetItem(item any)

Override original item (this is useful for apis that follow list/details pattern)

func (*Resource) ToDestinationResource added in v0.13.16

func (r *Resource) ToDestinationResource() DestinationResource

func (*Resource) Validate added in v1.17.0

func (r *Resource) Validate() error

Validates that all primary keys have values.

type Resources

type Resources []*Resource

func (Resources) ColumnNames

func (rr Resources) ColumnNames() []string

func (Resources) TableName

func (rr Resources) TableName() string

type RowResolver

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

type Status added in v0.13.16

type Status byte
const (
	Undefined Status = iota
	Null
	Present
)

type SyncSummary added in v0.12.0

type SyncSummary struct {
	Resources uint64
	Errors    uint64
	Panics    uint64
}

This is deprecated

type Table

type Table struct {
	// Name of table
	Name string `json:"name"`
	// Title to be used in documentation (optional: will be generated from name if not set)
	Title string `json:"title"`
	// table description
	Description string `json:"description"`
	// Columns are the set of fields that are part of this table
	Columns ColumnList `json:"columns"`
	// Relations are a set of related tables defines
	Relations Tables `json:"relations"`
	// Transform
	Transform Transform `json:"-"`
	// Resolver is the main entry point to fetching table data and
	Resolver TableResolver `json:"-"`
	// Multiplex returns re-purposed meta clients. The sdk will execute the table with each of them
	Multiplex Multiplexer `json:"-"`
	// PostResourceResolver is called after all columns have been resolved, but before the Resource is sent to be inserted. The ordering of resolvers is:
	//  (Table) Resolver → PreResourceResolver → ColumnResolvers → PostResourceResolver
	PostResourceResolver RowResolver `json:"-"`
	// PreResourceResolver is called before all columns are resolved but after Resource is created. The ordering of resolvers is:
	//  (Table) Resolver → PreResourceResolver → ColumnResolvers → PostResourceResolver
	PreResourceResolver RowResolver `json:"-"`
	// IsIncremental is a flag that indicates if the table is incremental or not. This flag mainly affects how the table is
	// documented.
	IsIncremental bool

	// IgnoreInTests is used to exclude a table from integration tests.
	// By default, integration tests fetch all resources from cloudquery's test account, and verify all tables
	// have at least one row.
	// When IgnoreInTests is true, integration tests won't fetch from this table.
	// Used when it is hard to create a reproducible environment with a row in this table.
	IgnoreInTests bool `json:"ignore_in_tests"`

	// Parent is the parent table in case this table is called via parent table (i.e. relation)
	Parent *Table `json:"-"`

	PkConstraintName string `json:"pk_constraint_name"`
}

func (*Table) Column

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

func (*Table) Copy added in v1.12.1

func (t *Table) Copy(parent *Table) *Table

func (*Table) GetChanges added in v1.38.0

func (t *Table) GetChanges(old *Table) []TableColumnChange

Get Changes returns changes between two tables when t is the new one and old is the old one.

func (*Table) IncrementalKeys added in v1.24.0

func (t *Table) IncrementalKeys() []string

func (*Table) OverwriteOrAddColumn added in v0.13.0

func (t *Table) OverwriteOrAddColumn(column *Column)

If the column with the same name exists, overwrites it. Otherwise, adds the column to the beginning of the table.

func (*Table) PrimaryKeys added in v0.0.4

func (t *Table) PrimaryKeys() []string

func (*Table) TableNames

func (t *Table) TableNames() []string

func (*Table) ValidateColumnNames added in v0.13.11

func (t *Table) ValidateColumnNames() error

func (*Table) ValidateDuplicateColumns added in v0.0.4

func (t *Table) ValidateDuplicateColumns() error

func (*Table) ValidateName added in v0.13.11

func (t *Table) ValidateName() error

type TableColumnChange added in v1.38.0

type TableColumnChange struct {
	Type       TableColumnChangeType
	ColumnName string
	Current    Column
	Previous   Column
}

func (TableColumnChange) String added in v1.38.0

func (t TableColumnChange) String() string

type TableColumnChangeType added in v1.38.0

type TableColumnChangeType int
const (
	TableColumnChangeTypeUnknown TableColumnChangeType = iota
	TableColumnChangeTypeAdd
	TableColumnChangeTypeUpdate
	TableColumnChangeTypeRemove
)

func (TableColumnChangeType) String added in v1.38.0

func (t TableColumnChangeType) String() string

type TableResolver

type TableResolver func(ctx context.Context, meta ClientMeta, parent *Resource, res chan<- any) error

TableResolver is the main entry point when a table is sync 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 any): is a channel to pass results fetched by the TableResolver

type TableValidator

type TableValidator interface {
	Validate(t *Table) error
}

type Tables added in v0.0.4

type Tables []*Table

func (Tables) FilterDfs added in v1.12.1

func (tt Tables) FilterDfs(tables, skipTables []string, skipDependentTables bool) (Tables, error)

func (Tables) FilterDfsFunc added in v1.24.2

func (tt Tables) FilterDfsFunc(include, exclude func(*Table) bool, skipDependentTables bool) Tables

func (Tables) FlattenTables added in v1.8.1

func (tt Tables) FlattenTables() Tables

func (Tables) Get added in v0.13.15

func (tt Tables) Get(name string) *Table

Get returns a table by name. Returns top-level tables and relations.

func (Tables) GetTopLevel added in v1.5.1

func (tt Tables) GetTopLevel(name string) *Table

GetTopLevel returns a table by name. Only returns the table if it is in top-level list.

func (Tables) TableNames added in v0.0.4

func (tt Tables) TableNames() []string

func (Tables) ValidateColumnNames added in v0.13.11

func (tt Tables) ValidateColumnNames() error

func (Tables) ValidateDuplicateColumns added in v0.0.4

func (tt Tables) ValidateDuplicateColumns() error

func (Tables) ValidateDuplicateTables added in v0.0.6

func (tt Tables) ValidateDuplicateTables() error

func (Tables) ValidateTableNames added in v0.13.11

func (tt Tables) ValidateTableNames() error

type Text added in v0.13.23

type Text struct {
	Str    string
	Status Status
}

func (*Text) Equal added in v0.13.23

func (dst *Text) Equal(src CQType) bool

Used only in tests - we allow one of the strings to be missing null byttes (since some destinations like) postgresql strip it.

func (Text) Get added in v0.13.23

func (dst Text) Get() any

func (*Text) GetStatus added in v1.17.0

func (dst *Text) GetStatus() Status

func (*Text) Set added in v0.13.23

func (dst *Text) Set(src any) error

func (*Text) Size added in v1.22.0

func (dst *Text) Size() int

func (*Text) String added in v0.13.23

func (dst *Text) String() string

func (*Text) Type added in v0.13.23

func (*Text) Type() ValueType

type TextArray added in v0.13.23

type TextArray struct {
	Elements   []Text
	Dimensions []ArrayDimension
	Status     Status
}

func (*TextArray) Equal added in v0.13.23

func (dst *TextArray) Equal(src CQType) bool

func (TextArray) Get added in v0.13.23

func (dst TextArray) Get() any

func (*TextArray) GetStatus added in v1.17.0

func (dst *TextArray) GetStatus() Status

func (*TextArray) Set added in v0.13.23

func (dst *TextArray) Set(src any) error

func (*TextArray) Size added in v1.22.0

func (dst *TextArray) Size() int

func (*TextArray) String added in v0.13.23

func (dst *TextArray) String() string

func (*TextArray) Type added in v0.13.23

func (*TextArray) Type() ValueType

type TextArrayTransformer added in v0.13.23

type TextArrayTransformer interface {
	TransformTextArray(*TextArray) any
}

type TextTransformer added in v0.13.23

type TextTransformer interface {
	TransformText(*Text) any
}

type Timestamptz added in v0.13.23

type Timestamptz struct {
	Time             time.Time
	Status           Status
	InfinityModifier InfinityModifier
}

func (*Timestamptz) DecodeText added in v0.13.23

func (dst *Timestamptz) DecodeText(src []byte) error

func (*Timestamptz) Equal added in v0.13.23

func (dst *Timestamptz) Equal(src CQType) bool

func (Timestamptz) Get added in v0.13.23

func (dst Timestamptz) Get() any

func (*Timestamptz) GetStatus added in v1.17.0

func (dst *Timestamptz) GetStatus() Status

func (*Timestamptz) Set added in v0.13.23

func (dst *Timestamptz) Set(src any) error

func (*Timestamptz) Size added in v1.22.0

func (dst *Timestamptz) Size() int

func (*Timestamptz) String added in v0.13.23

func (dst *Timestamptz) String() string

func (*Timestamptz) Type added in v0.13.23

func (*Timestamptz) Type() ValueType

type TimestamptzTransformer added in v0.13.23

type TimestamptzTransformer interface {
	TransformTimestamptz(*Timestamptz) any
}

type Transform added in v1.18.0

type Transform func(table *Table) error

type UUID added in v0.13.23

type UUID struct {
	Bytes  [16]byte
	Status Status
}

func (*UUID) Equal added in v0.13.23

func (dst *UUID) Equal(src CQType) bool

func (UUID) Get added in v0.13.23

func (dst UUID) Get() any

func (*UUID) GetStatus added in v1.17.0

func (dst *UUID) GetStatus() Status

func (*UUID) Set added in v0.13.23

func (dst *UUID) Set(src any) error

func (*UUID) Size added in v1.22.0

func (dst *UUID) Size() int

func (*UUID) String added in v0.13.23

func (dst *UUID) String() string

func (*UUID) Type added in v0.13.23

func (*UUID) Type() ValueType

type UUIDArray added in v0.13.23

type UUIDArray struct {
	Elements   []UUID
	Dimensions []ArrayDimension
	Status     Status
}

func (*UUIDArray) Equal added in v0.13.23

func (dst *UUIDArray) Equal(src CQType) bool

func (UUIDArray) Get added in v0.13.23

func (dst UUIDArray) Get() any

func (*UUIDArray) GetStatus added in v1.17.0

func (dst *UUIDArray) GetStatus() Status

func (*UUIDArray) Set added in v0.13.23

func (dst *UUIDArray) Set(src any) error

func (*UUIDArray) Size added in v1.22.0

func (dst *UUIDArray) Size() int

func (*UUIDArray) String added in v0.13.23

func (dst *UUIDArray) String() string

func (*UUIDArray) Type added in v0.13.23

func (*UUIDArray) Type() ValueType

type UUIDArrayTransformer added in v0.13.23

type UUIDArrayTransformer interface {
	TransformUUIDArray(*UUIDArray) any
}

type UUIDTransformer added in v0.13.23

type UUIDTransformer interface {
	TransformUUID(*UUID) any
}

type ValidationError added in v1.24.1

type ValidationError struct {
	Err   error
	Msg   string
	Type  ValueType
	Value any
}

func (*ValidationError) Error added in v1.24.1

func (e *ValidationError) Error() string

func (*ValidationError) MaskedError added in v1.24.1

func (e *ValidationError) MaskedError() string

this prints the error without the value

func (*ValidationError) Unwrap added in v1.24.1

func (e *ValidationError) Unwrap() error

type ValueType

type ValueType int
const (
	TypeInvalid ValueType = iota
	TypeBool
	TypeInt
	TypeFloat
	TypeUUID
	TypeString
	TypeByteArray
	TypeStringArray
	TypeIntArray
	TypeTimestamp
	TypeJSON
	TypeUUIDArray
	TypeInet
	TypeInetArray
	TypeCIDR
	TypeCIDRArray
	TypeMacAddr
	TypeMacAddrArray
	TypeTimeIntervalDeprecated
	TypeEnd
)

func (ValueType) String

func (r ValueType) String() string

func (*ValueType) UnmarshalJSON added in v0.13.23

func (r *ValueType) UnmarshalJSON(data []byte) (err error)

Jump to

Keyboard shortcuts

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