Documentation
¶
Index ¶
- Variables
- type Authorizer
- type Capability
- type Column
- type ColumnDiscoveryPage
- type ColumnDiscoveryRequest
- type Constraint
- type ConstraintReference
- type DataSource
- type DataType
- type DatabaseError
- type DatabaseFailure
- type Dependencies
- type ErrorCategory
- type Failure
- type Generated
- type Identity
- type ListDataSourcesRequest
- type ListDataSourcesResult
- type ListRelationalColumnsRequest
- type ListRelationalColumnsResult
- type ListRelationalSchemasRequest
- type ListRelationalSchemasResult
- type ListRelationalTablesRequest
- type ListRelationalTablesResult
- type RelationKind
- type RelationalDiscoverer
- type RelationalQueryColumn
- type RelationalQueryExecutionRequest
- type RelationalQueryExecutor
- type RelationalQueryRequest
- type RelationalQueryResult
- type Schema
- type SchemaDiscoveryPage
- type SchemaDiscoveryRequest
- type Service
- func (s *Service) ListDataSources(ctx context.Context, request ListDataSourcesRequest) (ListDataSourcesResult, error)
- func (s *Service) ListRelationalColumns(ctx context.Context, request ListRelationalColumnsRequest) (ListRelationalColumnsResult, error)
- func (s *Service) ListRelationalSchemas(ctx context.Context, request ListRelationalSchemasRequest) (ListRelationalSchemasResult, error)
- func (s *Service) ListRelationalTables(ctx context.Context, request ListRelationalTablesRequest) (ListRelationalTablesResult, error)
- func (s *Service) QueryRelationalDatabase(ctx context.Context, request RelationalQueryRequest) (RelationalQueryResult, error)
- type SourceRegistry
- type Table
- type TableDiscoveryPage
- type TableDiscoveryRequest
- type TypeAffinity
- type TypeCategory
- type TypeReference
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrInvalidLimit = errors.New("execution: invalid resource limit") ErrInvalidRequest = errors.New("execution: invalid request") ErrInvalidCursor = errors.New("execution: invalid cursor") ErrSourceNotFound = errors.New("execution: source not found") ErrUnsupportedSourceCapability = errors.New("execution: unsupported source capability") ErrSchemaNotFound = errors.New("execution: schema not found") ErrRelationNotFound = errors.New("execution: relation not found") ErrUnsupportedRelationKind = errors.New("execution: unsupported relation kind") ErrDataPorchAccessDenied = errors.New("execution: dataporch access denied") ErrDatabasePermissionDenied = errors.New("execution: database permission denied") ErrQueryTimeout = errors.New("execution: query timeout") ErrCancelled = errors.New("execution: cancelled") ErrInternal = errors.New("execution: internal failure") )
View Source
var ( ErrInvalidQuery = errors.New("execution: invalid query") ErrReadOnlyViolation = errors.New("execution: read only violation") ErrQueryCancelled = errors.New("execution: query cancelled") ErrResultTooLarge = errors.New("execution: result too large") ErrDatabaseAuthenticationFailed = errors.New("execution: database authentication failed") ErrDatabaseConflict = errors.New("execution: database conflict") ErrDatabaseResourceExhausted = errors.New("execution: database resource exhausted") ErrDatabaseError = errors.New("execution: database error") )
View Source
var ErrSourceKindMismatch = errors.New("execution: source kind mismatch")
Functions ¶
This section is empty.
Types ¶
type Capability ¶
type Capability string
const CapabilityRelationalDatabase Capability = "relational_database"
type Column ¶
type Column struct {
Name string `json:"name"`
OrdinalPosition int `json:"ordinal_position"`
FormattedType string `json:"formatted_type"`
Type DataType `json:"type"`
Nullable bool `json:"nullable"`
DefaultExpression *string `json:"default_expression"`
Identity *Identity `json:"identity"`
Generated *Generated `json:"generated"`
Description *string `json:"description,omitempty"`
}
type ColumnDiscoveryPage ¶
type ColumnDiscoveryPage struct {
Columns []Column
RelationKind RelationKind
Constraints []Constraint
HasMore bool
}
type ColumnDiscoveryRequest ¶
type Constraint ¶
type Constraint struct {
Name string `json:"name,omitempty"`
Kind string `json:"kind"`
Columns []string `json:"columns"`
Deferrable bool `json:"deferrable"`
InitiallyDeferred bool `json:"initially_deferred"`
Referenced *ConstraintReference `json:"referenced,omitempty"`
MatchType string `json:"match_type,omitempty"`
UpdateAction string `json:"update_action,omitempty"`
DeleteAction string `json:"delete_action,omitempty"`
NullsNotDistinct *bool `json:"nulls_not_distinct,omitempty"`
CheckExpression *string `json:"check_expression,omitempty"`
Validated bool `json:"validated"`
}
type ConstraintReference ¶
type DataSource ¶
type DataSource struct {
ID connection.ID `json:"id"`
Kind connection.Kind `json:"kind"`
Capabilities []Capability `json:"capabilities"`
}
type DataType ¶
type DataType struct {
Schema string `json:"schema"`
Name string `json:"name"`
Category TypeCategory `json:"category"`
Length *int32 `json:"length"`
Precision *int32 `json:"precision"`
Scale *int32 `json:"scale"`
TemporalPrecision *int32 `json:"temporal_precision"`
IsArray bool `json:"is_array"`
ElementType *TypeReference `json:"element_type"`
DomainBaseType *TypeReference `json:"domain"`
Affinity TypeAffinity `json:"affinity,omitempty"`
}
type DatabaseError ¶
type DatabaseError struct {
Kind connection.Kind `json:"kind"`
Code string `json:"code,omitempty"`
ExtendedCode string `json:"extended_code,omitempty"`
Severity string `json:"severity,omitempty"`
SeverityUnlocalized string `json:"severity_unlocalized,omitempty"`
Message string `json:"message,omitempty"`
Truncated bool `json:"truncated,omitempty"`
Detail string `json:"detail,omitempty"`
Hint string `json:"hint,omitempty"`
Position int32 `json:"position,omitempty"`
InternalPosition int32 `json:"internal_position,omitempty"`
InternalQuery string `json:"internal_query,omitempty"`
Where string `json:"where,omitempty"`
SchemaName string `json:"schema_name,omitempty"`
TableName string `json:"table_name,omitempty"`
ColumnName string `json:"column_name,omitempty"`
DataTypeName string `json:"data_type_name,omitempty"`
ConstraintName string `json:"constraint_name,omitempty"`
File string `json:"file,omitempty"`
Line int32 `json:"line,omitempty"`
Routine string `json:"routine,omitempty"`
}
func (*DatabaseError) Error ¶
func (e *DatabaseError) Error() string
type DatabaseFailure ¶
type DatabaseFailure struct {
// contains filtered or unexported fields
}
func NewDatabaseFailure ¶
func NewDatabaseFailure( category ErrorCategory, retryable bool, databaseError *DatabaseError, ) *DatabaseFailure
func (*DatabaseFailure) Error ¶
func (f *DatabaseFailure) Error() string
func (*DatabaseFailure) Unwrap ¶
func (f *DatabaseFailure) Unwrap() error
type Dependencies ¶
type Dependencies struct {
Sources SourceRegistry
Authorizer Authorizer
MaxLimit int
RelationalDiscoverers []RelationalDiscoverer
RelationalQueryExecutors []RelationalQueryExecutor
}
type ErrorCategory ¶
type ErrorCategory string
const ( ErrorCategoryInvalidRequest ErrorCategory = "invalid_request" ErrorCategoryInvalidCursor ErrorCategory = "invalid_cursor" ErrorCategorySourceNotFound ErrorCategory = "source_not_found" ErrorCategoryUnsupportedSourceCapability ErrorCategory = "unsupported_source_capability" ErrorCategorySchemaNotFound ErrorCategory = "schema_not_found" ErrorCategoryRelationNotFound ErrorCategory = "relation_not_found" ErrorCategoryUnsupportedRelationKind ErrorCategory = "unsupported_relation_kind" ErrorCategoryDataPorchAccessDenied ErrorCategory = "dataporch_access_denied" ErrorCategoryDatabasePermissionDenied ErrorCategory = "database_permission_denied" ErrorCategoryQueryTimeout ErrorCategory = "query_timeout" ErrorCategoryCancelled ErrorCategory = "cancelled" ErrorCategoryInternal ErrorCategory = "internal" )
const ( ErrorCategorySourceKindMismatch ErrorCategory = "source_kind_mismatch" ErrorCategoryInvalidQuery ErrorCategory = "invalid_query" ErrorCategoryReadOnlyViolation ErrorCategory = "read_only_violation" ErrorCategoryQueryCancelled ErrorCategory = "query_cancelled" ErrorCategoryResultTooLarge ErrorCategory = "result_too_large" ErrorCategoryDatabaseAuthenticationFailed ErrorCategory = "database_authentication_failed" ErrorCategoryDatabaseConflict ErrorCategory = "database_conflict" ErrorCategoryDatabaseResourceExhausted ErrorCategory = "database_resource_exhausted" ErrorCategoryDatabaseError ErrorCategory = "database_error" )
type Failure ¶
type Failure struct {
Category ErrorCategory `json:"category"`
Message string `json:"message"`
Retryable bool `json:"retryable"`
DatabaseError *DatabaseError `json:"database_error,omitempty"`
}
type ListDataSourcesRequest ¶
type ListDataSourcesResult ¶
type ListDataSourcesResult struct {
Sources []DataSource `json:"sources"`
NextCursor string `json:"next_cursor,omitempty"`
}
type ListRelationalColumnsRequest ¶
type ListRelationalColumnsRequest struct {
SourceID connection.ID `json:"source_id"`
Schema string `json:"schema"`
Table string `json:"table"`
Search string `json:"search,omitempty"`
IncludeDescriptions bool `json:"include_descriptions,omitempty"`
Limit *int `json:"limit,omitempty"`
Cursor string `json:"cursor,omitempty"`
}
type ListRelationalColumnsResult ¶
type ListRelationalColumnsResult struct {
SourceID connection.ID `json:"source_id"`
Schema string `json:"schema"`
Table string `json:"table"`
RelationKind RelationKind `json:"relation_kind"`
Columns []Column `json:"columns"`
Constraints []Constraint `json:"constraints"`
NextCursor string `json:"next_cursor,omitempty"`
}
type ListRelationalSchemasResult ¶
type ListRelationalSchemasResult struct {
SourceID connection.ID `json:"source_id"`
Schemas []Schema `json:"schemas"`
NextCursor string `json:"next_cursor,omitempty"`
}
type ListRelationalTablesResult ¶
type ListRelationalTablesResult struct {
SourceID connection.ID `json:"source_id"`
Schema string `json:"schema"`
Tables []Table `json:"tables"`
NextCursor string `json:"next_cursor,omitempty"`
}
type RelationKind ¶
type RelationKind string
const ( RelationKindTable RelationKind = "table" RelationKindPartitionedTable RelationKind = "partitioned_table" RelationKindView RelationKind = "view" RelationKindMaterializedView RelationKind = "materialized_view" RelationKindForeignTable RelationKind = "foreign_table" RelationKindVirtualTable RelationKind = "virtual_table" )
type RelationalDiscoverer ¶
type RelationalDiscoverer interface {
Kind() connection.Kind
ListSchemas(context.Context, SchemaDiscoveryRequest) (SchemaDiscoveryPage, error)
ListTables(context.Context, TableDiscoveryRequest) (TableDiscoveryPage, error)
ListColumns(context.Context, ColumnDiscoveryRequest) (ColumnDiscoveryPage, error)
}
type RelationalQueryColumn ¶
type RelationalQueryExecutionRequest ¶
type RelationalQueryExecutionRequest struct {
Source connection.Definition
Query string
}
type RelationalQueryExecutor ¶
type RelationalQueryExecutor interface {
Kind() connection.Kind
Query(context.Context, RelationalQueryExecutionRequest) (RelationalQueryResult, error)
}
type RelationalQueryRequest ¶
type RelationalQueryRequest struct {
Kind connection.Kind
SourceID connection.ID
Query string
}
type RelationalQueryResult ¶
type RelationalQueryResult struct {
Kind connection.Kind `json:"kind"`
SourceID connection.ID `json:"source_id"`
Columns []RelationalQueryColumn `json:"columns"`
Rows [][]*string `json:"rows"`
RowCount int `json:"row_count"`
Truncated bool `json:"truncated"`
}
type SchemaDiscoveryPage ¶
type SchemaDiscoveryRequest ¶
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
func New ¶
func New(dependencies Dependencies) (*Service, error)
func (*Service) ListDataSources ¶
func (s *Service) ListDataSources(ctx context.Context, request ListDataSourcesRequest) (ListDataSourcesResult, error)
func (*Service) ListRelationalColumns ¶
func (s *Service) ListRelationalColumns( ctx context.Context, request ListRelationalColumnsRequest, ) (ListRelationalColumnsResult, error)
func (*Service) ListRelationalSchemas ¶
func (s *Service) ListRelationalSchemas( ctx context.Context, request ListRelationalSchemasRequest, ) (ListRelationalSchemasResult, error)
func (*Service) ListRelationalTables ¶
func (s *Service) ListRelationalTables( ctx context.Context, request ListRelationalTablesRequest, ) (ListRelationalTablesResult, error)
func (*Service) QueryRelationalDatabase ¶
func (s *Service) QueryRelationalDatabase( ctx context.Context, request RelationalQueryRequest, ) (RelationalQueryResult, error)
type SourceRegistry ¶
type SourceRegistry interface {
List() []connection.Definition
Lookup(connection.ID) (connection.Definition, error)
}
type Table ¶
type Table struct {
Name string `json:"name"`
Kind RelationKind `json:"kind"`
Description *string `json:"description,omitempty"`
}
type TableDiscoveryPage ¶
type TableDiscoveryRequest ¶
type TypeAffinity ¶
type TypeAffinity string
const ( TypeAffinityInteger TypeAffinity = "integer" TypeAffinityText TypeAffinity = "text" TypeAffinityBlob TypeAffinity = "blob" TypeAffinityReal TypeAffinity = "real" TypeAffinityNumeric TypeAffinity = "numeric" )
type TypeCategory ¶
type TypeCategory string
const ( TypeCategoryBase TypeCategory = "base" TypeCategoryArray TypeCategory = "array" TypeCategoryDomain TypeCategory = "domain" TypeCategoryEnum TypeCategory = "enum" TypeCategoryComposite TypeCategory = "composite" TypeCategoryRange TypeCategory = "range" TypeCategoryMultirange TypeCategory = "multirange" TypeCategoryPseudo TypeCategory = "pseudo" TypeCategoryOther TypeCategory = "other" TypeCategoryDynamic TypeCategory = "dynamic" )
type TypeReference ¶
Click to show internal directories.
Click to hide internal directories.